From b39ecf1638f8218b6f5f3311ea3f9cbd4388232a Mon Sep 17 00:00:00 2001 From: Jimmy Brancaccio Date: Sun, 14 Jan 2024 13:51:43 -0600 Subject: [PATCH] Initial Commit The initial public commit of MVGL website code. --- .editorconfig | 15 + .gitattributes | 5 + .gitignore | 40 + .phpcs.xml | 8 + .styleci.yml | 13 + app/Console/Kernel.php | 41 + app/Core/Adapters/BootstrapBase.php | 47 + app/Core/Adapters/Menu.php | 61 + app/Core/Adapters/Theme.php | 501 + app/Core/Adapters/Util.php | 70 + app/Core/Bootstraps/BootstrapDemo1.php | 200 + app/Core/Bootstraps/BootstrapDemo2.php | 160 + app/Core/Bootstraps/BootstrapDemo3.php | 116 + app/Core/Bootstraps/BootstrapDemo4.php | 127 + app/Core/Bootstraps/BootstrapDemo5.php | 99 + app/Core/Bootstraps/BootstrapDemo6.php | 177 + app/Core/Bootstraps/BootstrapDemo7.php | 128 + app/Core/Bootstraps/BootstrapDemo8.php | 97 + app/Core/Bootstraps/BootstrapDemo9.php | 127 + app/Core/Components.php | 81 + app/Core/Data.php | 622 + app/Core/Menu.php | 521 + app/Core/Theme.php | 1352 + app/Core/Traits/SpatieLogsActivity.php | 20 + app/Core/Util.php | 523 + app/DataTables/Logs/AuditLogsDataTable.php | 120 + app/DataTables/Logs/SystemLogsDataTable.php | 143 + app/Exceptions/Handler.php | 42 + app/Helpers/Game.php | 16 + app/Helpers/GameList.php | 3 + app/Helpers/Platform.php | 4 + app/Helpers/User.php | 15 + .../Account/SettingsController.php | 141 + .../Auth/AuthenticatedSessionController.php | 102 + .../Auth/ConfirmablePasswordController.php | 47 + ...mailVerificationNotificationController.php | 28 + .../EmailVerificationPromptController.php | 24 + .../Auth/NewPasswordController.php | 67 + .../Auth/PasswordResetLinkController.php | 76 + .../Auth/RegisteredUserController.php | 137 + .../Auth/VerifyEmailController.php | 31 + .../Controllers/ConsoleListController.php | 85 + app/Http/Controllers/Controller.php | 15 + .../Controllers/GameCommentController.php | 85 + app/Http/Controllers/GameController.php | 288 + app/Http/Controllers/GameListController.php | 283 + app/Http/Controllers/GameSearchController.php | 110 + app/Http/Controllers/GenreController.php | 85 + .../Controllers/Logs/AuditLogsController.php | 35 + .../Controllers/Logs/SystemLogsController.php | 32 + app/Http/Controllers/PlatformController.php | 100 + .../Controllers/ProfileCommentController.php | 85 + app/Http/Controllers/RoleController.php | 85 + app/Http/Controllers/UserController.php | 98 + .../Controllers/UserGamerTagController.php | 85 + app/Http/Controllers/UserInfoController.php | 85 + .../UserNotificationSettingController.php | 85 + .../Controllers/UserSiteSettingController.php | 27 + app/Http/Controllers/WishlistController.php | 97 + app/Http/Kernel.php | 67 + app/Http/Middleware/Authenticate.php | 21 + app/Http/Middleware/DevMiddleware.php | 32 + app/Http/Middleware/EncryptCookies.php | 17 + .../PreventRequestsDuringMaintenance.php | 17 + .../Middleware/RedirectIfAuthenticated.php | 33 + app/Http/Middleware/TrimStrings.php | 18 + app/Http/Middleware/TrustHosts.php | 20 + app/Http/Middleware/TrustProxies.php | 28 + app/Http/Middleware/VerifyCsrfToken.php | 17 + .../Requests/Account/SettingsEmailRequest.php | 32 + .../Requests/Account/SettingsInfoRequest.php | 38 + .../Account/SettingsPasswordRequest.php | 33 + app/Http/Requests/Auth/LoginRequest.php | 93 + app/Models/ConsoleList.php | 23 + app/Models/Game.php | 52 + app/Models/GameComment.php | 25 + app/Models/GameList.php | 57 + app/Models/Genre.php | 23 + app/Models/Platform.php | 22 + app/Models/ProfileComment.php | 25 + app/Models/Role.php | 11 + app/Models/User.php | 131 + app/Models/UserGamerTag.php | 40 + app/Models/UserInfo.php | 40 + app/Models/UserNotificationSetting.php | 37 + app/Models/UserSiteSetting.php | 34 + app/Models/Wishlist.php | 25 + app/Policies/GameListPolicy.php | 94 + app/Policies/GamePolicy.php | 129 + app/Policies/UserPolicy.php | 93 + app/Policies/UserSiteSettingPolicy.php | 94 + app/Providers/AppServiceProvider.php | 52 + app/Providers/AuthServiceProvider.php | 33 + app/Providers/BroadcastServiceProvider.php | 21 + app/Providers/EventServiceProvider.php | 32 + app/Providers/HelperServiceProvider.php | 30 + app/Providers/RouteServiceProvider.php | 68 + app/Rules/GameReleaseDate.php | 32 + app/Rules/GameReleaseDates.php | 32 + app/Rules/MatchOldPassword.php | 45 + app/View/Components/AuthLayout.php | 18 + app/View/Components/BaseLayout.php | 20 + app/helpers.php | 205 + artisan | 53 + bootstrap/app.php | 55 + bootstrap/cache/.gitignore | 2 + composer.json | 90 + config/activitylog.php | 52 + config/app.php | 234 + config/auth.php | 117 + config/broadcasting.php | 64 + config/cache.php | 106 + config/cors.php | 34 + config/database.php | 147 + config/datatables-buttons.php | 90 + config/datatables-html.php | 33 + config/datatables.php | 122 + config/debugbar.php | 275 + config/demo1/general.php | 127 + config/demo1/menu.php | 5 + config/demo1/pages.php | 34 + config/filesystems.php | 72 + config/global/general.php | 66 + config/global/menu.php | 128 + config/global/pages.php | 119 + config/hashing.php | 52 + config/logging.php | 104 + config/mail.php | 110 + config/paginateroute.php | 20 + config/queue.php | 89 + config/sentry.php | 57 + config/services.php | 44 + config/session.php | 201 + config/settings.php | 73 + config/view.php | 36 + database/.gitignore | 2 + database/factories/UserFactory.php | 34 + .../2014_10_12_000000_create_users_table.php | 50 + ...12_100000_create_password_resets_table.php | 32 + ..._08_19_000000_create_failed_jobs_table.php | 36 + ...20_215729_create_user_gamer_tags_table.php | 42 + ...2_04_20_220228_create_user_infos_table.php | 42 + ...reate_user_notification_settings_table.php | 39 + .../2022_04_22_165321_create_roles_table.php | 34 + .../2022_04_25_160814_create_games_table.php | 53 + ...2_04_25_160900_create_game_lists_table.php | 46 + ...4_25_165235_create_console_lists_table.php | 34 + ...22_04_25_165247_create_platforms_table.php | 33 + ...5_165730_create_profile_comments_table.php | 36 + ...4_25_165743_create_game_comments_table.php | 36 + .../2022_04_25_170219_create_genres_table.php | 34 + ...8_add_list_views_column_to_users_table.php | 32 + ...latform_id_columns_to_game_lists_table.php | 34 + ...05_07_150203_create_activity_log_table.php | 27 + ...add_event_column_to_activity_log_table.php | 22 + ...atch_uuid_column_to_activity_log_table.php | 22 + ...193217_create_user_site_settings_table.php | 35 + ...23_01_04_183036_create_wishlists_table.php | 36 + database/seeders/DatabaseSeeder.php | 22 + database/seeders/PermissionsSeeder.php | 55 + database/seeders/RolesSeeder.php | 33 + database/seeders/UsersSeeder.php | 62 + docker-compose.yml | 74 + package-lock.json | 29114 ++++++++++++++++ package.json | 111 + phpunit.xml | 31 + public/.htaccess | 21 + public/favicon.ico | 0 public/icon_replacement.txt | 24 + public/index.php | 55 + public/mix-manifest.json | 110 + public/robots.txt | 2 + .../vendor/datatables/buttons.server-side.js | 284 + public/web.config | 28 + .../assets/core/js/components/blockui.js | 177 + resources/assets/core/js/components/cookie.js | 62 + resources/assets/core/js/components/dialer.js | 297 + resources/assets/core/js/components/drawer.js | 460 + .../core/js/components/event-handler.js | 93 + .../assets/core/js/components/feedback.js | 164 + .../assets/core/js/components/image-input.js | 216 + resources/assets/core/js/components/menu.js | 1017 + .../core/js/components/password-meter.js | 258 + resources/assets/core/js/components/scroll.js | 347 + .../assets/core/js/components/scrolltop.js | 174 + resources/assets/core/js/components/search.js | 439 + .../assets/core/js/components/stepper.js | 334 + resources/assets/core/js/components/sticky.js | 376 + .../assets/core/js/components/swapper.js | 178 + resources/assets/core/js/components/toggle.js | 226 + resources/assets/core/js/components/util.js | 1570 + .../js/custom/account/api-keys/api-keys.js | 68 + .../core/js/custom/account/orders/classic.js | 108 + .../custom/account/security/license-usage.js | 68 + .../account/security/security-summary.js | 155 + .../account/settings/deactivate-account.js | 111 + .../js/custom/account/settings/overview.js | 21 + .../account/settings/profile-details.js | 150 + .../custom/account/settings/signin-methods.js | 218 + .../core/js/custom/apps/calendar/calendar.js | 894 + .../assets/core/js/custom/apps/chat/chat.js | 72 + .../core/js/custom/apps/inbox/compose.js | 294 + .../core/js/custom/apps/inbox/listing.js | 58 + .../assets/core/js/custom/apps/inbox/reply.js | 323 + .../core/js/custom/apps/invoices/create.js | 111 + .../custom/apps/subscriptions/add/advanced.js | 126 + .../apps/subscriptions/add/customer-select.js | 85 + .../custom/apps/subscriptions/add/products.js | 157 + .../custom/apps/subscriptions/list/export.js | 189 + .../js/custom/apps/subscriptions/list/list.js | 277 + .../apps/support-center/tickets/create.js | 219 + .../permissions/add-permission.js | 166 + .../apps/user-management/permissions/list.js | 117 + .../permissions/update-permission.js | 166 + .../apps/user-management/roles/list/add.js | 185 + .../user-management/roles/list/update-role.js | 183 + .../user-management/roles/view/update-role.js | 183 + .../apps/user-management/roles/view/view.js | 225 + .../apps/user-management/users/list/add.js | 183 + .../users/list/export-users.js | 170 + .../apps/user-management/users/list/table.js | 315 + .../users/view/add-auth-app.js | 81 + .../users/view/add-one-time-password.js | 173 + .../users/view/add-schedule.js | 223 + .../user-management/users/view/add-task.js | 324 + .../users/view/update-details.js | 132 + .../users/view/update-email.js | 166 + .../users/view/update-password.js | 194 + .../user-management/users/view/update-role.js | 132 + .../apps/user-management/users/view/view.js | 234 + .../core/js/custom/pages/pricing/general.js | 57 + .../js/custom/pages/user-profile/followers.js | 49 + .../js/custom/utilities/modals/bidding.js | 264 + .../custom/utilities/modals/create-account.js | 363 + .../custom/utilities/modals/create-api-key.js | 183 + .../custom/utilities/modals/create-project.js | 0 .../modals/two-factor-authentication.js | 266 + .../custom/utilities/modals/upgrade-plan.js | 65 + .../custom/utilities/modals/users-search.js | 77 + .../js/custom/utilities/search/horizontal.js | 40 + resources/assets/core/js/layout/app.js | 659 + resources/assets/core/js/layout/search.js | 135 + .../core/js/vendors/plugins/apexchart.init.js | 7 + .../plugins/bootstrap-markdown.init.js | 10 + .../js/vendors/plugins/datatables.init.js | 212 + .../core/js/vendors/plugins/dropzone.init.js | 42 + .../core/js/vendors/plugins/flatpickr.init.js | 5 + .../core/js/vendors/plugins/prism.init.js | 12 + .../core/js/vendors/plugins/select2.init.js | 9 + .../js/vendors/plugins/sweetalert2.init.js | 17 + .../assets/core/js/widgets/cards/widget-1.js | 171 + .../assets/core/js/widgets/cards/widget-10.js | 76 + .../assets/core/js/widgets/cards/widget-12.js | 160 + .../assets/core/js/widgets/cards/widget-13.js | 160 + .../assets/core/js/widgets/cards/widget-17.js | 76 + .../assets/core/js/widgets/cards/widget-4.js | 76 + .../assets/core/js/widgets/cards/widget-6.js | 165 + .../assets/core/js/widgets/cards/widget-8.js | 160 + .../assets/core/js/widgets/cards/widget-9.js | 160 + .../assets/core/js/widgets/charts/widget-1.js | 162 + .../core/js/widgets/charts/widget-10.js | 181 + .../core/js/widgets/charts/widget-11.js | 185 + .../core/js/widgets/charts/widget-12.js | 182 + .../core/js/widgets/charts/widget-13.js | 333 + .../core/js/widgets/charts/widget-14.js | 208 + .../core/js/widgets/charts/widget-15.js | 248 + .../core/js/widgets/charts/widget-16.js | 252 + .../core/js/widgets/charts/widget-17.js | 102 + .../core/js/widgets/charts/widget-18.js | 167 + .../core/js/widgets/charts/widget-19.js | 395 + .../assets/core/js/widgets/charts/widget-2.js | 167 + .../core/js/widgets/charts/widget-20.js | 176 + .../core/js/widgets/charts/widget-21.js | 259 + .../core/js/widgets/charts/widget-22.js | 88 + .../core/js/widgets/charts/widget-23.js | 260 + .../core/js/widgets/charts/widget-24.js | 4355 +++ .../core/js/widgets/charts/widget-25.js | 587 + .../core/js/widgets/charts/widget-26.js | 176 + .../core/js/widgets/charts/widget-27.js | 154 + .../core/js/widgets/charts/widget-28.js | 172 + .../core/js/widgets/charts/widget-29.js | 172 + .../assets/core/js/widgets/charts/widget-3.js | 175 + .../core/js/widgets/charts/widget-30.js | 102 + .../core/js/widgets/charts/widget-31.js | 304 + .../core/js/widgets/charts/widget-32.js | 169 + .../core/js/widgets/charts/widget-33.js | 209 + .../core/js/widgets/charts/widget-34.js | 209 + .../core/js/widgets/charts/widget-35.js | 209 + .../assets/core/js/widgets/charts/widget-4.js | 175 + .../assets/core/js/widgets/charts/widget-5.js | 112 + .../assets/core/js/widgets/charts/widget-6.js | 154 + .../assets/core/js/widgets/charts/widget-7.js | 162 + .../assets/core/js/widgets/charts/widget-8.js | 192 + .../assets/core/js/widgets/charts/widget-9.js | 174 + .../assets/core/js/widgets/forms/widget-1.js | 74 + .../assets/core/js/widgets/lists/widget-24.js | 45 + .../core/js/widgets/sliders/widget-1.js | 104 + .../core/js/widgets/sliders/widget-3.js | 181 + .../core/js/widgets/tables/widget-14.js | 173 + .../assets/core/js/widgets/tables/widget-3.js | 84 + .../assets/core/js/widgets/tables/widget-4.js | 259 + .../assets/core/js/widgets/tables/widget-5.js | 69 + .../core/js/widgets/timeline/widget-1.js | 599 + .../core/js/widgets/timeline/widget-2.js | 61 + .../core/js/widgets/timeline/widget-4.js | 779 + .../assets/core/media/avatars/default.png | Bin 0 -> 34243 bytes .../media/icons/duotune/abstract/abs001.svg | 3 + .../media/icons/duotune/abstract/abs002.svg | 3 + .../media/icons/duotune/abstract/abs003.svg | 3 + .../media/icons/duotune/abstract/abs004.svg | 3 + .../media/icons/duotune/abstract/abs005.svg | 3 + .../media/icons/duotune/abstract/abs006.svg | 3 + .../media/icons/duotune/abstract/abs007.svg | 3 + .../media/icons/duotune/abstract/abs008.svg | 3 + .../media/icons/duotune/abstract/abs009.svg | 3 + .../media/icons/duotune/abstract/abs010.svg | 3 + .../media/icons/duotune/abstract/abs011.svg | 4 + .../media/icons/duotune/abstract/abs012.svg | 4 + .../media/icons/duotune/abstract/abs013.svg | 4 + .../media/icons/duotune/abstract/abs014.svg | 4 + .../media/icons/duotune/abstract/abs015.svg | 4 + .../media/icons/duotune/abstract/abs016.svg | 4 + .../media/icons/duotune/abstract/abs017.svg | 4 + .../media/icons/duotune/abstract/abs018.svg | 4 + .../media/icons/duotune/abstract/abs019.svg | 4 + .../media/icons/duotune/abstract/abs020.svg | 4 + .../media/icons/duotune/abstract/abs021.svg | 4 + .../media/icons/duotune/abstract/abs022.svg | 4 + .../media/icons/duotune/abstract/abs023.svg | 4 + .../media/icons/duotune/abstract/abs024.svg | 4 + .../media/icons/duotune/abstract/abs025.svg | 4 + .../media/icons/duotune/abstract/abs026.svg | 4 + .../media/icons/duotune/abstract/abs027.svg | 4 + .../media/icons/duotune/abstract/abs028.svg | 4 + .../media/icons/duotune/abstract/abs029.svg | 4 + .../media/icons/duotune/abstract/abs030.svg | 4 + .../media/icons/duotune/abstract/abs031.svg | 4 + .../media/icons/duotune/abstract/abs032.svg | 4 + .../media/icons/duotune/abstract/abs033.svg | 4 + .../media/icons/duotune/abstract/abs034.svg | 4 + .../media/icons/duotune/abstract/abs035.svg | 4 + .../media/icons/duotune/abstract/abs036.svg | 4 + .../media/icons/duotune/abstract/abs037.svg | 4 + .../media/icons/duotune/abstract/abs038.svg | 4 + .../media/icons/duotune/abstract/abs039.svg | 4 + .../media/icons/duotune/abstract/abs040.svg | 4 + .../media/icons/duotune/abstract/abs041.svg | 4 + .../media/icons/duotune/abstract/abs042.svg | 4 + .../media/icons/duotune/abstract/abs043.svg | 4 + .../media/icons/duotune/abstract/abs044.svg | 4 + .../media/icons/duotune/abstract/abs045.svg | 4 + .../media/icons/duotune/abstract/abs046.svg | 4 + .../media/icons/duotune/abstract/abs047.svg | 4 + .../media/icons/duotune/abstract/abs048.svg | 4 + .../media/icons/duotune/abstract/abs049.svg | 4 + .../media/icons/duotune/abstract/abs050.svg | 3 + .../media/icons/duotune/abstract/abs051.svg | 3 + .../media/icons/duotune/abstract/abs052.svg | 3 + .../media/icons/duotune/arrows/arr001.svg | 4 + .../media/icons/duotune/arrows/arr002.svg | 4 + .../media/icons/duotune/arrows/arr003.svg | 4 + .../media/icons/duotune/arrows/arr004.svg | 4 + .../media/icons/duotune/arrows/arr005.svg | 4 + .../media/icons/duotune/arrows/arr006.svg | 4 + .../media/icons/duotune/arrows/arr007.svg | 4 + .../media/icons/duotune/arrows/arr008.svg | 4 + .../media/icons/duotune/arrows/arr009.svg | 4 + .../media/icons/duotune/arrows/arr010.svg | 3 + .../media/icons/duotune/arrows/arr011.svg | 4 + .../media/icons/duotune/arrows/arr012.svg | 4 + .../media/icons/duotune/arrows/arr013.svg | 4 + .../media/icons/duotune/arrows/arr014.svg | 3 + .../media/icons/duotune/arrows/arr015.svg | 4 + .../media/icons/duotune/arrows/arr016.svg | 4 + .../media/icons/duotune/arrows/arr017.svg | 4 + .../media/icons/duotune/arrows/arr018.svg | 3 + .../media/icons/duotune/arrows/arr019.svg | 4 + .../media/icons/duotune/arrows/arr020.svg | 4 + .../media/icons/duotune/arrows/arr021.svg | 4 + .../media/icons/duotune/arrows/arr022.svg | 3 + .../media/icons/duotune/arrows/arr023.svg | 3 + .../media/icons/duotune/arrows/arr024.svg | 4 + .../media/icons/duotune/arrows/arr025.svg | 4 + .../media/icons/duotune/arrows/arr026.svg | 3 + .../media/icons/duotune/arrows/arr027.svg | 3 + .../media/icons/duotune/arrows/arr028.svg | 4 + .../media/icons/duotune/arrows/arr029.svg | 4 + .../media/icons/duotune/arrows/arr030.svg | 4 + .../media/icons/duotune/arrows/arr031.svg | 4 + .../media/icons/duotune/arrows/arr032.svg | 4 + .../media/icons/duotune/arrows/arr033.svg | 4 + .../media/icons/duotune/arrows/arr034.svg | 4 + .../media/icons/duotune/arrows/arr035.svg | 4 + .../media/icons/duotune/arrows/arr036.svg | 5 + .../media/icons/duotune/arrows/arr037.svg | 4 + .../media/icons/duotune/arrows/arr038.svg | 4 + .../media/icons/duotune/arrows/arr039.svg | 4 + .../media/icons/duotune/arrows/arr040.svg | 4 + .../media/icons/duotune/arrows/arr041.svg | 4 + .../media/icons/duotune/arrows/arr042.svg | 4 + .../media/icons/duotune/arrows/arr043.svg | 5 + .../media/icons/duotune/arrows/arr044.svg | 4 + .../media/icons/duotune/arrows/arr045.svg | 4 + .../media/icons/duotune/arrows/arr046.svg | 4 + .../media/icons/duotune/arrows/arr047.svg | 4 + .../media/icons/duotune/arrows/arr048.svg | 4 + .../media/icons/duotune/arrows/arr049.svg | 4 + .../media/icons/duotune/arrows/arr050.svg | 4 + .../media/icons/duotune/arrows/arr051.svg | 4 + .../media/icons/duotune/arrows/arr052.svg | 4 + .../media/icons/duotune/arrows/arr053.svg | 4 + .../media/icons/duotune/arrows/arr054.svg | 4 + .../media/icons/duotune/arrows/arr055.svg | 4 + .../media/icons/duotune/arrows/arr056.svg | 4 + .../media/icons/duotune/arrows/arr057.svg | 4 + .../media/icons/duotune/arrows/arr058.svg | 4 + .../media/icons/duotune/arrows/arr059.svg | 4 + .../media/icons/duotune/arrows/arr060.svg | 5 + .../media/icons/duotune/arrows/arr061.svg | 5 + .../media/icons/duotune/arrows/arr062.svg | 4 + .../media/icons/duotune/arrows/arr063.svg | 4 + .../media/icons/duotune/arrows/arr064.svg | 4 + .../media/icons/duotune/arrows/arr065.svg | 4 + .../media/icons/duotune/arrows/arr066.svg | 4 + .../media/icons/duotune/arrows/arr067.svg | 4 + .../media/icons/duotune/arrows/arr068.svg | 4 + .../media/icons/duotune/arrows/arr069.svg | 5 + .../media/icons/duotune/arrows/arr070.svg | 6 + .../media/icons/duotune/arrows/arr071.svg | 3 + .../media/icons/duotune/arrows/arr072.svg | 3 + .../media/icons/duotune/arrows/arr073.svg | 3 + .../media/icons/duotune/arrows/arr074.svg | 3 + .../media/icons/duotune/arrows/arr075.svg | 4 + .../media/icons/duotune/arrows/arr076.svg | 5 + .../media/icons/duotune/arrows/arr077.svg | 5 + .../media/icons/duotune/arrows/arr078.svg | 5 + .../media/icons/duotune/arrows/arr079.svg | 4 + .../media/icons/duotune/arrows/arr080.svg | 4 + .../media/icons/duotune/arrows/arr081.svg | 4 + .../media/icons/duotune/arrows/arr082.svg | 4 + .../media/icons/duotune/arrows/arr084.svg | 4 + .../media/icons/duotune/arrows/arr085.svg | 3 + .../media/icons/duotune/arrows/arr086.svg | 5 + .../media/icons/duotune/arrows/arr087.svg | 4 + .../media/icons/duotune/arrows/arr088.svg | 4 + .../media/icons/duotune/arrows/arr089.svg | 3 + .../media/icons/duotune/arrows/arr090.svg | 3 + .../media/icons/duotune/arrows/arr091.svg | 5 + .../media/icons/duotune/arrows/arr092.svg | 5 + .../media/icons/duotune/arrows/arr093.svg | 4 + .../media/icons/duotune/arrows/arr094.svg | 4 + .../media/icons/duotune/arrows/arr095.svg | 5 + .../core/media/icons/duotune/art/art001.svg | 3 + .../core/media/icons/duotune/art/art002.svg | 4 + .../core/media/icons/duotune/art/art003.svg | 4 + .../core/media/icons/duotune/art/art004.svg | 5 + .../core/media/icons/duotune/art/art005.svg | 4 + .../core/media/icons/duotune/art/art006.svg | 4 + .../core/media/icons/duotune/art/art007.svg | 4 + .../core/media/icons/duotune/art/art008.svg | 4 + .../core/media/icons/duotune/art/art009.svg | 4 + .../core/media/icons/duotune/art/art010.svg | 4 + .../media/icons/duotune/coding/cod001.svg | 4 + .../media/icons/duotune/coding/cod002.svg | 5 + .../media/icons/duotune/coding/cod003.svg | 4 + .../media/icons/duotune/coding/cod004.svg | 4 + .../media/icons/duotune/coding/cod005.svg | 4 + .../media/icons/duotune/coding/cod006.svg | 4 + .../media/icons/duotune/coding/cod007.svg | 4 + .../media/icons/duotune/coding/cod008.svg | 4 + .../media/icons/duotune/coding/cod009.svg | 4 + .../media/icons/duotune/coding/cod010.svg | 4 + .../icons/duotune/communication/com001.svg | 5 + .../icons/duotune/communication/com002.svg | 4 + .../icons/duotune/communication/com003.svg | 4 + .../icons/duotune/communication/com004.svg | 4 + .../icons/duotune/communication/com005.svg | 4 + .../icons/duotune/communication/com006.svg | 4 + .../icons/duotune/communication/com007.svg | 4 + .../icons/duotune/communication/com008.svg | 4 + .../icons/duotune/communication/com009.svg | 4 + .../icons/duotune/communication/com010.svg | 4 + .../icons/duotune/communication/com011.svg | 4 + .../icons/duotune/communication/com012.svg | 5 + .../icons/duotune/communication/com013.svg | 4 + .../icons/duotune/communication/com014.svg | 6 + .../media/icons/duotune/ecommerce/ecm001.svg | 6 + .../media/icons/duotune/ecommerce/ecm002.svg | 5 + .../media/icons/duotune/ecommerce/ecm003.svg | 4 + .../media/icons/duotune/ecommerce/ecm004.svg | 10 + .../media/icons/duotune/ecommerce/ecm005.svg | 4 + .../media/icons/duotune/ecommerce/ecm006.svg | 4 + .../media/icons/duotune/ecommerce/ecm007.svg | 5 + .../media/icons/duotune/ecommerce/ecm008.svg | 5 + .../media/icons/duotune/ecommerce/ecm009.svg | 10 + .../media/icons/duotune/ecommerce/ecm010.svg | 4 + .../media/icons/duotune/ecommerce/ecm011.svg | 4 + .../icons/duotune/electronics/elc001.svg | 4 + .../icons/duotune/electronics/elc002.svg | 5 + .../icons/duotune/electronics/elc003.svg | 4 + .../icons/duotune/electronics/elc004.svg | 5 + .../icons/duotune/electronics/elc005.svg | 4 + .../icons/duotune/electronics/elc006.svg | 4 + .../icons/duotune/electronics/elc007.svg | 6 + .../icons/duotune/electronics/elc008.svg | 4 + .../icons/duotune/electronics/elc009.svg | 4 + .../icons/duotune/electronics/elc010.svg | 4 + .../core/media/icons/duotune/files/fil001.svg | 4 + .../core/media/icons/duotune/files/fil002.svg | 4 + .../core/media/icons/duotune/files/fil003.svg | 4 + .../core/media/icons/duotune/files/fil004.svg | 4 + .../core/media/icons/duotune/files/fil005.svg | 6 + .../core/media/icons/duotune/files/fil006.svg | 5 + .../core/media/icons/duotune/files/fil007.svg | 6 + .../core/media/icons/duotune/files/fil008.svg | 5 + .../core/media/icons/duotune/files/fil009.svg | 6 + .../core/media/icons/duotune/files/fil010.svg | 6 + .../core/media/icons/duotune/files/fil011.svg | 13 + .../core/media/icons/duotune/files/fil012.svg | 4 + .../core/media/icons/duotune/files/fil013.svg | 5 + .../core/media/icons/duotune/files/fil014.svg | 4 + .../core/media/icons/duotune/files/fil015.svg | 5 + .../core/media/icons/duotune/files/fil016.svg | 5 + .../core/media/icons/duotune/files/fil017.svg | 5 + .../core/media/icons/duotune/files/fil018.svg | 5 + .../core/media/icons/duotune/files/fil019.svg | 6 + .../core/media/icons/duotune/files/fil020.svg | 3 + .../core/media/icons/duotune/files/fil021.svg | 5 + .../core/media/icons/duotune/files/fil022.svg | 4 + .../core/media/icons/duotune/files/fil023.svg | 6 + .../core/media/icons/duotune/files/fil024.svg | 6 + .../core/media/icons/duotune/files/fil025.svg | 5 + .../media/icons/duotune/finance/fin001.svg | 4 + .../media/icons/duotune/finance/fin002.svg | 4 + .../media/icons/duotune/finance/fin003.svg | 4 + .../media/icons/duotune/finance/fin004.svg | 5 + .../media/icons/duotune/finance/fin005.svg | 5 + .../media/icons/duotune/finance/fin006.svg | 4 + .../media/icons/duotune/finance/fin007.svg | 4 + .../media/icons/duotune/finance/fin008.svg | 5 + .../media/icons/duotune/finance/fin009.svg | 4 + .../media/icons/duotune/finance/fin010.svg | 4 + .../media/icons/duotune/general/gen001.svg | 3 + .../media/icons/duotune/general/gen002.svg | 4 + .../media/icons/duotune/general/gen003.svg | 3 + .../media/icons/duotune/general/gen004.svg | 4 + .../media/icons/duotune/general/gen005.svg | 7 + .../media/icons/duotune/general/gen006.svg | 4 + .../media/icons/duotune/general/gen007.svg | 4 + .../media/icons/duotune/general/gen008.svg | 6 + .../media/icons/duotune/general/gen009.svg | 4 + .../media/icons/duotune/general/gen010.svg | 4 + .../media/icons/duotune/general/gen011.svg | 4 + .../media/icons/duotune/general/gen012.svg | 4 + .../media/icons/duotune/general/gen013.svg | 4 + .../media/icons/duotune/general/gen014.svg | 5 + .../media/icons/duotune/general/gen015.svg | 4 + .../media/icons/duotune/general/gen016.svg | 4 + .../media/icons/duotune/general/gen017.svg | 4 + .../media/icons/duotune/general/gen018.svg | 4 + .../media/icons/duotune/general/gen019.svg | 4 + .../media/icons/duotune/general/gen020.svg | 4 + .../media/icons/duotune/general/gen021.svg | 4 + .../media/icons/duotune/general/gen022.svg | 6 + .../media/icons/duotune/general/gen023.svg | 6 + .../media/icons/duotune/general/gen024.svg | 8 + .../media/icons/duotune/general/gen025.svg | 6 + .../media/icons/duotune/general/gen026.svg | 4 + .../media/icons/duotune/general/gen027.svg | 5 + .../media/icons/duotune/general/gen028.svg | 4 + .../media/icons/duotune/general/gen029.svg | 3 + .../media/icons/duotune/general/gen030.svg | 3 + .../media/icons/duotune/general/gen031.svg | 3 + .../media/icons/duotune/general/gen032.svg | 6 + .../media/icons/duotune/general/gen033.svg | 6 + .../media/icons/duotune/general/gen034.svg | 5 + .../media/icons/duotune/general/gen035.svg | 5 + .../media/icons/duotune/general/gen036.svg | 4 + .../media/icons/duotune/general/gen037.svg | 4 + .../media/icons/duotune/general/gen038.svg | 6 + .../media/icons/duotune/general/gen039.svg | 6 + .../media/icons/duotune/general/gen040.svg | 5 + .../media/icons/duotune/general/gen041.svg | 5 + .../media/icons/duotune/general/gen042.svg | 4 + .../media/icons/duotune/general/gen043.svg | 4 + .../media/icons/duotune/general/gen044.svg | 5 + .../media/icons/duotune/general/gen045.svg | 5 + .../media/icons/duotune/general/gen046.svg | 4 + .../media/icons/duotune/general/gen047.svg | 4 + .../media/icons/duotune/general/gen048.svg | 4 + .../media/icons/duotune/general/gen049.svg | 5 + .../media/icons/duotune/general/gen050.svg | 5 + .../media/icons/duotune/general/gen051.svg | 4 + .../media/icons/duotune/general/gen052.svg | 5 + .../media/icons/duotune/general/gen053.svg | 5 + .../media/icons/duotune/general/gen054.svg | 4 + .../media/icons/duotune/general/gen055.svg | 5 + .../media/icons/duotune/general/gen056.svg | 3 + .../media/icons/duotune/general/gen057.svg | 4 + .../media/icons/duotune/general/gen058.svg | 4 + .../media/icons/duotune/general/gen059.svg | 5 + .../media/icons/duotune/graphs/gra001.svg | 4 + .../media/icons/duotune/graphs/gra002.svg | 4 + .../media/icons/duotune/graphs/gra003.svg | 4 + .../media/icons/duotune/graphs/gra004.svg | 4 + .../media/icons/duotune/graphs/gra005.svg | 4 + .../media/icons/duotune/graphs/gra006.svg | 4 + .../media/icons/duotune/graphs/gra007.svg | 4 + .../media/icons/duotune/graphs/gra008.svg | 5 + .../media/icons/duotune/graphs/gra009.svg | 4 + .../media/icons/duotune/graphs/gra010.svg | 5 + .../media/icons/duotune/graphs/gra011.svg | 4 + .../media/icons/duotune/graphs/gra012.svg | 4 + .../media/icons/duotune/layouts/lay001.svg | 4 + .../media/icons/duotune/layouts/lay002.svg | 4 + .../media/icons/duotune/layouts/lay003.svg | 4 + .../media/icons/duotune/layouts/lay004.svg | 4 + .../media/icons/duotune/layouts/lay005.svg | 4 + .../media/icons/duotune/layouts/lay006.svg | 4 + .../media/icons/duotune/layouts/lay007.svg | 4 + .../media/icons/duotune/layouts/lay008.svg | 4 + .../media/icons/duotune/layouts/lay009.svg | 4 + .../media/icons/duotune/layouts/lay010.svg | 4 + .../core/media/icons/duotune/maps/map001.svg | 4 + .../core/media/icons/duotune/maps/map002.svg | 7 + .../core/media/icons/duotune/maps/map003.svg | 7 + .../core/media/icons/duotune/maps/map004.svg | 4 + .../core/media/icons/duotune/maps/map005.svg | 6 + .../core/media/icons/duotune/maps/map006.svg | 4 + .../core/media/icons/duotune/maps/map007.svg | 4 + .../core/media/icons/duotune/maps/map008.svg | 4 + .../core/media/icons/duotune/maps/map009.svg | 5 + .../core/media/icons/duotune/maps/map010.svg | 4 + .../media/icons/duotune/medicine/med001.svg | 4 + .../media/icons/duotune/medicine/med002.svg | 4 + .../media/icons/duotune/medicine/med003.svg | 3 + .../media/icons/duotune/medicine/med004.svg | 4 + .../media/icons/duotune/medicine/med005.svg | 4 + .../media/icons/duotune/medicine/med006.svg | 4 + .../media/icons/duotune/medicine/med007.svg | 4 + .../media/icons/duotune/medicine/med008.svg | 5 + .../media/icons/duotune/medicine/med009.svg | 4 + .../media/icons/duotune/medicine/med010.svg | 4 + .../media/icons/duotune/social/soc001.svg | 4 + .../media/icons/duotune/social/soc002.svg | 7 + .../media/icons/duotune/social/soc003.svg | 3 + .../media/icons/duotune/social/soc004.svg | 4 + .../media/icons/duotune/social/soc005.svg | 4 + .../media/icons/duotune/social/soc006.svg | 4 + .../media/icons/duotune/social/soc007.svg | 3 + .../media/icons/duotune/social/soc008.svg | 4 + .../media/icons/duotune/social/soc009.svg | 4 + .../media/icons/duotune/social/soc010.svg | 4 + .../media/icons/duotune/technology/teh001.svg | 4 + .../media/icons/duotune/technology/teh002.svg | 4 + .../media/icons/duotune/technology/teh003.svg | 4 + .../media/icons/duotune/technology/teh004.svg | 4 + .../media/icons/duotune/technology/teh005.svg | 4 + .../media/icons/duotune/technology/teh006.svg | 4 + .../media/icons/duotune/technology/teh007.svg | 3 + .../media/icons/duotune/technology/teh008.svg | 4 + .../media/icons/duotune/technology/teh009.svg | 4 + .../media/icons/duotune/technology/teh010.svg | 6 + .../core/media/icons/duotune/text/txt001.svg | 4 + .../core/media/icons/duotune/text/txt002.svg | 4 + .../core/media/icons/duotune/text/txt003.svg | 4 + .../core/media/icons/duotune/text/txt004.svg | 4 + .../core/media/icons/duotune/text/txt005.svg | 3 + .../core/media/icons/duotune/text/txt006.svg | 3 + .../core/media/icons/duotune/text/txt007.svg | 3 + .../core/media/icons/duotune/text/txt008.svg | 4 + .../core/media/icons/duotune/text/txt009.svg | 4 + .../core/media/icons/duotune/text/txt010.svg | 4 + resources/assets/core/media/logos/favicon.ico | Bin 0 -> 15086 bytes resources/assets/core/media/misc/bg-blue.png | Bin 0 -> 42745 bytes resources/assets/core/media/misc/bg-green.png | Bin 0 -> 421393 bytes resources/assets/core/media/misc/image.png | Bin 0 -> 13981 bytes .../core/media/misc/menu-header-dark.png | Bin 0 -> 53274 bytes resources/assets/core/media/misc/mm.svg | 10 + .../assets/core/media/plugins/jstree/32px.png | Bin 0 -> 2387 bytes .../svg/card-logos/american-express-dark.svg | 25 + .../media/svg/card-logos/american-express.svg | 32 + .../core/media/svg/card-logos/bitcoin 1.svg | 7 + .../svg/card-logos/dark/american-express.svg | 25 + .../media/svg/card-logos/dark/mastercard.svg | 6 + .../core/media/svg/card-logos/dark/visa.svg | 5 + .../media/svg/card-logos/mastercard-dark.svg | 6 + .../core/media/svg/card-logos/mastercard.svg | 13 + .../core/media/svg/card-logos/visa-dark.svg | 5 + .../assets/core/media/svg/card-logos/visa.svg | 5 + .../svg/payment-methods/americanexpress.svg | 14 + .../media/svg/payment-methods/mastercard.svg | 20 + .../core/media/svg/payment-methods/paypal.svg | 7 + .../core/media/svg/payment-methods/visa.svg | 4 + .../core/media/svg/social-logos/facebook.svg | 4 + .../core/media/svg/social-logos/github.svg | 3 + .../core/media/svg/social-logos/google.svg | 6 + .../core/media/svg/social-logos/instagram.svg | 22 + .../core/media/svg/social-logos/twitter.svg | 10 + .../core/media/svg/social-logos/youtube.svg | 4 + .../bootstrap-multiselectsplitter/LICENCE | 19 + .../bootstrap-multiselectsplitter.js | 348 + .../bootstrap-multiselectsplitter.min.js | 1 + .../bootstrap-session-timeout/.gitignore | 4 + .../bootstrap-session-timeout/.jshintrc | 20 + .../bootstrap-session-timeout/Gruntfile.js | 67 + .../bootstrap-session-timeout/LICENSE.md | 22 + .../bootstrap-session-timeout/README.md | 275 + .../bootstrap-session-timeout/bower.json | 32 + .../dist/bootstrap-session-timeout.js | 242 + .../dist/bootstrap-session-timeout.min.js | 1 + .../examples/basic.html | 45 + .../examples/countdown-bar.html | 48 + .../examples/countdown-timer.html | 47 + .../examples/custom-callback.html | 71 + .../examples/keep-alive.html | 19 + .../examples/locked.html | 27 + .../examples/login.html | 27 + .../bootstrap-session-timeout/index.html | 25 + .../bootstrap-session-timeout/package.json | 40 + .../plugins/custom/cookiealert/cookiealert.js | 3 + .../custom/cookiealert/cookiealert.scss | 3 + .../core/plugins/custom/cropper/cropper.js | 3 + .../core/plugins/custom/cropper/cropper.scss | 3 + .../custom/datatables/datatables.js.json | 31 + .../plugins/custom/datatables/datatables.scss | 10 + .../plugins/custom/draggable/draggable.js | 13 + .../custom/flatpickr/flatpickr.js.json | 4 + .../plugins/custom/flatpickr/flatpickr.scss | 1 + .../plugins/custom/flotcharts/flotcharts.js | 9 + .../custom/formrepeater/formrepeater.js.json | 3 + .../plugins/custom/fslightbox/fslightbox.js | 2 + .../custom/fullcalendar/fullcalendar.js.json | 4 + .../custom/fullcalendar/fullcalendar.scss | 1 + .../core/plugins/custom/jkanban/jkanban.js | 3 + .../core/plugins/custom/jkanban/jkanban.scss | 3 + .../core/plugins/custom/jstree/jstree.js | 4 + .../core/plugins/custom/jstree/jstree.scss | 3 + .../core/plugins/custom/prismjs/prismjs.js | 13 + .../core/plugins/custom/prismjs/prismjs.scss | 3 + .../plugins/custom/tiny-slider/tiny-slider.js | 3 + .../custom/tiny-slider/tiny-slider.scss | 3 + .../core/plugins/custom/typedjs/typedjs.js | 3 + .../plugins/formvalidation/HOW-TO-USE.txt | 1 + .../core/plugins/formvalidation/LICENSE.txt | 54 + .../dist/amd/algorithms/index.js | 10 + .../dist/amd/algorithms/luhn.js | 19 + .../dist/amd/algorithms/mod11And10.js | 13 + .../dist/amd/algorithms/mod37And36.js | 15 + .../dist/amd/algorithms/mod97And10.js | 29 + .../dist/amd/algorithms/verhoeff.js | 35 + .../formvalidation/dist/amd/core/Core.js | 540 + .../formvalidation/dist/amd/core/Plugin.js | 17 + .../formvalidation/dist/amd/core/emitter.js | 31 + .../formvalidation/dist/amd/core/filter.js | 33 + .../formvalidation/dist/amd/core/index.js | 7 + .../dist/amd/filters/getFieldValue.js | 27 + .../formvalidation/dist/amd/filters/index.js | 7 + .../plugins/formvalidation/dist/amd/index.js | 14 + .../formvalidation/dist/amd/locales/ar_MA.js | 378 + .../formvalidation/dist/amd/locales/bg_BG.js | 378 + .../formvalidation/dist/amd/locales/ca_ES.js | 378 + .../formvalidation/dist/amd/locales/cs_CZ.js | 378 + .../formvalidation/dist/amd/locales/da_DK.js | 378 + .../formvalidation/dist/amd/locales/de_DE.js | 378 + .../formvalidation/dist/amd/locales/el_GR.js | 378 + .../formvalidation/dist/amd/locales/en_US.js | 378 + .../formvalidation/dist/amd/locales/es_CL.js | 378 + .../formvalidation/dist/amd/locales/es_ES.js | 378 + .../formvalidation/dist/amd/locales/eu_ES.js | 378 + .../formvalidation/dist/amd/locales/fa_IR.js | 378 + .../formvalidation/dist/amd/locales/fi_FI.js | 378 + .../formvalidation/dist/amd/locales/fr_BE.js | 378 + .../formvalidation/dist/amd/locales/fr_FR.js | 378 + .../formvalidation/dist/amd/locales/he_IL.js | 378 + .../formvalidation/dist/amd/locales/hi_IN.js | 378 + .../formvalidation/dist/amd/locales/hu_HU.js | 378 + .../formvalidation/dist/amd/locales/id_ID.js | 378 + .../formvalidation/dist/amd/locales/it_IT.js | 378 + .../formvalidation/dist/amd/locales/ja_JP.js | 378 + .../formvalidation/dist/amd/locales/nl_BE.js | 378 + .../formvalidation/dist/amd/locales/nl_NL.js | 378 + .../formvalidation/dist/amd/locales/no_NO.js | 378 + .../formvalidation/dist/amd/locales/pl_PL.js | 378 + .../formvalidation/dist/amd/locales/pt_BR.js | 378 + .../formvalidation/dist/amd/locales/pt_PT.js | 378 + .../formvalidation/dist/amd/locales/ro_RO.js | 378 + .../formvalidation/dist/amd/locales/ru_RU.js | 378 + .../formvalidation/dist/amd/locales/sk_SK.js | 378 + .../formvalidation/dist/amd/locales/sq_AL.js | 378 + .../formvalidation/dist/amd/locales/sr_RS.js | 378 + .../formvalidation/dist/amd/locales/sv_SE.js | 378 + .../formvalidation/dist/amd/locales/th_TH.js | 378 + .../formvalidation/dist/amd/locales/tr_TR.js | 378 + .../formvalidation/dist/amd/locales/ua_UA.js | 378 + .../formvalidation/dist/amd/locales/vi_VN.js | 378 + .../formvalidation/dist/amd/locales/zh_CN.js | 378 + .../formvalidation/dist/amd/locales/zh_TW.js | 378 + .../formvalidation/dist/amd/plugins/Alias.js | 39 + .../formvalidation/dist/amd/plugins/Aria.js | 80 + .../dist/amd/plugins/AutoFocus.js | 60 + .../dist/amd/plugins/Bootstrap.js | 58 + .../dist/amd/plugins/Bootstrap3.js | 54 + .../dist/amd/plugins/Bootstrap5.js | 107 + .../formvalidation/dist/amd/plugins/Bulma.js | 59 + .../dist/amd/plugins/Declarative.js | 235 + .../dist/amd/plugins/DefaultSubmit.js | 45 + .../dist/amd/plugins/Dependency.js | 48 + .../dist/amd/plugins/Excluded.js | 44 + .../dist/amd/plugins/FieldStatus.js | 95 + .../dist/amd/plugins/Foundation.js | 49 + .../dist/amd/plugins/Framework.js | 236 + .../formvalidation/dist/amd/plugins/Icon.js | 182 + .../plugins/InternationalTelephoneInput.js | 88 + .../formvalidation/dist/amd/plugins/J.js | 23 + .../formvalidation/dist/amd/plugins/L10n.js | 49 + .../dist/amd/plugins/Mailgun.js | 66 + .../dist/amd/plugins/MandatoryIcon.js | 124 + .../dist/amd/plugins/Materialize.js | 46 + .../dist/amd/plugins/Message.js | 207 + .../dist/amd/plugins/Milligram.js | 44 + .../formvalidation/dist/amd/plugins/Mini.js | 44 + .../formvalidation/dist/amd/plugins/Mui.js | 44 + .../dist/amd/plugins/PasswordStrength.js | 96 + .../formvalidation/dist/amd/plugins/Pure.js | 46 + .../dist/amd/plugins/Recaptcha.js | 191 + .../dist/amd/plugins/Recaptcha3.js | 108 + .../dist/amd/plugins/Recaptcha3Token.js | 78 + .../dist/amd/plugins/Semantic.js | 55 + .../dist/amd/plugins/Sequence.js | 85 + .../dist/amd/plugins/Shoelace.js | 46 + .../dist/amd/plugins/Spectre.js | 46 + .../dist/amd/plugins/StartEndDate.js | 105 + .../dist/amd/plugins/SubmitButton.js | 97 + .../dist/amd/plugins/Tachyons.js | 44 + .../dist/amd/plugins/Tooltip.js | 162 + .../dist/amd/plugins/Transformer.js | 41 + .../dist/amd/plugins/Trigger.js | 135 + .../formvalidation/dist/amd/plugins/Turret.js | 44 + .../dist/amd/plugins/TypingAnimation.js | 80 + .../formvalidation/dist/amd/plugins/Uikit.js | 44 + .../formvalidation/dist/amd/plugins/Wizard.js | 175 + .../formvalidation/dist/amd/plugins/index.js | 20 + .../formvalidation/dist/amd/utils/call.js | 24 + .../formvalidation/dist/amd/utils/classSet.js | 33 + .../formvalidation/dist/amd/utils/closest.js | 26 + .../formvalidation/dist/amd/utils/fetch.js | 54 + .../formvalidation/dist/amd/utils/format.js | 13 + .../formvalidation/dist/amd/utils/hasClass.js | 10 + .../formvalidation/dist/amd/utils/index.js | 13 + .../dist/amd/utils/isValidDate.js | 40 + .../dist/amd/validators/base64.js | 15 + .../dist/amd/validators/between.js | 36 + .../formvalidation/dist/amd/validators/bic.js | 14 + .../dist/amd/validators/blank.js | 12 + .../dist/amd/validators/callback.js | 15 + .../dist/amd/validators/choice.js | 35 + .../dist/amd/validators/color.js | 219 + .../dist/amd/validators/creditCard.js | 200 + .../dist/amd/validators/cusip.js | 43 + .../dist/amd/validators/date.js | 210 + .../dist/amd/validators/different.js | 17 + .../dist/amd/validators/digits.js | 12 + .../formvalidation/dist/amd/validators/ean.js | 25 + .../formvalidation/dist/amd/validators/ein.js | 109 + .../dist/amd/validators/emailAddress.js | 64 + .../dist/amd/validators/file.js | 101 + .../dist/amd/validators/greaterThan.js | 25 + .../dist/amd/validators/grid.js | 23 + .../formvalidation/dist/amd/validators/hex.js | 14 + .../dist/amd/validators/iban.js | 180 + .../dist/amd/validators/id/arId.js | 12 + .../dist/amd/validators/id/baId.js | 11 + .../dist/amd/validators/id/bgId.js | 41 + .../dist/amd/validators/id/brId.js | 41 + .../dist/amd/validators/id/chId.js | 25 + .../dist/amd/validators/id/clId.js | 34 + .../dist/amd/validators/id/cnId.js | 777 + .../dist/amd/validators/id/coId.js | 28 + .../dist/amd/validators/id/czId.js | 50 + .../dist/amd/validators/id/dkId.js | 33 + .../dist/amd/validators/id/esId.js | 74 + .../dist/amd/validators/id/fiId.js | 40 + .../dist/amd/validators/id/frId.js | 37 + .../dist/amd/validators/id/hkId.js | 39 + .../dist/amd/validators/id/hrId.js | 11 + .../dist/amd/validators/id/idId.js | 18 + .../dist/amd/validators/id/ieId.js | 34 + .../dist/amd/validators/id/ilId.js | 17 + .../dist/amd/validators/id/index.js | 207 + .../dist/amd/validators/id/isId.js | 35 + .../dist/amd/validators/id/jmbg.js | 42 + .../dist/amd/validators/id/krId.js | 52 + .../dist/amd/validators/id/ltId.js | 51 + .../dist/amd/validators/id/lvId.js | 34 + .../dist/amd/validators/id/meId.js | 11 + .../dist/amd/validators/id/mkId.js | 11 + .../dist/amd/validators/id/mxId.js | 179 + .../dist/amd/validators/id/myId.js | 28 + .../dist/amd/validators/id/nlId.js | 43 + .../dist/amd/validators/id/noId.js | 33 + .../dist/amd/validators/id/peId.js | 31 + .../dist/amd/validators/id/plId.js | 28 + .../dist/amd/validators/id/roId.js | 60 + .../dist/amd/validators/id/rsId.js | 11 + .../dist/amd/validators/id/seId.js | 27 + .../dist/amd/validators/id/siId.js | 11 + .../dist/amd/validators/id/smId.js | 11 + .../dist/amd/validators/id/thId.js | 21 + .../dist/amd/validators/id/trId.js | 21 + .../dist/amd/validators/id/twId.js | 26 + .../dist/amd/validators/id/uyId.js | 26 + .../dist/amd/validators/id/zaId.js | 28 + .../dist/amd/validators/identical.js | 17 + .../dist/amd/validators/imei.js | 27 + .../formvalidation/dist/amd/validators/imo.js | 23 + .../dist/amd/validators/index-full.js | 57 + .../dist/amd/validators/index.js | 29 + .../dist/amd/validators/integer.js | 34 + .../formvalidation/dist/amd/validators/ip.js | 38 + .../dist/amd/validators/isbn.js | 79 + .../dist/amd/validators/isin.js | 46 + .../dist/amd/validators/ismn.js | 53 + .../dist/amd/validators/issn.js | 27 + .../dist/amd/validators/lessThan.js | 25 + .../formvalidation/dist/amd/validators/mac.js | 16 + .../dist/amd/validators/meid.js | 48 + .../dist/amd/validators/notEmpty.js | 16 + .../dist/amd/validators/numeric.js | 40 + .../dist/amd/validators/phone.js | 132 + .../dist/amd/validators/promise.js | 12 + .../dist/amd/validators/regexp.js | 23 + .../dist/amd/validators/remote.js | 53 + .../formvalidation/dist/amd/validators/rtn.js | 25 + .../dist/amd/validators/sedol.js | 26 + .../dist/amd/validators/siren.js | 14 + .../dist/amd/validators/siret.js | 28 + .../dist/amd/validators/step.js | 55 + .../dist/amd/validators/stringCase.js | 27 + .../dist/amd/validators/stringLength.js | 64 + .../formvalidation/dist/amd/validators/uri.js | 47 + .../dist/amd/validators/uuid.js | 30 + .../dist/amd/validators/vat/arVat.js | 30 + .../dist/amd/validators/vat/atVat.js | 36 + .../dist/amd/validators/vat/beVat.js | 31 + .../dist/amd/validators/vat/bgVat.js | 90 + .../dist/amd/validators/vat/brVat.js | 69 + .../dist/amd/validators/vat/chVat.js | 37 + .../dist/amd/validators/vat/cyVat.js | 47 + .../dist/amd/validators/vat/czVat.js | 103 + .../dist/amd/validators/vat/deVat.js | 21 + .../dist/amd/validators/vat/dkVat.js | 26 + .../dist/amd/validators/vat/eeVat.js | 26 + .../dist/amd/validators/vat/esVat.js | 78 + .../dist/amd/validators/vat/fiVat.js | 26 + .../dist/amd/validators/vat/frVat.js | 43 + .../dist/amd/validators/vat/gbVat.js | 64 + .../dist/amd/validators/vat/grVat.js | 30 + .../dist/amd/validators/vat/hrVat.js | 21 + .../dist/amd/validators/vat/huVat.js | 26 + .../dist/amd/validators/vat/ieVat.js | 46 + .../dist/amd/validators/vat/index.js | 192 + .../dist/amd/validators/vat/isVat.js | 15 + .../dist/amd/validators/vat/itVat.js | 34 + .../dist/amd/validators/vat/ltVat.js | 35 + .../dist/amd/validators/vat/luVat.js | 21 + .../dist/amd/validators/vat/lvVat.js | 56 + .../dist/amd/validators/vat/mtVat.js | 26 + .../dist/amd/validators/vat/nlVat.js | 22 + .../dist/amd/validators/vat/noVat.js | 30 + .../dist/amd/validators/vat/plVat.js | 26 + .../dist/amd/validators/vat/ptVat.js | 30 + .../dist/amd/validators/vat/roVat.js | 28 + .../dist/amd/validators/vat/rsVat.js | 30 + .../dist/amd/validators/vat/ruVat.js | 59 + .../dist/amd/validators/vat/seVat.js | 22 + .../dist/amd/validators/vat/siVat.js | 28 + .../dist/amd/validators/vat/skVat.js | 21 + .../dist/amd/validators/vat/veVat.js | 37 + .../dist/amd/validators/vat/zaVat.js | 15 + .../formvalidation/dist/amd/validators/vin.js | 64 + .../dist/amd/validators/zipCode.js | 160 + .../dist/css/formValidation.css | 497 + .../dist/css/formValidation.min.css | 1 + .../dist/es6/algorithms/index.js | 1 + .../dist/es6/algorithms/luhn.js | 1 + .../dist/es6/algorithms/mod11And10.js | 1 + .../dist/es6/algorithms/mod37And36.js | 1 + .../dist/es6/algorithms/mod97And10.js | 1 + .../dist/es6/algorithms/verhoeff.js | 1 + .../formvalidation/dist/es6/core/Core.js | 1 + .../formvalidation/dist/es6/core/Plugin.js | 1 + .../formvalidation/dist/es6/core/emitter.js | 1 + .../formvalidation/dist/es6/core/filter.js | 1 + .../formvalidation/dist/es6/core/index.js | 1 + .../dist/es6/filters/getFieldValue.js | 1 + .../formvalidation/dist/es6/filters/index.js | 1 + .../plugins/formvalidation/dist/es6/index.js | 1 + .../formvalidation/dist/es6/locales/ar_MA.js | 1 + .../formvalidation/dist/es6/locales/bg_BG.js | 1 + .../formvalidation/dist/es6/locales/ca_ES.js | 1 + .../formvalidation/dist/es6/locales/cs_CZ.js | 1 + .../formvalidation/dist/es6/locales/da_DK.js | 1 + .../formvalidation/dist/es6/locales/de_DE.js | 1 + .../formvalidation/dist/es6/locales/el_GR.js | 1 + .../formvalidation/dist/es6/locales/en_US.js | 1 + .../formvalidation/dist/es6/locales/es_CL.js | 1 + .../formvalidation/dist/es6/locales/es_ES.js | 1 + .../formvalidation/dist/es6/locales/eu_ES.js | 1 + .../formvalidation/dist/es6/locales/fa_IR.js | 1 + .../formvalidation/dist/es6/locales/fi_FI.js | 1 + .../formvalidation/dist/es6/locales/fr_BE.js | 1 + .../formvalidation/dist/es6/locales/fr_FR.js | 1 + .../formvalidation/dist/es6/locales/he_IL.js | 1 + .../formvalidation/dist/es6/locales/hi_IN.js | 1 + .../formvalidation/dist/es6/locales/hu_HU.js | 1 + .../formvalidation/dist/es6/locales/id_ID.js | 1 + .../formvalidation/dist/es6/locales/it_IT.js | 1 + .../formvalidation/dist/es6/locales/ja_JP.js | 1 + .../formvalidation/dist/es6/locales/nl_BE.js | 1 + .../formvalidation/dist/es6/locales/nl_NL.js | 1 + .../formvalidation/dist/es6/locales/no_NO.js | 1 + .../formvalidation/dist/es6/locales/pl_PL.js | 1 + .../formvalidation/dist/es6/locales/pt_BR.js | 1 + .../formvalidation/dist/es6/locales/pt_PT.js | 1 + .../formvalidation/dist/es6/locales/ro_RO.js | 1 + .../formvalidation/dist/es6/locales/ru_RU.js | 1 + .../formvalidation/dist/es6/locales/sk_SK.js | 1 + .../formvalidation/dist/es6/locales/sq_AL.js | 1 + .../formvalidation/dist/es6/locales/sr_RS.js | 1 + .../formvalidation/dist/es6/locales/sv_SE.js | 1 + .../formvalidation/dist/es6/locales/th_TH.js | 1 + .../formvalidation/dist/es6/locales/tr_TR.js | 1 + .../formvalidation/dist/es6/locales/ua_UA.js | 1 + .../formvalidation/dist/es6/locales/vi_VN.js | 1 + .../formvalidation/dist/es6/locales/zh_CN.js | 1 + .../formvalidation/dist/es6/locales/zh_TW.js | 1 + .../formvalidation/dist/es6/plugins/Alias.js | 1 + .../formvalidation/dist/es6/plugins/Aria.js | 1 + .../dist/es6/plugins/AutoFocus.js | 1 + .../dist/es6/plugins/Bootstrap.js | 1 + .../dist/es6/plugins/Bootstrap3.js | 1 + .../dist/es6/plugins/Bootstrap5.js | 1 + .../formvalidation/dist/es6/plugins/Bulma.js | 1 + .../dist/es6/plugins/Declarative.js | 1 + .../dist/es6/plugins/DefaultSubmit.js | 1 + .../dist/es6/plugins/Dependency.js | 1 + .../dist/es6/plugins/Excluded.js | 1 + .../dist/es6/plugins/FieldStatus.js | 1 + .../dist/es6/plugins/Foundation.js | 1 + .../dist/es6/plugins/Framework.js | 1 + .../formvalidation/dist/es6/plugins/Icon.js | 1 + .../plugins/InternationalTelephoneInput.js | 1 + .../formvalidation/dist/es6/plugins/J.js | 1 + .../formvalidation/dist/es6/plugins/L10n.js | 1 + .../dist/es6/plugins/Mailgun.js | 1 + .../dist/es6/plugins/MandatoryIcon.js | 1 + .../dist/es6/plugins/Materialize.js | 1 + .../dist/es6/plugins/Message.js | 1 + .../dist/es6/plugins/Milligram.js | 1 + .../formvalidation/dist/es6/plugins/Mini.js | 1 + .../formvalidation/dist/es6/plugins/Mui.js | 1 + .../dist/es6/plugins/PasswordStrength.js | 1 + .../formvalidation/dist/es6/plugins/Pure.js | 1 + .../dist/es6/plugins/Recaptcha.js | 1 + .../dist/es6/plugins/Recaptcha3.js | 1 + .../dist/es6/plugins/Recaptcha3Token.js | 1 + .../dist/es6/plugins/Semantic.js | 1 + .../dist/es6/plugins/Sequence.js | 1 + .../dist/es6/plugins/Shoelace.js | 1 + .../dist/es6/plugins/Spectre.js | 1 + .../dist/es6/plugins/StartEndDate.js | 1 + .../dist/es6/plugins/SubmitButton.js | 1 + .../dist/es6/plugins/Tachyons.js | 1 + .../dist/es6/plugins/Tooltip.js | 1 + .../dist/es6/plugins/Transformer.js | 1 + .../dist/es6/plugins/Trigger.js | 1 + .../formvalidation/dist/es6/plugins/Turret.js | 1 + .../dist/es6/plugins/TypingAnimation.js | 1 + .../formvalidation/dist/es6/plugins/Uikit.js | 1 + .../formvalidation/dist/es6/plugins/Wizard.js | 1 + .../formvalidation/dist/es6/plugins/index.js | 1 + .../formvalidation/dist/es6/utils/call.js | 1 + .../formvalidation/dist/es6/utils/classSet.js | 1 + .../formvalidation/dist/es6/utils/closest.js | 1 + .../formvalidation/dist/es6/utils/fetch.js | 1 + .../formvalidation/dist/es6/utils/format.js | 1 + .../formvalidation/dist/es6/utils/hasClass.js | 1 + .../formvalidation/dist/es6/utils/index.js | 1 + .../dist/es6/utils/isValidDate.js | 1 + .../dist/es6/validators/base64.js | 1 + .../dist/es6/validators/between.js | 1 + .../formvalidation/dist/es6/validators/bic.js | 1 + .../dist/es6/validators/blank.js | 1 + .../dist/es6/validators/callback.js | 1 + .../dist/es6/validators/choice.js | 1 + .../dist/es6/validators/color.js | 1 + .../dist/es6/validators/creditCard.js | 1 + .../dist/es6/validators/cusip.js | 1 + .../dist/es6/validators/date.js | 1 + .../dist/es6/validators/different.js | 1 + .../dist/es6/validators/digits.js | 1 + .../formvalidation/dist/es6/validators/ean.js | 1 + .../formvalidation/dist/es6/validators/ein.js | 1 + .../dist/es6/validators/emailAddress.js | 1 + .../dist/es6/validators/file.js | 1 + .../dist/es6/validators/greaterThan.js | 1 + .../dist/es6/validators/grid.js | 1 + .../formvalidation/dist/es6/validators/hex.js | 1 + .../dist/es6/validators/iban.js | 1 + .../dist/es6/validators/id/arId.js | 1 + .../dist/es6/validators/id/baId.js | 1 + .../dist/es6/validators/id/bgId.js | 1 + .../dist/es6/validators/id/brId.js | 1 + .../dist/es6/validators/id/chId.js | 1 + .../dist/es6/validators/id/clId.js | 1 + .../dist/es6/validators/id/cnId.js | 1 + .../dist/es6/validators/id/coId.js | 1 + .../dist/es6/validators/id/czId.js | 1 + .../dist/es6/validators/id/dkId.js | 1 + .../dist/es6/validators/id/esId.js | 1 + .../dist/es6/validators/id/fiId.js | 1 + .../dist/es6/validators/id/frId.js | 1 + .../dist/es6/validators/id/hkId.js | 1 + .../dist/es6/validators/id/hrId.js | 1 + .../dist/es6/validators/id/idId.js | 1 + .../dist/es6/validators/id/ieId.js | 1 + .../dist/es6/validators/id/ilId.js | 1 + .../dist/es6/validators/id/index.js | 1 + .../dist/es6/validators/id/isId.js | 1 + .../dist/es6/validators/id/jmbg.js | 1 + .../dist/es6/validators/id/krId.js | 1 + .../dist/es6/validators/id/ltId.js | 1 + .../dist/es6/validators/id/lvId.js | 1 + .../dist/es6/validators/id/meId.js | 1 + .../dist/es6/validators/id/mkId.js | 1 + .../dist/es6/validators/id/mxId.js | 1 + .../dist/es6/validators/id/myId.js | 1 + .../dist/es6/validators/id/nlId.js | 1 + .../dist/es6/validators/id/noId.js | 1 + .../dist/es6/validators/id/peId.js | 1 + .../dist/es6/validators/id/plId.js | 1 + .../dist/es6/validators/id/roId.js | 1 + .../dist/es6/validators/id/rsId.js | 1 + .../dist/es6/validators/id/seId.js | 1 + .../dist/es6/validators/id/siId.js | 1 + .../dist/es6/validators/id/smId.js | 1 + .../dist/es6/validators/id/thId.js | 1 + .../dist/es6/validators/id/trId.js | 1 + .../dist/es6/validators/id/twId.js | 1 + .../dist/es6/validators/id/uyId.js | 1 + .../dist/es6/validators/id/zaId.js | 1 + .../dist/es6/validators/identical.js | 1 + .../dist/es6/validators/imei.js | 1 + .../formvalidation/dist/es6/validators/imo.js | 1 + .../dist/es6/validators/index-full.js | 1 + .../dist/es6/validators/index.js | 1 + .../dist/es6/validators/integer.js | 1 + .../formvalidation/dist/es6/validators/ip.js | 1 + .../dist/es6/validators/isbn.js | 1 + .../dist/es6/validators/isin.js | 1 + .../dist/es6/validators/ismn.js | 1 + .../dist/es6/validators/issn.js | 1 + .../dist/es6/validators/lessThan.js | 1 + .../formvalidation/dist/es6/validators/mac.js | 1 + .../dist/es6/validators/meid.js | 1 + .../dist/es6/validators/notEmpty.js | 1 + .../dist/es6/validators/numeric.js | 1 + .../dist/es6/validators/phone.js | 1 + .../dist/es6/validators/promise.js | 1 + .../dist/es6/validators/regexp.js | 1 + .../dist/es6/validators/remote.js | 1 + .../formvalidation/dist/es6/validators/rtn.js | 1 + .../dist/es6/validators/sedol.js | 1 + .../dist/es6/validators/siren.js | 1 + .../dist/es6/validators/siret.js | 1 + .../dist/es6/validators/step.js | 1 + .../dist/es6/validators/stringCase.js | 1 + .../dist/es6/validators/stringLength.js | 1 + .../formvalidation/dist/es6/validators/uri.js | 1 + .../dist/es6/validators/uuid.js | 1 + .../dist/es6/validators/vat/arVat.js | 1 + .../dist/es6/validators/vat/atVat.js | 1 + .../dist/es6/validators/vat/beVat.js | 1 + .../dist/es6/validators/vat/bgVat.js | 1 + .../dist/es6/validators/vat/brVat.js | 1 + .../dist/es6/validators/vat/chVat.js | 1 + .../dist/es6/validators/vat/cyVat.js | 1 + .../dist/es6/validators/vat/czVat.js | 1 + .../dist/es6/validators/vat/deVat.js | 1 + .../dist/es6/validators/vat/dkVat.js | 1 + .../dist/es6/validators/vat/eeVat.js | 1 + .../dist/es6/validators/vat/esVat.js | 1 + .../dist/es6/validators/vat/fiVat.js | 1 + .../dist/es6/validators/vat/frVat.js | 1 + .../dist/es6/validators/vat/gbVat.js | 1 + .../dist/es6/validators/vat/grVat.js | 1 + .../dist/es6/validators/vat/hrVat.js | 1 + .../dist/es6/validators/vat/huVat.js | 1 + .../dist/es6/validators/vat/ieVat.js | 1 + .../dist/es6/validators/vat/index.js | 1 + .../dist/es6/validators/vat/isVat.js | 1 + .../dist/es6/validators/vat/itVat.js | 1 + .../dist/es6/validators/vat/ltVat.js | 1 + .../dist/es6/validators/vat/luVat.js | 1 + .../dist/es6/validators/vat/lvVat.js | 1 + .../dist/es6/validators/vat/mtVat.js | 1 + .../dist/es6/validators/vat/nlVat.js | 1 + .../dist/es6/validators/vat/noVat.js | 1 + .../dist/es6/validators/vat/plVat.js | 1 + .../dist/es6/validators/vat/ptVat.js | 1 + .../dist/es6/validators/vat/roVat.js | 1 + .../dist/es6/validators/vat/rsVat.js | 1 + .../dist/es6/validators/vat/ruVat.js | 1 + .../dist/es6/validators/vat/seVat.js | 1 + .../dist/es6/validators/vat/siVat.js | 1 + .../dist/es6/validators/vat/skVat.js | 1 + .../dist/es6/validators/vat/veVat.js | 1 + .../dist/es6/validators/vat/zaVat.js | 1 + .../formvalidation/dist/es6/validators/vin.js | 1 + .../dist/es6/validators/zipCode.js | 1 + .../dist/js/FormValidation.full.js | 9344 +++++ .../dist/js/FormValidation.full.min.js | 1 + .../formvalidation/dist/js/FormValidation.js | 4234 +++ .../dist/js/FormValidation.min.js | 1 + .../formvalidation/dist/js/locales/ar_MA.js | 389 + .../dist/js/locales/ar_MA.min.js | 1 + .../formvalidation/dist/js/locales/bg_BG.js | 389 + .../dist/js/locales/bg_BG.min.js | 1 + .../formvalidation/dist/js/locales/ca_ES.js | 389 + .../dist/js/locales/ca_ES.min.js | 1 + .../formvalidation/dist/js/locales/cs_CZ.js | 389 + .../dist/js/locales/cs_CZ.min.js | 1 + .../formvalidation/dist/js/locales/da_DK.js | 389 + .../dist/js/locales/da_DK.min.js | 1 + .../formvalidation/dist/js/locales/de_DE.js | 389 + .../dist/js/locales/de_DE.min.js | 1 + .../formvalidation/dist/js/locales/el_GR.js | 389 + .../dist/js/locales/el_GR.min.js | 1 + .../formvalidation/dist/js/locales/en_US.js | 389 + .../dist/js/locales/en_US.min.js | 1 + .../formvalidation/dist/js/locales/es_CL.js | 389 + .../dist/js/locales/es_CL.min.js | 1 + .../formvalidation/dist/js/locales/es_ES.js | 389 + .../dist/js/locales/es_ES.min.js | 1 + .../formvalidation/dist/js/locales/eu_ES.js | 389 + .../dist/js/locales/eu_ES.min.js | 1 + .../formvalidation/dist/js/locales/fa_IR.js | 389 + .../dist/js/locales/fa_IR.min.js | 1 + .../formvalidation/dist/js/locales/fi_FI.js | 389 + .../dist/js/locales/fi_FI.min.js | 1 + .../formvalidation/dist/js/locales/fr_BE.js | 389 + .../dist/js/locales/fr_BE.min.js | 1 + .../formvalidation/dist/js/locales/fr_FR.js | 389 + .../dist/js/locales/fr_FR.min.js | 1 + .../formvalidation/dist/js/locales/he_IL.js | 389 + .../dist/js/locales/he_IL.min.js | 1 + .../formvalidation/dist/js/locales/hi_IN.js | 389 + .../dist/js/locales/hi_IN.min.js | 1 + .../formvalidation/dist/js/locales/hu_HU.js | 389 + .../dist/js/locales/hu_HU.min.js | 1 + .../formvalidation/dist/js/locales/id_ID.js | 389 + .../dist/js/locales/id_ID.min.js | 1 + .../formvalidation/dist/js/locales/it_IT.js | 389 + .../dist/js/locales/it_IT.min.js | 1 + .../formvalidation/dist/js/locales/ja_JP.js | 389 + .../dist/js/locales/ja_JP.min.js | 1 + .../formvalidation/dist/js/locales/nl_BE.js | 389 + .../dist/js/locales/nl_BE.min.js | 1 + .../formvalidation/dist/js/locales/nl_NL.js | 389 + .../dist/js/locales/nl_NL.min.js | 1 + .../formvalidation/dist/js/locales/no_NO.js | 389 + .../dist/js/locales/no_NO.min.js | 1 + .../formvalidation/dist/js/locales/pl_PL.js | 389 + .../dist/js/locales/pl_PL.min.js | 1 + .../formvalidation/dist/js/locales/pt_BR.js | 389 + .../dist/js/locales/pt_BR.min.js | 1 + .../formvalidation/dist/js/locales/pt_PT.js | 389 + .../dist/js/locales/pt_PT.min.js | 1 + .../formvalidation/dist/js/locales/ro_RO.js | 389 + .../dist/js/locales/ro_RO.min.js | 1 + .../formvalidation/dist/js/locales/ru_RU.js | 389 + .../dist/js/locales/ru_RU.min.js | 1 + .../formvalidation/dist/js/locales/sk_SK.js | 389 + .../dist/js/locales/sk_SK.min.js | 1 + .../formvalidation/dist/js/locales/sq_AL.js | 389 + .../dist/js/locales/sq_AL.min.js | 1 + .../formvalidation/dist/js/locales/sr_RS.js | 389 + .../dist/js/locales/sr_RS.min.js | 1 + .../formvalidation/dist/js/locales/sv_SE.js | 389 + .../dist/js/locales/sv_SE.min.js | 1 + .../formvalidation/dist/js/locales/th_TH.js | 389 + .../dist/js/locales/th_TH.min.js | 1 + .../formvalidation/dist/js/locales/tr_TR.js | 389 + .../dist/js/locales/tr_TR.min.js | 1 + .../formvalidation/dist/js/locales/ua_UA.js | 389 + .../dist/js/locales/ua_UA.min.js | 1 + .../formvalidation/dist/js/locales/vi_VN.js | 389 + .../dist/js/locales/vi_VN.min.js | 1 + .../formvalidation/dist/js/locales/zh_CN.js | 389 + .../dist/js/locales/zh_CN.min.js | 1 + .../formvalidation/dist/js/locales/zh_TW.js | 389 + .../dist/js/locales/zh_TW.min.js | 1 + .../dist/js/plugins/AutoFocus.js | 277 + .../dist/js/plugins/AutoFocus.min.js | 1 + .../dist/js/plugins/Bootstrap.js | 178 + .../dist/js/plugins/Bootstrap.min.js | 1 + .../dist/js/plugins/Bootstrap3.js | 172 + .../dist/js/plugins/Bootstrap3.min.js | 1 + .../dist/js/plugins/Bootstrap5.js | 271 + .../dist/js/plugins/Bootstrap5.min.js | 1 + .../formvalidation/dist/js/plugins/Bulma.js | 177 + .../dist/js/plugins/Bulma.min.js | 1 + .../dist/js/plugins/Foundation.js | 162 + .../dist/js/plugins/Foundation.min.js | 1 + .../js/plugins/InternationalTelephoneInput.js | 236 + .../InternationalTelephoneInput.min.js | 1 + .../formvalidation/dist/js/plugins/J.js | 56 + .../formvalidation/dist/js/plugins/J.min.js | 1 + .../formvalidation/dist/js/plugins/L10n.js | 185 + .../dist/js/plugins/L10n.min.js | 1 + .../formvalidation/dist/js/plugins/Mailgun.js | 189 + .../dist/js/plugins/Mailgun.min.js | 1 + .../dist/js/plugins/MandatoryIcon.js | 353 + .../dist/js/plugins/MandatoryIcon.min.js | 1 + .../dist/js/plugins/Materialize.js | 161 + .../dist/js/plugins/Materialize.min.js | 1 + .../dist/js/plugins/Milligram.js | 159 + .../dist/js/plugins/Milligram.min.js | 1 + .../formvalidation/dist/js/plugins/Mini.js | 159 + .../dist/js/plugins/Mini.min.js | 1 + .../formvalidation/dist/js/plugins/Mui.js | 159 + .../formvalidation/dist/js/plugins/Mui.min.js | 1 + .../dist/js/plugins/PasswordStrength.js | 228 + .../dist/js/plugins/PasswordStrength.min.js | 1 + .../formvalidation/dist/js/plugins/Pure.js | 161 + .../dist/js/plugins/Pure.min.js | 1 + .../dist/js/plugins/Recaptcha.js | 330 + .../dist/js/plugins/Recaptcha.min.js | 1 + .../dist/js/plugins/Recaptcha3.js | 246 + .../dist/js/plugins/Recaptcha3.min.js | 1 + .../dist/js/plugins/Recaptcha3Token.js | 209 + .../dist/js/plugins/Recaptcha3Token.min.js | 1 + .../dist/js/plugins/Semantic.js | 176 + .../dist/js/plugins/Semantic.min.js | 1 + .../dist/js/plugins/Shoelace.js | 161 + .../dist/js/plugins/Shoelace.min.js | 1 + .../formvalidation/dist/js/plugins/Spectre.js | 164 + .../dist/js/plugins/Spectre.min.js | 1 + .../dist/js/plugins/StartEndDate.js | 231 + .../dist/js/plugins/StartEndDate.min.js | 1 + .../dist/js/plugins/Tachyons.js | 159 + .../dist/js/plugins/Tachyons.min.js | 1 + .../dist/js/plugins/Transformer.js | 159 + .../dist/js/plugins/Transformer.min.js | 1 + .../formvalidation/dist/js/plugins/Turret.js | 159 + .../dist/js/plugins/Turret.min.js | 1 + .../dist/js/plugins/TypingAnimation.js | 200 + .../dist/js/plugins/TypingAnimation.min.js | 1 + .../formvalidation/dist/js/plugins/Uikit.js | 159 + .../dist/js/plugins/Uikit.min.js | 1 + .../formvalidation/dist/js/plugins/Wizard.js | 322 + .../dist/js/plugins/Wizard.min.js | 1 + .../plugins/formvalidation/src/css/_core.scss | 3 + .../plugins/formvalidation/src/css/index.css | 724 + .../formvalidation/src/css/index.css.map | 30 + .../plugins/formvalidation/src/css/index.scss | 31 + .../src/css/plugins/_bootstrap.scss | 77 + .../src/css/plugins/_bootstrap3.scss | 15 + .../src/css/plugins/_bootstrap5.scss | 79 + .../src/css/plugins/_bulma.scss | 33 + .../src/css/plugins/_foundation.scss | 55 + .../src/css/plugins/_framework.scss | 9 + .../formvalidation/src/css/plugins/_icon.scss | 10 + .../src/css/plugins/_materialize.scss | 25 + .../src/css/plugins/_milligram.scss | 48 + .../formvalidation/src/css/plugins/_mini.scss | 41 + .../formvalidation/src/css/plugins/_mui.scss | 32 + .../formvalidation/src/css/plugins/_pure.scss | 54 + .../src/css/plugins/_semantic.scss | 10 + .../src/css/plugins/_shoelace.scss | 41 + .../src/css/plugins/_spectre.scss | 18 + .../src/css/plugins/_tachyons.scss | 22 + .../src/css/plugins/_tooltip.scss | 119 + .../src/css/plugins/_turret.scss | 32 + .../src/css/plugins/_uikit.scss | 34 + .../src/css/plugins/_wizard.scss | 6 + .../formvalidation/src/js/algorithms/index.ts | 17 + .../formvalidation/src/js/algorithms/luhn.ts | 30 + .../src/js/algorithms/mod11And10.ts | 23 + .../src/js/algorithms/mod37And36.ts | 29 + .../src/js/algorithms/mod97And10.ts | 34 + .../src/js/algorithms/verhoeff.ts | 50 + .../formvalidation/src/js/core/Core.ts | 992 + .../formvalidation/src/js/core/Plugin.ts | 24 + .../formvalidation/src/js/core/emitter.ts | 44 + .../formvalidation/src/js/core/filter.ts | 51 + .../formvalidation/src/js/core/index.ts | 11 + .../src/js/filters/getFieldValue.ts | 45 + .../formvalidation/src/js/filters/index.ts | 11 + .../plugins/formvalidation/src/js/index.ts | 25 + .../formvalidation/src/js/locales/ar_MA.ts | 379 + .../formvalidation/src/js/locales/bg_BG.ts | 379 + .../formvalidation/src/js/locales/ca_ES.ts | 380 + .../formvalidation/src/js/locales/cs_CZ.ts | 380 + .../formvalidation/src/js/locales/da_DK.ts | 386 + .../formvalidation/src/js/locales/de_DE.ts | 379 + .../formvalidation/src/js/locales/el_GR.ts | 379 + .../formvalidation/src/js/locales/en_US.ts | 379 + .../formvalidation/src/js/locales/es_CL.ts | 380 + .../formvalidation/src/js/locales/es_ES.ts | 380 + .../formvalidation/src/js/locales/eu_ES.ts | 380 + .../formvalidation/src/js/locales/fa_IR.ts | 379 + .../formvalidation/src/js/locales/fi_FI.ts | 381 + .../formvalidation/src/js/locales/fr_BE.ts | 380 + .../formvalidation/src/js/locales/fr_FR.ts | 380 + .../formvalidation/src/js/locales/he_IL.ts | 379 + .../formvalidation/src/js/locales/hi_IN.ts | 379 + .../formvalidation/src/js/locales/hu_HU.ts | 380 + .../formvalidation/src/js/locales/id_ID.ts | 379 + .../formvalidation/src/js/locales/it_IT.ts | 382 + .../formvalidation/src/js/locales/ja_JP.ts | 379 + .../formvalidation/src/js/locales/nl_BE.ts | 379 + .../formvalidation/src/js/locales/nl_NL.ts | 379 + .../formvalidation/src/js/locales/no_NO.ts | 394 + .../formvalidation/src/js/locales/pl_PL.ts | 379 + .../formvalidation/src/js/locales/pt_BR.ts | 379 + .../formvalidation/src/js/locales/pt_PT.ts | 379 + .../formvalidation/src/js/locales/ro_RO.ts | 380 + .../formvalidation/src/js/locales/ru_RU.ts | 379 + .../formvalidation/src/js/locales/sk_SK.ts | 380 + .../formvalidation/src/js/locales/sq_AL.ts | 382 + .../formvalidation/src/js/locales/sr_RS.ts | 379 + .../formvalidation/src/js/locales/sv_SE.ts | 379 + .../formvalidation/src/js/locales/th_TH.ts | 379 + .../formvalidation/src/js/locales/tr_TR.ts | 379 + .../formvalidation/src/js/locales/ua_UA.ts | 379 + .../formvalidation/src/js/locales/vi_VN.ts | 379 + .../formvalidation/src/js/locales/zh_CN.ts | 379 + .../formvalidation/src/js/locales/zh_TW.ts | 379 + .../formvalidation/src/js/plugins/Alias.ts | 57 + .../formvalidation/src/js/plugins/Aria.ts | 88 + .../src/js/plugins/AutoFocus.ts | 74 + .../src/js/plugins/Bootstrap.ts | 67 + .../src/js/plugins/Bootstrap3.ts | 62 + .../src/js/plugins/Bootstrap5.ts | 161 + .../formvalidation/src/js/plugins/Bulma.ts | 57 + .../src/js/plugins/Declarative.ts | 398 + .../src/js/plugins/DefaultSubmit.ts | 41 + .../src/js/plugins/Dependency.ts | 43 + .../formvalidation/src/js/plugins/Excluded.ts | 72 + .../src/js/plugins/FieldStatus.ts | 117 + .../src/js/plugins/Foundation.ts | 52 + .../src/js/plugins/Framework.ts | 291 + .../formvalidation/src/js/plugins/Icon.ts | 222 + .../js/plugins/InternationalTelephoneInput.ts | 113 + .../formvalidation/src/js/plugins/J.ts | 53 + .../formvalidation/src/js/plugins/L10n.ts | 63 + .../formvalidation/src/js/plugins/Mailgun.ts | 86 + .../src/js/plugins/MandatoryIcon.ts | 162 + .../src/js/plugins/Materialize.ts | 47 + .../formvalidation/src/js/plugins/Message.ts | 322 + .../src/js/plugins/Milligram.ts | 45 + .../formvalidation/src/js/plugins/Mini.ts | 45 + .../formvalidation/src/js/plugins/Mui.ts | 46 + .../src/js/plugins/PasswordStrength.ts | 132 + .../formvalidation/src/js/plugins/Pure.ts | 44 + .../src/js/plugins/Recaptcha.ts | 294 + .../src/js/plugins/Recaptcha3.ts | 160 + .../src/js/plugins/Recaptcha3Token.ts | 105 + .../formvalidation/src/js/plugins/Semantic.ts | 75 + .../formvalidation/src/js/plugins/Sequence.ts | 137 + .../formvalidation/src/js/plugins/Shoelace.ts | 47 + .../formvalidation/src/js/plugins/Spectre.ts | 47 + .../src/js/plugins/StartEndDate.ts | 135 + .../src/js/plugins/SubmitButton.ts | 127 + .../formvalidation/src/js/plugins/Tachyons.ts | 44 + .../formvalidation/src/js/plugins/Tooltip.ts | 219 + .../src/js/plugins/Transformer.ts | 59 + .../formvalidation/src/js/plugins/Trigger.ts | 246 + .../formvalidation/src/js/plugins/Turret.ts | 46 + .../src/js/plugins/TypingAnimation.ts | 91 + .../formvalidation/src/js/plugins/Uikit.ts | 44 + .../formvalidation/src/js/plugins/Wizard.ts | 192 + .../formvalidation/src/js/plugins/index.ts | 37 + .../formvalidation/src/js/utils/call.ts | 41 + .../formvalidation/src/js/utils/classSet.ts | 48 + .../formvalidation/src/js/utils/closest.ts | 37 + .../formvalidation/src/js/utils/fetch.ts | 103 + .../formvalidation/src/js/utils/format.ts | 27 + .../formvalidation/src/js/utils/hasClass.ts | 11 + .../formvalidation/src/js/utils/index.ts | 23 + .../src/js/utils/isValidDate.ts | 65 + .../src/js/validators/base64.ts | 32 + .../src/js/validators/between.ts | 78 + .../formvalidation/src/js/validators/bic.ts | 38 + .../formvalidation/src/js/validators/blank.ts | 30 + .../src/js/validators/callback.ts | 34 + .../src/js/validators/choice.ts | 93 + .../formvalidation/src/js/validators/color.ts | 291 + .../src/js/validators/creditCard.ts | 241 + .../formvalidation/src/js/validators/cusip.ts | 70 + .../formvalidation/src/js/validators/date.ts | 391 + .../src/js/validators/different.ts | 41 + .../src/js/validators/digits.ts | 29 + .../formvalidation/src/js/validators/ean.ts | 45 + .../formvalidation/src/js/validators/ein.ts | 134 + .../src/js/validators/emailAddress.ts | 117 + .../formvalidation/src/js/validators/file.ts | 216 + .../src/js/validators/greaterThan.ts | 69 + .../formvalidation/src/js/validators/grid.ts | 47 + .../formvalidation/src/js/validators/hex.ts | 31 + .../formvalidation/src/js/validators/iban.ts | 245 + .../src/js/validators/id/arId.ts | 22 + .../src/js/validators/id/baId.ts | 18 + .../src/js/validators/id/bgId.ts | 53 + .../src/js/validators/id/brId.ts | 57 + .../src/js/validators/id/chId.ts | 36 + .../src/js/validators/id/clId.ts | 45 + .../src/js/validators/id/cnId.ts | 824 + .../src/js/validators/id/coId.ts | 36 + .../src/js/validators/id/czId.ts | 62 + .../src/js/validators/id/dkId.ts | 45 + .../src/js/validators/id/esId.ts | 98 + .../src/js/validators/id/fiId.ts | 53 + .../src/js/validators/id/frId.ts | 48 + .../src/js/validators/id/hkId.ts | 53 + .../src/js/validators/id/hrId.ts | 20 + .../src/js/validators/id/idId.ts | 27 + .../src/js/validators/id/ieId.ts | 49 + .../src/js/validators/id/ilId.ts | 29 + .../src/js/validators/id/index.ts | 304 + .../src/js/validators/id/isId.ts | 47 + .../src/js/validators/id/jmbg.ts | 76 + .../src/js/validators/id/krId.ts | 67 + .../src/js/validators/id/ltId.ts | 66 + .../src/js/validators/id/lvId.ts | 48 + .../src/js/validators/id/meId.ts | 18 + .../src/js/validators/id/mkId.ts | 18 + .../src/js/validators/id/mxId.ts | 201 + .../src/js/validators/id/myId.ts | 58 + .../src/js/validators/id/nlId.ts | 53 + .../src/js/validators/id/noId.ts | 49 + .../src/js/validators/id/peId.ts | 42 + .../src/js/validators/id/plId.ts | 41 + .../src/js/validators/id/roId.ts | 75 + .../src/js/validators/id/rsId.ts | 18 + .../src/js/validators/id/seId.ts | 40 + .../src/js/validators/id/siId.ts | 18 + .../src/js/validators/id/smId.ts | 20 + .../src/js/validators/id/thId.ts | 32 + .../src/js/validators/id/trId.ts | 32 + .../src/js/validators/id/twId.ts | 38 + .../src/js/validators/id/uyId.ts | 35 + .../src/js/validators/id/zaId.ts | 42 + .../src/js/validators/identical.ts | 41 + .../formvalidation/src/js/validators/imei.ts | 49 + .../formvalidation/src/js/validators/imo.ts | 45 + .../src/js/validators/index-full.ts | 114 + .../formvalidation/src/js/validators/index.ts | 55 + .../src/js/validators/integer.ts | 72 + .../formvalidation/src/js/validators/ip.ts | 87 + .../formvalidation/src/js/validators/isbn.ts | 114 + .../formvalidation/src/js/validators/isin.ts | 74 + .../formvalidation/src/js/validators/ismn.ts | 78 + .../formvalidation/src/js/validators/issn.ts | 50 + .../src/js/validators/lessThan.ts | 67 + .../formvalidation/src/js/validators/mac.ts | 36 + .../formvalidation/src/js/validators/meid.ts | 86 + .../src/js/validators/notEmpty.ts | 36 + .../src/js/validators/numeric.ts | 79 + .../formvalidation/src/js/validators/phone.ts | 280 + .../src/js/validators/promise.ts | 61 + .../src/js/validators/regexp.ts | 52 + .../src/js/validators/remote.ts | 106 + .../formvalidation/src/js/validators/rtn.ts | 45 + .../formvalidation/src/js/validators/sedol.ts | 46 + .../formvalidation/src/js/validators/siren.ts | 34 + .../formvalidation/src/js/validators/siret.ts | 46 + .../formvalidation/src/js/validators/step.ts | 99 + .../src/js/validators/stringCase.ts | 58 + .../src/js/validators/stringLength.ts | 139 + .../formvalidation/src/js/validators/uri.ts | 134 + .../formvalidation/src/js/validators/uuid.ts | 71 + .../src/js/validators/vat/arVat.ts | 40 + .../src/js/validators/vat/atVat.ts | 47 + .../src/js/validators/vat/beVat.ts | 41 + .../src/js/validators/vat/bgVat.ts | 108 + .../src/js/validators/vat/brVat.ts | 87 + .../src/js/validators/vat/chVat.ts | 48 + .../src/js/validators/vat/cyVat.ts | 60 + .../src/js/validators/vat/czVat.ts | 120 + .../src/js/validators/vat/deVat.ts | 31 + .../src/js/validators/vat/dkVat.ts | 36 + .../src/js/validators/vat/eeVat.ts | 36 + .../src/js/validators/vat/esVat.ts | 100 + .../src/js/validators/vat/fiVat.ts | 36 + .../src/js/validators/vat/frVat.ts | 66 + .../src/js/validators/vat/gbVat.ts | 89 + .../src/js/validators/vat/grVat.ts | 41 + .../src/js/validators/vat/hrVat.ts | 31 + .../src/js/validators/vat/huVat.ts | 36 + .../src/js/validators/vat/ieVat.ts | 63 + .../src/js/validators/vat/index.ts | 279 + .../src/js/validators/vat/isVat.ts | 23 + .../src/js/validators/vat/itVat.ts | 52 + .../src/js/validators/vat/ltVat.ts | 48 + .../src/js/validators/vat/luVat.ts | 30 + .../src/js/validators/vat/lvVat.ts | 70 + .../src/js/validators/vat/mtVat.ts | 36 + .../src/js/validators/vat/nlVat.ts | 33 + .../src/js/validators/vat/noVat.ts | 41 + .../src/js/validators/vat/plVat.ts | 36 + .../src/js/validators/vat/ptVat.ts | 39 + .../src/js/validators/vat/roVat.ts | 38 + .../src/js/validators/vat/rsVat.ts | 40 + .../src/js/validators/vat/ruVat.ts | 71 + .../src/js/validators/vat/seVat.ts | 32 + .../src/js/validators/vat/siVat.ts | 37 + .../src/js/validators/vat/skVat.ts | 30 + .../src/js/validators/vat/veVat.ts | 48 + .../src/js/validators/vat/zaVat.ts | 24 + .../formvalidation/src/js/validators/vin.ts | 92 + .../src/js/validators/zipCode.ts | 286 + .../assets/core/plugins/fslightbox/LICENSE | 21 + .../assets/core/plugins/fslightbox/README.md | 62 + .../core/plugins/fslightbox/fslightbox.js | 1 + .../core/plugins/fslightbox/package.json | 65 + .../core/plugins/jquery-idletimer/LICENSE-MIT | 22 + .../plugins/jquery-idletimer/idle-timer.js | 314 + .../jquery-idletimer/idle-timer.min.js | 2 + .../assets/core/plugins/plugins.dark.scss | 47 + resources/assets/core/plugins/plugins.js | 112 + resources/assets/core/plugins/plugins.scss | 56 + resources/assets/core/plugins/toastr/LICENSE | 21 + .../core/plugins/toastr/build/toastr.css | 248 + .../core/plugins/toastr/build/toastr.js.map | 1 + .../core/plugins/toastr/build/toastr.min.css | 1 + .../core/plugins/toastr/build/toastr.min.js | 2 + .../assets/core/sass/base/_functions.scss | 11 + resources/assets/core/sass/base/_mixins.scss | 11 + .../assets/core/sass/base/functions/_get.scss | 82 + .../core/sass/base/functions/_math.scss | 15 + .../core/sass/base/functions/_mode.scss | 27 + .../assets/core/sass/base/functions/_set.scss | 43 + .../sass/base/functions/_theme-colors.scss | 15 + .../core/sass/base/functions/_valueif.scss | 13 + .../assets/core/sass/base/mixins/_attr.scss | 9 + .../core/sass/base/mixins/_breakpoints.scss | 25 + .../core/sass/base/mixins/_browsers.scss | 10 + .../assets/core/sass/base/mixins/_fixes.scss | 15 + .../core/sass/base/mixins/_placeholder.scss | 16 + .../assets/core/sass/base/mixins/_reset.scss | 23 + .../core/sass/components/_accordion.scss | 62 + .../assets/core/sass/components/_anchor.scss | 37 + .../core/sass/components/_animation.scss | 81 + .../assets/core/sass/components/_badge.scss | 69 + .../assets/core/sass/components/_blockui.scss | 43 + .../core/sass/components/_breadcrumb.scss | 66 + .../assets/core/sass/components/_bullet.scss | 33 + .../assets/core/sass/components/_buttons.scss | 7 + .../assets/core/sass/components/_card.scss | 271 + .../core/sass/components/_carousel.scss | 130 + .../assets/core/sass/components/_code.scss | 15 + .../core/sass/components/_container.scss | 21 + .../core/sass/components/_cookiealert.scss | 8 + .../assets/core/sass/components/_drawer.scss | 62 + .../assets/core/sass/components/_explore.scss | 104 + .../core/sass/components/_feedback.scss | 34 + .../assets/core/sass/components/_fixed.scss | 18 + .../assets/core/sass/components/_forms.scss | 11 + .../assets/core/sass/components/_helpers.scss | 12 + .../core/sass/components/_image-input.scss | 111 + .../core/sass/components/_indicator.scss | 17 + .../assets/core/sass/components/_menu.scss | 7 + .../assets/core/sass/components/_mixins.scss | 15 + .../assets/core/sass/components/_modal.scss | 30 + .../sass/components/_nav-pills-custom.scss | 83 + .../assets/core/sass/components/_nav.scss | 136 + .../assets/core/sass/components/_notice.scss | 13 + .../assets/core/sass/components/_overlay.scss | 39 + .../core/sass/components/_page-loader.scss | 26 + .../core/sass/components/_pagination.scss | 178 + .../assets/core/sass/components/_popover.scss | 37 + .../assets/core/sass/components/_print.scss | 34 + .../core/sass/components/_progress.scss | 27 + .../assets/core/sass/components/_pulse.scss | 39 + .../assets/core/sass/components/_rating.scss | 62 + .../assets/core/sass/components/_ribbon.scss | 195 + .../assets/core/sass/components/_root.scss | 27 + .../assets/core/sass/components/_rotate.scss | 45 + .../assets/core/sass/components/_scroll.scss | 203 + .../core/sass/components/_scrolltop.scss | 68 + .../core/sass/components/_separator.scss | 66 + .../assets/core/sass/components/_shape.scss | 13 + .../assets/core/sass/components/_stepper.scss | 8 + .../core/sass/components/_svg-icon.scss | 30 + .../assets/core/sass/components/_symbol.scss | 105 + .../assets/core/sass/components/_tables.scss | 227 + .../core/sass/components/_timeline-label.scss | 68 + .../core/sass/components/_timeline.scss | 70 + .../assets/core/sass/components/_toasts.scss | 3 + .../assets/core/sass/components/_toggle.scss | 19 + .../assets/core/sass/components/_tooltip.scss | 23 + .../core/sass/components/_utilities.scss | 125 + .../core/sass/components/_variables.scss | 1301 + .../core/sass/components/buttons/_base.scss | 165 + .../core/sass/components/buttons/_theme.scss | 253 + .../core/sass/components/components.scss | 94 + .../components/forms/_floating-labels.scss | 12 + .../sass/components/forms/_form-check.scss | 134 + .../sass/components/forms/_form-control.scss | 80 + .../sass/components/forms/_form-select.scss | 45 + .../sass/components/forms/_input-group.scss | 36 + .../core/sass/components/forms/_required.scss | 14 + .../sass/components/helpers/_background.scss | 223 + .../sass/components/helpers/_borders.scss | 114 + .../core/sass/components/helpers/_flex.scss | 47 + .../sass/components/helpers/_opacity.scss | 18 + .../core/sass/components/helpers/_shadow.scss | 7 + .../core/sass/components/helpers/_text.scss | 161 + .../sass/components/helpers/_transform.scss | 8 + .../core/sass/components/menu/_base.scss | 274 + .../core/sass/components/menu/_theme.scss | 324 + .../core/sass/components/mixins/_buttons.scss | 71 + .../core/sass/components/mixins/_ki.scss | 18 + .../core/sass/components/mixins/_menu.scss | 296 + .../core/sass/components/mixins/_popover.scss | 74 + .../core/sass/components/mixins/_scroll.scss | 26 + .../core/sass/components/mixins/_shape.scss | 29 + .../sass/components/mixins/_svg-bg-icon.scss | 54 + .../sass/components/mixins/_svg-icon.scss | 11 + .../core/sass/components/mixins/_symbol.scss | 42 + .../core/sass/components/mixins/_tooltip.scss | 43 + .../core/sass/components/stepper/_base.scss | 82 + .../core/sass/components/stepper/_links.scss | 56 + .../core/sass/components/stepper/_pills.scss | 172 + resources/assets/core/sass/layout/_base.scss | 48 + .../core/sass/layout/app/_container.scss | 25 + .../assets/core/sass/layout/app/_content.scss | 28 + .../assets/core/sass/layout/app/_footer.scss | 92 + .../assets/core/sass/layout/app/_inner.scss | 8 + .../assets/core/sass/layout/app/_layout.scss | 28 + .../assets/core/sass/layout/app/_navbar.scss | 13 + .../assets/core/sass/layout/app/_page.scss | 7 + .../assets/core/sass/layout/app/_print.scss | 34 + .../assets/core/sass/layout/app/_root.scss | 61 + .../assets/core/sass/layout/app/_toolbar.scss | 159 + .../core/sass/layout/app/_variables.scss | 411 + .../assets/core/sass/layout/app/_wrapper.scss | 87 + .../sass/layout/app/aside/_aside-panel.scss | 245 + .../sass/layout/app/aside/_aside-primary.scss | 205 + .../layout/app/aside/_aside-secondary.scss | 251 + .../core/sass/layout/app/aside/_aside.scss | 265 + .../core/sass/layout/app/aside/_base.scss | 0 .../sass/layout/app/aside/_secondary.scss | 0 .../core/sass/layout/app/aside/_tertiary.scss | 0 .../core/sass/layout/app/content/_base.scss | 0 .../core/sass/layout/app/footer/_base.scss | 0 .../core/sass/layout/app/footer/_primary.scss | 0 .../sass/layout/app/footer/_secondary.scss | 0 .../core/sass/layout/app/header/_base.scss | 0 .../layout/app/header/_header-mobile.scss | 77 + .../layout/app/header/_header-primary.scss | 107 + .../layout/app/header/_header-secondary.scss | 113 + .../core/sass/layout/app/header/_header.scss | 170 + .../core/sass/layout/app/header/_mobile.scss | 0 .../core/sass/layout/app/header/_primary.scss | 0 .../sass/layout/app/header/_secondary.scss | 0 .../layout/app/mixins/_layout-minimize.scss | 29 + .../layout/app/mixins/_layout-transition.scss | 7 + .../core/sass/layout/app/page/_base.scss | 0 .../core/sass/layout/app/page/_container.scss | 0 .../core/sass/layout/app/page/_print.scss | 35 + .../core/sass/layout/app/sidebar/_base.scss | 0 .../sass/layout/app/sidebar/_primary.scss | 0 .../sass/layout/app/sidebar/_secondary.scss | 0 .../sass/layout/app/sidebar/_tertiary.scss | 0 .../core/sass/layout/app/toolbar/_base.scss | 0 .../sass/vendors/plugins/_apexcharts.scss | 138 + .../vendors/plugins/_bootstrap-maxlength.scss | 15 + .../sass/vendors/plugins/_datatables.scss | 174 + .../vendors/plugins/_daterangepicker.scss | 273 + .../core/sass/vendors/plugins/_draggable.scss | 28 + .../core/sass/vendors/plugins/_dropzone.scss | 177 + .../core/sass/vendors/plugins/_flatpickr.scss | 407 + .../sass/vendors/plugins/_formvalidation.scss | 19 + .../sass/vendors/plugins/_fslightbox.scss | 11 + .../sass/vendors/plugins/_fullcalendar.scss | 297 + .../core/sass/vendors/plugins/_jkanban.scss | 94 + .../core/sass/vendors/plugins/_jstree.scss | 150 + .../core/sass/vendors/plugins/_mixins.scss | 7 + .../sass/vendors/plugins/_nouislider.scss | 102 + .../vendors/plugins/_plugins.angular.scss | 11 + .../sass/vendors/plugins/_plugins.react.scss | 11 + .../core/sass/vendors/plugins/_plugins.scss | 27 + .../sass/vendors/plugins/_plugins.vue.scss | 11 + .../core/sass/vendors/plugins/_prismjs.scss | 91 + .../core/sass/vendors/plugins/_quill.scss | 185 + .../core/sass/vendors/plugins/_recaptcha.scss | 32 + .../core/sass/vendors/plugins/_select2.scss | 316 + .../sass/vendors/plugins/_summernote.scss | 157 + .../sass/vendors/plugins/_sweetalert2.scss | 112 + .../core/sass/vendors/plugins/_tagify.scss | 156 + .../sass/vendors/plugins/_tiny-slider.scss | 109 + .../core/sass/vendors/plugins/_toastr.scss | 84 + .../core/sass/vendors/plugins/_variables.scss | 8 + .../sass/vendors/plugins/_vis-timeline.scss | 131 + .../vendors/plugins/mixins/_nouislider.scss | 13 + .../sass/vendors/plugins/mixins/_select2.scss | 39 + .../sass/vendors/plugins/mixins/_tagify.scss | 37 + resources/assets/demo1/js/custom/intro.js | 189 + resources/assets/demo1/js/custom/landing.js | 29 + resources/assets/demo1/js/custom/widgets.js | 3437 ++ resources/assets/demo1/js/layout/aside.js | 42 + resources/assets/demo1/js/layout/toolbar.js | 74 + resources/assets/demo1/js/scripts.js | 17 + .../assets/demo1/media/logos/favicon.ico | Bin 0 -> 15086 bytes .../assets/demo1/media/logos/logo_dark@2x.png | Bin 0 -> 19995 bytes .../demo1/media/logos/logo_light@2x.png | Bin 0 -> 18129 bytes resources/assets/demo1/media/misc/outdoor.png | Bin 0 -> 121622 bytes .../assets/demo1/media/misc/pattern-1.jpg | Bin 0 -> 11148 bytes .../assets/demo1/media/misc/pattern-2.png | Bin 0 -> 514872 bytes .../assets/demo1/media/misc/pattern-4.jpg | Bin 0 -> 45718 bytes .../assets/demo1/media/misc/portfolio.png | Bin 0 -> 110898 bytes .../assets/demo1/media/misc/preview-1.jpg | Bin 0 -> 64446 bytes .../assets/demo1/media/misc/preview-2.jpg | Bin 0 -> 56239 bytes .../assets/demo1/media/misc/preview-3.jpg | Bin 0 -> 52964 bytes resources/assets/demo1/media/misc/qr-code.png | Bin 0 -> 3123 bytes .../assets/demo1/media/misc/search-bg.png | Bin 0 -> 514872 bytes .../demo1/media/plugins/jstree/32px.png | Bin 0 -> 2387 bytes resources/assets/demo1/sass/_init.scss | 26 + .../sass/components/_item-hover-custom.scss | 29 + .../demo1/sass/components/_landing.scss | 136 + .../sass/components/_nouislider-custom.scss | 16 + .../sass/components/_placeholder-custom.scss | 7 + .../demo1/sass/components/_stepper-links.scss | 56 + .../sass/components/_timeline-label.scss | 68 + .../sass/components/_variables.custom.scss | 44 + .../demo1/sass/components/components.scss | 6 + .../assets/demo1/sass/layout/_content.scss | 27 + .../assets/demo1/sass/layout/_footer.scss | 7 + .../assets/demo1/sass/layout/_header.scss | 95 + .../assets/demo1/sass/layout/_layout.scss | 14 + resources/assets/demo1/sass/layout/_main.scss | 75 + .../assets/demo1/sass/layout/_print.scss | 34 + .../assets/demo1/sass/layout/_toolbar.scss | 84 + .../assets/demo1/sass/layout/_variables.scss | 77 + .../assets/demo1/sass/layout/aside/_base.scss | 201 + .../assets/demo1/sass/layout/aside/_menu.scss | 63 + resources/assets/demo1/sass/plugins.dark.scss | 16 + resources/assets/demo1/sass/plugins.scss | 16 + resources/assets/demo1/sass/style.dark.scss | 16 + resources/assets/demo1/sass/style.scss | 16 + resources/assets/extended/button-ajax.js | 26 + .../account/settings/profile-details.js | 178 + .../custom/account/settings/signin-methods.js | 296 + .../password-reset/new-password.js | 174 + .../password-reset/password-reset.js | 131 + .../custom/authentication/sign-in/general.js | 143 + .../custom/authentication/sign-up/general.js | 205 + .../modals/two-factor-authentication.js | 266 + .../permissions/add-permission.js | 166 + .../user-management/permissions/list.js | 117 + .../permissions/update-permission.js | 166 + .../custom/user-management/roles/list/add.js | 185 + .../user-management/roles/list/update-role.js | 183 + .../user-management/roles/view/update-role.js | 183 + .../custom/user-management/roles/view/view.js | 225 + .../custom/user-management/users/list/add.js | 183 + .../users/list/export-users.js | 170 + .../user-management/users/list/table.js | 317 + .../users/view/add-auth-app.js | 81 + .../users/view/add-one-time-password.js | 173 + .../users/view/add-schedule.js | 223 + .../user-management/users/view/add-task.js | 324 + .../users/view/update-details.js | 132 + .../users/view/update-email.js | 166 + .../users/view/update-password.js | 194 + .../user-management/users/view/update-role.js | 132 + .../custom/user-management/users/view/view.js | 234 + .../assets/extended/js/custom/widgets.js | 3047 ++ .../js/vendors/plugins/datatables.init.js | 221 + resources/lang/en/auth.php | 20 + resources/lang/en/pagination.php | 19 + resources/lang/en/passwords.php | 22 + resources/lang/en/validation.php | 189 + .../views/auth/confirm-password.blade.php | 41 + .../views/auth/forgot-password.blade.php | 41 + resources/views/auth/layout.blade.php | 27 + resources/views/auth/login.blade.php | 106 + resources/views/auth/register.blade.php | 144 + resources/views/auth/reset-password.blade.php | 96 + resources/views/auth/verify-email.blade.php | 46 + resources/views/base/base.blade.php | 183 + .../views/layout/demo1/_content.blade.php | 5 + .../views/layout/demo1/_footer.blade.php | 28 + .../views/layout/demo1/_scrolltop.blade.php | 5 + .../views/layout/demo1/aside/_base.blade.php | 52 + .../views/layout/demo1/aside/_menu.blade.php | 23 + .../layout/demo1/header/__topbar.blade.php | 77 + .../views/layout/demo1/header/_base.blade.php | 57 + .../views/layout/demo1/header/_menu.blade.php | 28 + resources/views/layout/demo1/master.blade.php | 51 + .../demo1/page-title/_default.blade.php | 75 + .../layout/demo1/page-title/_select.blade.php | 37 + .../demo1/toolbars/_toolbar-1.blade.php | 35 + .../views/pages/account/_navbar.blade.php | 172 + .../pages/account/overview/_details.blade.php | 134 + .../pages/account/overview/overview.blade.php | 39 + .../settings/_profile-details.blade.php | 300 + .../account/settings/_signin-method.blade.php | 133 + .../pages/account/settings/settings.blade.php | 9 + .../views/pages/admin/games/clone.blade.php | 382 + .../views/pages/admin/games/create.blade.php | 383 + .../views/pages/admin/games/edit.blade.php | 400 + .../views/pages/admin/games/index.blade.php | 56 + .../views/pages/contact-us/index.blade.php | 34 + .../views/pages/game-lists/create.blade.php | 469 + .../views/pages/game-lists/edit.blade.php | 488 + .../views/pages/game-lists/index.blade.php | 1053 + .../views/pages/game-reviews/index.blade.php | 37 + resources/views/pages/game/index.blade.php | 227 + resources/views/pages/index.blade.php | 49 + .../pages/misc/newly-added-games.blade.php | 36 + .../pages/misc/recent-gamer-updates.blade.php | 36 + .../views/pages/platforms/index.blade.php | 34 + .../views/pages/platforms/show.blade.php | 106 + .../pages/privacy-policy/index.blade.php | 59 + resources/views/pages/profile/index.blade.php | 157 + .../views/pages/search/games/show.blade.php | 108 + resources/views/pages/support/index.blade.php | 35 + .../support/knowledgebase/index.blade.php | 35 + .../pages/terms-of-service/index.blade.php | 98 + .../views/pages/wishlist/index.blade.php | 69 + .../admin/games/_toasts.blade.php | 55 + ...create_start_finish_date_pickers.blade.php | 25 + .../_data-tables-games-list.blade.php | 157 + .../game-lists/_data-tables-user.blade.php | 157 + .../_edit_start_finish_date_pickers.blade.php | 23 + .../game-lists/_toasts.blade.php | 55 + .../general/_button-indicator.blade.php | 14 + .../partials/general/_donate-block.blade.php | 14 + .../_most-popular-games-block.blade.php | 8 + .../views/partials/general/_notice.blade.php | 49 + .../partials/general/_pagination.blade.php | 40 + .../_recent-user-updates-block.blade.php | 8 + .../views/partials/menus/_menu-1.blade.php | 95 + .../views/partials/menus/_menu-2.blade.php | 90 + .../views/partials/menus/_menu-3.blade.php | 107 + .../two-factor-authentication/_main.blade.php | 35 + .../partials/_app.blade.php | 58 + .../partials/_options.blade.php | 43 + .../partials/_sms.blade.php | 37 + .../views/partials/search/_base.blade.php | 45 + .../views/partials/search/_dropdown.blade.php | 47 + .../partials/_advanced-options.blade.php | 135 + .../partials/search/partials/_empty.blade.php | 16 + .../partials/search/partials/_form.blade.php | 43 + .../partials/search/partials/_main.blade.php | 76 + .../search/partials/_preferences.blade.php | 70 + .../search/partials/_results.blade.php | 167 + .../partials/theme-mode/__menu.blade.php | 33 + .../views/partials/theme-mode/_main.blade.php | 16 + .../partials/topbar/_user-menu.blade.php | 152 + .../widgets/charts/_widget-1.blade.php | 34 + .../widgets/charts/_widget-2.blade.php | 31 + .../widgets/charts/_widget-3.blade.php | 31 + .../widgets/charts/_widget-4.blade.php | 31 + .../widgets/charts/_widget-5.blade.php | 31 + .../widgets/charts/_widget-6.blade.php | 29 + .../widgets/charts/_widget-7.blade.php | 31 + .../widgets/charts/_widget-8.blade.php | 31 + .../widgets/lists/_widget-1.blade.php | 84 + .../widgets/lists/_widget-2.blade.php | 73 + .../widgets/lists/_widget-3.blade.php | 85 + .../widgets/lists/_widget-4.blade.php | 104 + .../widgets/lists/_widget-5.blade.php | 191 + .../widgets/lists/_widget-6.blade.php | 80 + .../widgets/lists/_widget-7.blade.php | 85 + .../widgets/lists/_widget-8.blade.php | 95 + .../widgets/mixed/_widget-1.blade.php | 110 + .../widgets/mixed/_widget-10.blade.php | 29 + .../widgets/mixed/_widget-2.blade.php | 79 + .../widgets/mixed/_widget-3.blade.php | 101 + .../widgets/mixed/_widget-4.blade.php | 45 + .../widgets/mixed/_widget-5.blade.php | 121 + .../widgets/mixed/_widget-6.blade.php | 131 + .../widgets/mixed/_widget-7.blade.php | 32 + .../widgets/mixed/_widget-8.blade.php | 82 + .../widgets/mixed/_widget-9.blade.php | 51 + .../widgets/tables/_widget-1.blade.php | 149 + .../widgets/tables/_widget-10.blade.php | 155 + .../widgets/tables/_widget-11.blade.php | 189 + .../widgets/tables/_widget-12.blade.php | 227 + .../widgets/tables/_widget-13.blade.php | 233 + .../widgets/tables/_widget-2.blade.php | 150 + .../widgets/tables/_widget-3.blade.php | 126 + .../widgets/tables/_widget-4.blade.php | 217 + .../widgets/tables/_widget-5.blade.php | 258 + .../widgets/tables/_widget-6.blade.php | 257 + .../widgets/tables/_widget-7.blade.php | 295 + .../widgets/tables/_widget-8.blade.php | 242 + .../widgets/tables/_widget-9.blade.php | 189 + .../views/vendor/datatables/print.blade.php | 37 + .../views/vendor/datatables/script.blade.php | 20 + .../vendor/pagination/bootstrap-4.blade.php | 46 + .../vendor/pagination/bootstrap-5.blade.php | 88 + .../views/vendor/pagination/default.blade.php | 46 + .../vendor/pagination/semantic-ui.blade.php | 36 + .../pagination/simple-bootstrap-4.blade.php | 27 + .../pagination/simple-bootstrap-5.blade.php | 29 + .../pagination/simple-default.blade.php | 19 + .../pagination/simple-tailwind.blade.php | 25 + .../vendor/pagination/tailwind.blade.php | 106 + routes/api.php | 21 + routes/auth.php | 64 + routes/channels.php | 18 + routes/console.php | 19 + routes/web.php | 199 + server.php | 21 + storage/app/.gitignore | 3 + storage/app/public/.gitignore | 2 + storage/debugbar/.gitignore | 2 + storage/framework/.gitignore | 9 + storage/framework/cache/.gitignore | 3 + storage/framework/cache/data/.gitignore | 2 + storage/framework/sessions/.gitignore | 2 + storage/framework/testing/.gitignore | 2 + storage/framework/views/.gitignore | 2 + storage/logs/.gitignore | 2 + storage/settings.json | 1 + tests/CreatesApplication.php | 22 + tests/Feature/AuthenticationTest.php | 45 + tests/Feature/EmailVerificationTest.php | 65 + tests/Feature/ExampleTest.php | 21 + tests/Feature/PasswordConfirmationTest.php | 44 + tests/Feature/PasswordResetTest.php | 71 + tests/Feature/RegistrationTest.php | 32 + tests/Feature/SystemLogTest.php | 22 + tests/TestCase.php | 10 + tests/Unit/ExampleTest.php | 18 + webpack.mix.js | 222 + 2043 files changed, 215154 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitattributes create mode 100644 .gitignore create mode 100644 .phpcs.xml create mode 100644 .styleci.yml create mode 100644 app/Console/Kernel.php create mode 100644 app/Core/Adapters/BootstrapBase.php create mode 100644 app/Core/Adapters/Menu.php create mode 100644 app/Core/Adapters/Theme.php create mode 100644 app/Core/Adapters/Util.php create mode 100644 app/Core/Bootstraps/BootstrapDemo1.php create mode 100644 app/Core/Bootstraps/BootstrapDemo2.php create mode 100644 app/Core/Bootstraps/BootstrapDemo3.php create mode 100644 app/Core/Bootstraps/BootstrapDemo4.php create mode 100644 app/Core/Bootstraps/BootstrapDemo5.php create mode 100644 app/Core/Bootstraps/BootstrapDemo6.php create mode 100644 app/Core/Bootstraps/BootstrapDemo7.php create mode 100644 app/Core/Bootstraps/BootstrapDemo8.php create mode 100644 app/Core/Bootstraps/BootstrapDemo9.php create mode 100644 app/Core/Components.php create mode 100644 app/Core/Data.php create mode 100644 app/Core/Menu.php create mode 100644 app/Core/Theme.php create mode 100644 app/Core/Traits/SpatieLogsActivity.php create mode 100644 app/Core/Util.php create mode 100644 app/DataTables/Logs/AuditLogsDataTable.php create mode 100644 app/DataTables/Logs/SystemLogsDataTable.php create mode 100644 app/Exceptions/Handler.php create mode 100644 app/Helpers/Game.php create mode 100644 app/Helpers/GameList.php create mode 100644 app/Helpers/Platform.php create mode 100644 app/Helpers/User.php create mode 100644 app/Http/Controllers/Account/SettingsController.php create mode 100644 app/Http/Controllers/Auth/AuthenticatedSessionController.php create mode 100644 app/Http/Controllers/Auth/ConfirmablePasswordController.php create mode 100644 app/Http/Controllers/Auth/EmailVerificationNotificationController.php create mode 100644 app/Http/Controllers/Auth/EmailVerificationPromptController.php create mode 100644 app/Http/Controllers/Auth/NewPasswordController.php create mode 100644 app/Http/Controllers/Auth/PasswordResetLinkController.php create mode 100644 app/Http/Controllers/Auth/RegisteredUserController.php create mode 100644 app/Http/Controllers/Auth/VerifyEmailController.php create mode 100644 app/Http/Controllers/ConsoleListController.php create mode 100644 app/Http/Controllers/Controller.php create mode 100644 app/Http/Controllers/GameCommentController.php create mode 100644 app/Http/Controllers/GameController.php create mode 100644 app/Http/Controllers/GameListController.php create mode 100644 app/Http/Controllers/GameSearchController.php create mode 100644 app/Http/Controllers/GenreController.php create mode 100644 app/Http/Controllers/Logs/AuditLogsController.php create mode 100644 app/Http/Controllers/Logs/SystemLogsController.php create mode 100644 app/Http/Controllers/PlatformController.php create mode 100644 app/Http/Controllers/ProfileCommentController.php create mode 100644 app/Http/Controllers/RoleController.php create mode 100644 app/Http/Controllers/UserController.php create mode 100644 app/Http/Controllers/UserGamerTagController.php create mode 100644 app/Http/Controllers/UserInfoController.php create mode 100644 app/Http/Controllers/UserNotificationSettingController.php create mode 100644 app/Http/Controllers/UserSiteSettingController.php create mode 100644 app/Http/Controllers/WishlistController.php create mode 100644 app/Http/Kernel.php create mode 100644 app/Http/Middleware/Authenticate.php create mode 100644 app/Http/Middleware/DevMiddleware.php create mode 100644 app/Http/Middleware/EncryptCookies.php create mode 100644 app/Http/Middleware/PreventRequestsDuringMaintenance.php create mode 100644 app/Http/Middleware/RedirectIfAuthenticated.php create mode 100644 app/Http/Middleware/TrimStrings.php create mode 100644 app/Http/Middleware/TrustHosts.php create mode 100644 app/Http/Middleware/TrustProxies.php create mode 100644 app/Http/Middleware/VerifyCsrfToken.php create mode 100644 app/Http/Requests/Account/SettingsEmailRequest.php create mode 100644 app/Http/Requests/Account/SettingsInfoRequest.php create mode 100644 app/Http/Requests/Account/SettingsPasswordRequest.php create mode 100644 app/Http/Requests/Auth/LoginRequest.php create mode 100644 app/Models/ConsoleList.php create mode 100644 app/Models/Game.php create mode 100644 app/Models/GameComment.php create mode 100644 app/Models/GameList.php create mode 100644 app/Models/Genre.php create mode 100644 app/Models/Platform.php create mode 100644 app/Models/ProfileComment.php create mode 100644 app/Models/Role.php create mode 100644 app/Models/User.php create mode 100644 app/Models/UserGamerTag.php create mode 100644 app/Models/UserInfo.php create mode 100644 app/Models/UserNotificationSetting.php create mode 100644 app/Models/UserSiteSetting.php create mode 100644 app/Models/Wishlist.php create mode 100644 app/Policies/GameListPolicy.php create mode 100644 app/Policies/GamePolicy.php create mode 100644 app/Policies/UserPolicy.php create mode 100644 app/Policies/UserSiteSettingPolicy.php create mode 100644 app/Providers/AppServiceProvider.php create mode 100644 app/Providers/AuthServiceProvider.php create mode 100644 app/Providers/BroadcastServiceProvider.php create mode 100644 app/Providers/EventServiceProvider.php create mode 100644 app/Providers/HelperServiceProvider.php create mode 100644 app/Providers/RouteServiceProvider.php create mode 100644 app/Rules/GameReleaseDate.php create mode 100644 app/Rules/GameReleaseDates.php create mode 100644 app/Rules/MatchOldPassword.php create mode 100644 app/View/Components/AuthLayout.php create mode 100644 app/View/Components/BaseLayout.php create mode 100644 app/helpers.php create mode 100644 artisan create mode 100644 bootstrap/app.php create mode 100644 bootstrap/cache/.gitignore create mode 100644 composer.json create mode 100644 config/activitylog.php create mode 100644 config/app.php create mode 100644 config/auth.php create mode 100644 config/broadcasting.php create mode 100644 config/cache.php create mode 100644 config/cors.php create mode 100644 config/database.php create mode 100644 config/datatables-buttons.php create mode 100644 config/datatables-html.php create mode 100644 config/datatables.php create mode 100644 config/debugbar.php create mode 100644 config/demo1/general.php create mode 100644 config/demo1/menu.php create mode 100644 config/demo1/pages.php create mode 100644 config/filesystems.php create mode 100644 config/global/general.php create mode 100644 config/global/menu.php create mode 100644 config/global/pages.php create mode 100644 config/hashing.php create mode 100644 config/logging.php create mode 100644 config/mail.php create mode 100644 config/paginateroute.php create mode 100644 config/queue.php create mode 100644 config/sentry.php create mode 100644 config/services.php create mode 100644 config/session.php create mode 100644 config/settings.php create mode 100644 config/view.php create mode 100644 database/.gitignore create mode 100644 database/factories/UserFactory.php create mode 100644 database/migrations/2014_10_12_000000_create_users_table.php create mode 100644 database/migrations/2014_10_12_100000_create_password_resets_table.php create mode 100644 database/migrations/2019_08_19_000000_create_failed_jobs_table.php create mode 100644 database/migrations/2022_04_20_215729_create_user_gamer_tags_table.php create mode 100644 database/migrations/2022_04_20_220228_create_user_infos_table.php create mode 100644 database/migrations/2022_04_22_161837_create_user_notification_settings_table.php create mode 100644 database/migrations/2022_04_22_165321_create_roles_table.php create mode 100644 database/migrations/2022_04_25_160814_create_games_table.php create mode 100644 database/migrations/2022_04_25_160900_create_game_lists_table.php create mode 100644 database/migrations/2022_04_25_165235_create_console_lists_table.php create mode 100644 database/migrations/2022_04_25_165247_create_platforms_table.php create mode 100644 database/migrations/2022_04_25_165730_create_profile_comments_table.php create mode 100644 database/migrations/2022_04_25_165743_create_game_comments_table.php create mode 100644 database/migrations/2022_04_25_170219_create_genres_table.php create mode 100644 database/migrations/2022_05_03_184358_add_list_views_column_to_users_table.php create mode 100644 database/migrations/2022_05_04_180713_add_name_and_platform_id_columns_to_game_lists_table.php create mode 100644 database/migrations/2022_05_07_150203_create_activity_log_table.php create mode 100644 database/migrations/2022_05_07_150204_add_event_column_to_activity_log_table.php create mode 100644 database/migrations/2022_05_07_150205_add_batch_uuid_column_to_activity_log_table.php create mode 100644 database/migrations/2022_06_21_193217_create_user_site_settings_table.php create mode 100644 database/migrations/2023_01_04_183036_create_wishlists_table.php create mode 100644 database/seeders/DatabaseSeeder.php create mode 100644 database/seeders/PermissionsSeeder.php create mode 100644 database/seeders/RolesSeeder.php create mode 100644 database/seeders/UsersSeeder.php create mode 100644 docker-compose.yml create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 phpunit.xml create mode 100644 public/.htaccess create mode 100644 public/favicon.ico create mode 100644 public/icon_replacement.txt create mode 100644 public/index.php create mode 100644 public/mix-manifest.json create mode 100644 public/robots.txt create mode 100644 public/vendor/datatables/buttons.server-side.js create mode 100644 public/web.config create mode 100644 resources/assets/core/js/components/blockui.js create mode 100644 resources/assets/core/js/components/cookie.js create mode 100644 resources/assets/core/js/components/dialer.js create mode 100644 resources/assets/core/js/components/drawer.js create mode 100644 resources/assets/core/js/components/event-handler.js create mode 100644 resources/assets/core/js/components/feedback.js create mode 100644 resources/assets/core/js/components/image-input.js create mode 100644 resources/assets/core/js/components/menu.js create mode 100644 resources/assets/core/js/components/password-meter.js create mode 100644 resources/assets/core/js/components/scroll.js create mode 100644 resources/assets/core/js/components/scrolltop.js create mode 100644 resources/assets/core/js/components/search.js create mode 100644 resources/assets/core/js/components/stepper.js create mode 100644 resources/assets/core/js/components/sticky.js create mode 100644 resources/assets/core/js/components/swapper.js create mode 100644 resources/assets/core/js/components/toggle.js create mode 100644 resources/assets/core/js/components/util.js create mode 100644 resources/assets/core/js/custom/account/api-keys/api-keys.js create mode 100644 resources/assets/core/js/custom/account/orders/classic.js create mode 100644 resources/assets/core/js/custom/account/security/license-usage.js create mode 100644 resources/assets/core/js/custom/account/security/security-summary.js create mode 100644 resources/assets/core/js/custom/account/settings/deactivate-account.js create mode 100644 resources/assets/core/js/custom/account/settings/overview.js create mode 100644 resources/assets/core/js/custom/account/settings/profile-details.js create mode 100644 resources/assets/core/js/custom/account/settings/signin-methods.js create mode 100644 resources/assets/core/js/custom/apps/calendar/calendar.js create mode 100644 resources/assets/core/js/custom/apps/chat/chat.js create mode 100644 resources/assets/core/js/custom/apps/inbox/compose.js create mode 100644 resources/assets/core/js/custom/apps/inbox/listing.js create mode 100644 resources/assets/core/js/custom/apps/inbox/reply.js create mode 100644 resources/assets/core/js/custom/apps/invoices/create.js create mode 100644 resources/assets/core/js/custom/apps/subscriptions/add/advanced.js create mode 100644 resources/assets/core/js/custom/apps/subscriptions/add/customer-select.js create mode 100644 resources/assets/core/js/custom/apps/subscriptions/add/products.js create mode 100644 resources/assets/core/js/custom/apps/subscriptions/list/export.js create mode 100644 resources/assets/core/js/custom/apps/subscriptions/list/list.js create mode 100644 resources/assets/core/js/custom/apps/support-center/tickets/create.js create mode 100644 resources/assets/core/js/custom/apps/user-management/permissions/add-permission.js create mode 100644 resources/assets/core/js/custom/apps/user-management/permissions/list.js create mode 100644 resources/assets/core/js/custom/apps/user-management/permissions/update-permission.js create mode 100644 resources/assets/core/js/custom/apps/user-management/roles/list/add.js create mode 100644 resources/assets/core/js/custom/apps/user-management/roles/list/update-role.js create mode 100644 resources/assets/core/js/custom/apps/user-management/roles/view/update-role.js create mode 100644 resources/assets/core/js/custom/apps/user-management/roles/view/view.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/list/add.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/list/export-users.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/list/table.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/add-auth-app.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/add-one-time-password.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/add-schedule.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/add-task.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/update-details.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/update-email.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/update-password.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/update-role.js create mode 100644 resources/assets/core/js/custom/apps/user-management/users/view/view.js create mode 100644 resources/assets/core/js/custom/pages/pricing/general.js create mode 100644 resources/assets/core/js/custom/pages/user-profile/followers.js create mode 100644 resources/assets/core/js/custom/utilities/modals/bidding.js create mode 100644 resources/assets/core/js/custom/utilities/modals/create-account.js create mode 100644 resources/assets/core/js/custom/utilities/modals/create-api-key.js create mode 100644 resources/assets/core/js/custom/utilities/modals/create-project.js create mode 100644 resources/assets/core/js/custom/utilities/modals/two-factor-authentication.js create mode 100644 resources/assets/core/js/custom/utilities/modals/upgrade-plan.js create mode 100644 resources/assets/core/js/custom/utilities/modals/users-search.js create mode 100644 resources/assets/core/js/custom/utilities/search/horizontal.js create mode 100644 resources/assets/core/js/layout/app.js create mode 100644 resources/assets/core/js/layout/search.js create mode 100644 resources/assets/core/js/vendors/plugins/apexchart.init.js create mode 100644 resources/assets/core/js/vendors/plugins/bootstrap-markdown.init.js create mode 100644 resources/assets/core/js/vendors/plugins/datatables.init.js create mode 100644 resources/assets/core/js/vendors/plugins/dropzone.init.js create mode 100644 resources/assets/core/js/vendors/plugins/flatpickr.init.js create mode 100644 resources/assets/core/js/vendors/plugins/prism.init.js create mode 100644 resources/assets/core/js/vendors/plugins/select2.init.js create mode 100644 resources/assets/core/js/vendors/plugins/sweetalert2.init.js create mode 100644 resources/assets/core/js/widgets/cards/widget-1.js create mode 100644 resources/assets/core/js/widgets/cards/widget-10.js create mode 100644 resources/assets/core/js/widgets/cards/widget-12.js create mode 100644 resources/assets/core/js/widgets/cards/widget-13.js create mode 100644 resources/assets/core/js/widgets/cards/widget-17.js create mode 100644 resources/assets/core/js/widgets/cards/widget-4.js create mode 100644 resources/assets/core/js/widgets/cards/widget-6.js create mode 100644 resources/assets/core/js/widgets/cards/widget-8.js create mode 100644 resources/assets/core/js/widgets/cards/widget-9.js create mode 100644 resources/assets/core/js/widgets/charts/widget-1.js create mode 100644 resources/assets/core/js/widgets/charts/widget-10.js create mode 100644 resources/assets/core/js/widgets/charts/widget-11.js create mode 100644 resources/assets/core/js/widgets/charts/widget-12.js create mode 100644 resources/assets/core/js/widgets/charts/widget-13.js create mode 100644 resources/assets/core/js/widgets/charts/widget-14.js create mode 100644 resources/assets/core/js/widgets/charts/widget-15.js create mode 100644 resources/assets/core/js/widgets/charts/widget-16.js create mode 100644 resources/assets/core/js/widgets/charts/widget-17.js create mode 100644 resources/assets/core/js/widgets/charts/widget-18.js create mode 100644 resources/assets/core/js/widgets/charts/widget-19.js create mode 100644 resources/assets/core/js/widgets/charts/widget-2.js create mode 100644 resources/assets/core/js/widgets/charts/widget-20.js create mode 100644 resources/assets/core/js/widgets/charts/widget-21.js create mode 100644 resources/assets/core/js/widgets/charts/widget-22.js create mode 100644 resources/assets/core/js/widgets/charts/widget-23.js create mode 100644 resources/assets/core/js/widgets/charts/widget-24.js create mode 100644 resources/assets/core/js/widgets/charts/widget-25.js create mode 100644 resources/assets/core/js/widgets/charts/widget-26.js create mode 100644 resources/assets/core/js/widgets/charts/widget-27.js create mode 100644 resources/assets/core/js/widgets/charts/widget-28.js create mode 100644 resources/assets/core/js/widgets/charts/widget-29.js create mode 100644 resources/assets/core/js/widgets/charts/widget-3.js create mode 100644 resources/assets/core/js/widgets/charts/widget-30.js create mode 100644 resources/assets/core/js/widgets/charts/widget-31.js create mode 100644 resources/assets/core/js/widgets/charts/widget-32.js create mode 100644 resources/assets/core/js/widgets/charts/widget-33.js create mode 100644 resources/assets/core/js/widgets/charts/widget-34.js create mode 100644 resources/assets/core/js/widgets/charts/widget-35.js create mode 100644 resources/assets/core/js/widgets/charts/widget-4.js create mode 100644 resources/assets/core/js/widgets/charts/widget-5.js create mode 100644 resources/assets/core/js/widgets/charts/widget-6.js create mode 100644 resources/assets/core/js/widgets/charts/widget-7.js create mode 100644 resources/assets/core/js/widgets/charts/widget-8.js create mode 100644 resources/assets/core/js/widgets/charts/widget-9.js create mode 100644 resources/assets/core/js/widgets/forms/widget-1.js create mode 100644 resources/assets/core/js/widgets/lists/widget-24.js create mode 100644 resources/assets/core/js/widgets/sliders/widget-1.js create mode 100644 resources/assets/core/js/widgets/sliders/widget-3.js create mode 100644 resources/assets/core/js/widgets/tables/widget-14.js create mode 100644 resources/assets/core/js/widgets/tables/widget-3.js create mode 100644 resources/assets/core/js/widgets/tables/widget-4.js create mode 100644 resources/assets/core/js/widgets/tables/widget-5.js create mode 100644 resources/assets/core/js/widgets/timeline/widget-1.js create mode 100644 resources/assets/core/js/widgets/timeline/widget-2.js create mode 100644 resources/assets/core/js/widgets/timeline/widget-4.js create mode 100644 resources/assets/core/media/avatars/default.png create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs001.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs002.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs003.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs004.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs005.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs006.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs007.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs008.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs009.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs010.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs011.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs012.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs013.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs014.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs015.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs016.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs017.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs018.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs019.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs020.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs021.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs022.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs023.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs024.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs025.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs026.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs027.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs028.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs029.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs030.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs031.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs032.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs033.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs034.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs035.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs036.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs037.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs038.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs039.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs040.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs041.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs042.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs043.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs044.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs045.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs046.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs047.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs048.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs049.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs050.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs051.svg create mode 100644 resources/assets/core/media/icons/duotune/abstract/abs052.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr001.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr002.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr003.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr004.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr005.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr006.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr007.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr008.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr009.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr010.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr011.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr012.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr013.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr014.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr015.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr016.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr017.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr018.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr019.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr020.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr021.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr022.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr023.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr024.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr025.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr026.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr027.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr028.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr029.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr030.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr031.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr032.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr033.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr034.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr035.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr036.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr037.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr038.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr039.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr040.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr041.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr042.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr043.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr044.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr045.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr046.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr047.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr048.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr049.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr050.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr051.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr052.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr053.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr054.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr055.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr056.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr057.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr058.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr059.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr060.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr061.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr062.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr063.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr064.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr065.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr066.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr067.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr068.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr069.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr070.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr071.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr072.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr073.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr074.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr075.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr076.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr077.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr078.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr079.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr080.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr081.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr082.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr084.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr085.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr086.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr087.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr088.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr089.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr090.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr091.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr092.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr093.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr094.svg create mode 100644 resources/assets/core/media/icons/duotune/arrows/arr095.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art001.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art002.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art003.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art004.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art005.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art006.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art007.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art008.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art009.svg create mode 100644 resources/assets/core/media/icons/duotune/art/art010.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod001.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod002.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod003.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod004.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod005.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod006.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod007.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod008.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod009.svg create mode 100644 resources/assets/core/media/icons/duotune/coding/cod010.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com001.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com002.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com003.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com004.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com005.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com006.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com007.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com008.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com009.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com010.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com011.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com012.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com013.svg create mode 100644 resources/assets/core/media/icons/duotune/communication/com014.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm001.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm002.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm003.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm004.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm005.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm006.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm007.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm008.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm009.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm010.svg create mode 100644 resources/assets/core/media/icons/duotune/ecommerce/ecm011.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc001.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc002.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc003.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc004.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc005.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc006.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc007.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc008.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc009.svg create mode 100644 resources/assets/core/media/icons/duotune/electronics/elc010.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil001.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil002.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil003.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil004.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil005.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil006.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil007.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil008.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil009.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil010.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil011.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil012.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil013.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil014.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil015.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil016.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil017.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil018.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil019.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil020.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil021.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil022.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil023.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil024.svg create mode 100644 resources/assets/core/media/icons/duotune/files/fil025.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin001.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin002.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin003.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin004.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin005.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin006.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin007.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin008.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin009.svg create mode 100644 resources/assets/core/media/icons/duotune/finance/fin010.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen001.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen002.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen003.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen004.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen005.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen006.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen007.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen008.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen009.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen010.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen011.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen012.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen013.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen014.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen015.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen016.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen017.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen018.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen019.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen020.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen021.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen022.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen023.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen024.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen025.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen026.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen027.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen028.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen029.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen030.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen031.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen032.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen033.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen034.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen035.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen036.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen037.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen038.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen039.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen040.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen041.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen042.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen043.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen044.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen045.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen046.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen047.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen048.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen049.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen050.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen051.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen052.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen053.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen054.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen055.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen056.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen057.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen058.svg create mode 100644 resources/assets/core/media/icons/duotune/general/gen059.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra001.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra002.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra003.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra004.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra005.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra006.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra007.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra008.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra009.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra010.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra011.svg create mode 100644 resources/assets/core/media/icons/duotune/graphs/gra012.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay001.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay002.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay003.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay004.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay005.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay006.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay007.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay008.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay009.svg create mode 100644 resources/assets/core/media/icons/duotune/layouts/lay010.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map001.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map002.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map003.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map004.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map005.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map006.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map007.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map008.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map009.svg create mode 100644 resources/assets/core/media/icons/duotune/maps/map010.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med001.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med002.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med003.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med004.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med005.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med006.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med007.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med008.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med009.svg create mode 100644 resources/assets/core/media/icons/duotune/medicine/med010.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc001.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc002.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc003.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc004.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc005.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc006.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc007.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc008.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc009.svg create mode 100644 resources/assets/core/media/icons/duotune/social/soc010.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh001.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh002.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh003.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh004.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh005.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh006.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh007.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh008.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh009.svg create mode 100644 resources/assets/core/media/icons/duotune/technology/teh010.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt001.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt002.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt003.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt004.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt005.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt006.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt007.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt008.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt009.svg create mode 100644 resources/assets/core/media/icons/duotune/text/txt010.svg create mode 100644 resources/assets/core/media/logos/favicon.ico create mode 100644 resources/assets/core/media/misc/bg-blue.png create mode 100644 resources/assets/core/media/misc/bg-green.png create mode 100644 resources/assets/core/media/misc/image.png create mode 100644 resources/assets/core/media/misc/menu-header-dark.png create mode 100644 resources/assets/core/media/misc/mm.svg create mode 100644 resources/assets/core/media/plugins/jstree/32px.png create mode 100644 resources/assets/core/media/svg/card-logos/american-express-dark.svg create mode 100644 resources/assets/core/media/svg/card-logos/american-express.svg create mode 100644 resources/assets/core/media/svg/card-logos/bitcoin 1.svg create mode 100644 resources/assets/core/media/svg/card-logos/dark/american-express.svg create mode 100644 resources/assets/core/media/svg/card-logos/dark/mastercard.svg create mode 100644 resources/assets/core/media/svg/card-logos/dark/visa.svg create mode 100644 resources/assets/core/media/svg/card-logos/mastercard-dark.svg create mode 100644 resources/assets/core/media/svg/card-logos/mastercard.svg create mode 100644 resources/assets/core/media/svg/card-logos/visa-dark.svg create mode 100644 resources/assets/core/media/svg/card-logos/visa.svg create mode 100644 resources/assets/core/media/svg/payment-methods/americanexpress.svg create mode 100644 resources/assets/core/media/svg/payment-methods/mastercard.svg create mode 100644 resources/assets/core/media/svg/payment-methods/paypal.svg create mode 100644 resources/assets/core/media/svg/payment-methods/visa.svg create mode 100644 resources/assets/core/media/svg/social-logos/facebook.svg create mode 100644 resources/assets/core/media/svg/social-logos/github.svg create mode 100644 resources/assets/core/media/svg/social-logos/google.svg create mode 100644 resources/assets/core/media/svg/social-logos/instagram.svg create mode 100644 resources/assets/core/media/svg/social-logos/twitter.svg create mode 100644 resources/assets/core/media/svg/social-logos/youtube.svg create mode 100644 resources/assets/core/plugins/bootstrap-multiselectsplitter/LICENCE create mode 100644 resources/assets/core/plugins/bootstrap-multiselectsplitter/bootstrap-multiselectsplitter.js create mode 100644 resources/assets/core/plugins/bootstrap-multiselectsplitter/bootstrap-multiselectsplitter.min.js create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/.gitignore create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/.jshintrc create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/Gruntfile.js create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/LICENSE.md create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/README.md create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/bower.json create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/dist/bootstrap-session-timeout.js create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/dist/bootstrap-session-timeout.min.js create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/basic.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/countdown-bar.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/countdown-timer.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/custom-callback.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/keep-alive.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/locked.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/examples/login.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/index.html create mode 100644 resources/assets/core/plugins/bootstrap-session-timeout/package.json create mode 100644 resources/assets/core/plugins/custom/cookiealert/cookiealert.js create mode 100644 resources/assets/core/plugins/custom/cookiealert/cookiealert.scss create mode 100644 resources/assets/core/plugins/custom/cropper/cropper.js create mode 100644 resources/assets/core/plugins/custom/cropper/cropper.scss create mode 100644 resources/assets/core/plugins/custom/datatables/datatables.js.json create mode 100644 resources/assets/core/plugins/custom/datatables/datatables.scss create mode 100644 resources/assets/core/plugins/custom/draggable/draggable.js create mode 100644 resources/assets/core/plugins/custom/flatpickr/flatpickr.js.json create mode 100644 resources/assets/core/plugins/custom/flatpickr/flatpickr.scss create mode 100644 resources/assets/core/plugins/custom/flotcharts/flotcharts.js create mode 100644 resources/assets/core/plugins/custom/formrepeater/formrepeater.js.json create mode 100644 resources/assets/core/plugins/custom/fslightbox/fslightbox.js create mode 100644 resources/assets/core/plugins/custom/fullcalendar/fullcalendar.js.json create mode 100644 resources/assets/core/plugins/custom/fullcalendar/fullcalendar.scss create mode 100644 resources/assets/core/plugins/custom/jkanban/jkanban.js create mode 100644 resources/assets/core/plugins/custom/jkanban/jkanban.scss create mode 100644 resources/assets/core/plugins/custom/jstree/jstree.js create mode 100644 resources/assets/core/plugins/custom/jstree/jstree.scss create mode 100644 resources/assets/core/plugins/custom/prismjs/prismjs.js create mode 100644 resources/assets/core/plugins/custom/prismjs/prismjs.scss create mode 100644 resources/assets/core/plugins/custom/tiny-slider/tiny-slider.js create mode 100644 resources/assets/core/plugins/custom/tiny-slider/tiny-slider.scss create mode 100644 resources/assets/core/plugins/custom/typedjs/typedjs.js create mode 100644 resources/assets/core/plugins/formvalidation/HOW-TO-USE.txt create mode 100644 resources/assets/core/plugins/formvalidation/LICENSE.txt create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/algorithms/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/algorithms/luhn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/algorithms/mod11And10.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/algorithms/mod37And36.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/algorithms/mod97And10.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/algorithms/verhoeff.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/core/Core.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/core/Plugin.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/core/emitter.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/core/filter.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/core/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/filters/getFieldValue.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/filters/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/ar_MA.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/bg_BG.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/ca_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/cs_CZ.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/da_DK.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/de_DE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/el_GR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/en_US.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/es_CL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/es_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/eu_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/fa_IR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/fi_FI.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/fr_BE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/fr_FR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/he_IL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/hi_IN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/hu_HU.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/id_ID.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/it_IT.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/ja_JP.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/nl_BE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/nl_NL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/no_NO.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/pl_PL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/pt_BR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/pt_PT.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/ro_RO.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/ru_RU.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/sk_SK.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/sq_AL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/sr_RS.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/sv_SE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/th_TH.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/tr_TR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/ua_UA.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/vi_VN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/zh_CN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/locales/zh_TW.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Alias.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Aria.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/AutoFocus.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Bootstrap.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Bootstrap3.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Bootstrap5.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Bulma.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Declarative.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/DefaultSubmit.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Dependency.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Excluded.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/FieldStatus.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Foundation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Framework.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Icon.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/InternationalTelephoneInput.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/J.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/L10n.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Mailgun.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/MandatoryIcon.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Materialize.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Message.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Milligram.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Mini.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Mui.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/PasswordStrength.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Pure.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Recaptcha.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Recaptcha3.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Recaptcha3Token.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Semantic.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Sequence.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Shoelace.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Spectre.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/StartEndDate.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/SubmitButton.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Tachyons.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Tooltip.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Transformer.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Trigger.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Turret.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/TypingAnimation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Uikit.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/Wizard.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/plugins/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/call.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/classSet.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/closest.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/fetch.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/format.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/hasClass.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/utils/isValidDate.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/base64.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/between.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/bic.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/blank.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/callback.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/choice.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/color.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/creditCard.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/cusip.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/date.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/different.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/digits.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/ean.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/ein.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/emailAddress.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/file.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/greaterThan.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/grid.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/hex.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/iban.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/arId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/baId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/bgId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/brId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/chId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/clId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/cnId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/coId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/czId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/dkId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/esId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/fiId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/frId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/hkId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/hrId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/idId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/ieId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/ilId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/isId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/jmbg.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/krId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/ltId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/lvId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/meId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/mkId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/mxId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/myId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/nlId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/noId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/peId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/plId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/roId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/rsId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/seId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/siId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/smId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/thId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/trId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/twId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/uyId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/id/zaId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/identical.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/imei.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/imo.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/index-full.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/integer.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/ip.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/isbn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/isin.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/ismn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/issn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/lessThan.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/mac.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/meid.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/notEmpty.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/numeric.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/phone.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/promise.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/regexp.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/remote.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/rtn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/sedol.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/siren.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/siret.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/step.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/stringCase.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/stringLength.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/uri.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/uuid.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/arVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/atVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/beVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/bgVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/brVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/chVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/cyVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/czVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/deVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/dkVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/eeVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/esVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/fiVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/frVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/gbVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/grVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/hrVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/huVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/ieVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/isVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/itVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/ltVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/luVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/lvVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/mtVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/nlVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/noVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/plVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/ptVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/roVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/rsVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/ruVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/seVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/siVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/skVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/veVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vat/zaVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/vin.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/amd/validators/zipCode.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/css/formValidation.css create mode 100644 resources/assets/core/plugins/formvalidation/dist/css/formValidation.min.css create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/algorithms/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/algorithms/luhn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/algorithms/mod11And10.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/algorithms/mod37And36.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/algorithms/mod97And10.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/algorithms/verhoeff.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/core/Core.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/core/Plugin.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/core/emitter.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/core/filter.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/core/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/filters/getFieldValue.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/filters/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/ar_MA.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/bg_BG.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/ca_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/cs_CZ.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/da_DK.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/de_DE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/el_GR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/en_US.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/es_CL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/es_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/eu_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/fa_IR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/fi_FI.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/fr_BE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/fr_FR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/he_IL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/hi_IN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/hu_HU.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/id_ID.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/it_IT.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/ja_JP.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/nl_BE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/nl_NL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/no_NO.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/pl_PL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/pt_BR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/pt_PT.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/ro_RO.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/ru_RU.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/sk_SK.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/sq_AL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/sr_RS.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/sv_SE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/th_TH.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/tr_TR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/ua_UA.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/vi_VN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/zh_CN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/locales/zh_TW.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Alias.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Aria.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/AutoFocus.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Bootstrap.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Bootstrap3.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Bootstrap5.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Bulma.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Declarative.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/DefaultSubmit.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Dependency.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Excluded.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/FieldStatus.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Foundation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Framework.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Icon.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/InternationalTelephoneInput.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/J.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/L10n.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Mailgun.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/MandatoryIcon.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Materialize.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Message.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Milligram.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Mini.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Mui.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/PasswordStrength.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Pure.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Recaptcha.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Recaptcha3.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Recaptcha3Token.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Semantic.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Sequence.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Shoelace.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Spectre.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/StartEndDate.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/SubmitButton.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Tachyons.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Tooltip.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Transformer.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Trigger.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Turret.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/TypingAnimation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Uikit.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/Wizard.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/plugins/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/call.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/classSet.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/closest.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/fetch.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/format.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/hasClass.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/utils/isValidDate.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/base64.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/between.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/bic.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/blank.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/callback.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/choice.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/color.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/creditCard.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/cusip.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/date.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/different.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/digits.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/ean.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/ein.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/emailAddress.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/file.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/greaterThan.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/grid.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/hex.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/iban.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/arId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/baId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/bgId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/brId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/chId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/clId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/cnId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/coId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/czId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/dkId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/esId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/fiId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/frId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/hkId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/hrId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/idId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/ieId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/ilId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/isId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/jmbg.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/krId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/ltId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/lvId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/meId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/mkId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/mxId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/myId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/nlId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/noId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/peId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/plId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/roId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/rsId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/seId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/siId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/smId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/thId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/trId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/twId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/uyId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/id/zaId.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/identical.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/imei.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/imo.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/index-full.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/integer.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/ip.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/isbn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/isin.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/ismn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/issn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/lessThan.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/mac.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/meid.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/notEmpty.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/numeric.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/phone.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/promise.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/regexp.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/remote.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/rtn.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/sedol.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/siren.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/siret.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/step.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/stringCase.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/stringLength.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/uri.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/uuid.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/arVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/atVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/beVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/bgVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/brVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/chVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/cyVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/czVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/deVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/dkVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/eeVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/esVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/fiVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/frVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/gbVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/grVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/hrVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/huVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/ieVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/index.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/isVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/itVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/ltVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/luVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/lvVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/mtVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/nlVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/noVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/plVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/ptVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/roVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/rsVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/ruVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/seVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/siVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/skVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/veVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vat/zaVat.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/vin.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/es6/validators/zipCode.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/FormValidation.full.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/FormValidation.full.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/FormValidation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/FormValidation.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ar_MA.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ar_MA.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/bg_BG.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/bg_BG.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ca_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ca_ES.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/cs_CZ.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/cs_CZ.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/da_DK.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/da_DK.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/de_DE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/de_DE.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/el_GR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/el_GR.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/en_US.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/en_US.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/es_CL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/es_CL.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/es_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/es_ES.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/eu_ES.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/eu_ES.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fa_IR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fa_IR.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fi_FI.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fi_FI.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fr_BE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fr_BE.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fr_FR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/fr_FR.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/he_IL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/he_IL.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/hi_IN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/hi_IN.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/hu_HU.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/hu_HU.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/id_ID.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/id_ID.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/it_IT.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/it_IT.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ja_JP.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ja_JP.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/nl_BE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/nl_BE.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/nl_NL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/nl_NL.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/no_NO.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/no_NO.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/pl_PL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/pl_PL.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/pt_BR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/pt_BR.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/pt_PT.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/pt_PT.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ro_RO.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ro_RO.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ru_RU.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ru_RU.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sk_SK.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sk_SK.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sq_AL.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sq_AL.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sr_RS.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sr_RS.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sv_SE.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/sv_SE.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/th_TH.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/th_TH.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/tr_TR.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/tr_TR.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ua_UA.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/ua_UA.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/vi_VN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/vi_VN.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/zh_CN.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/zh_CN.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/zh_TW.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/locales/zh_TW.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/AutoFocus.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/AutoFocus.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bootstrap.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bootstrap.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bootstrap3.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bootstrap3.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bootstrap5.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bootstrap5.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bulma.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Bulma.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Foundation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Foundation.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/InternationalTelephoneInput.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/InternationalTelephoneInput.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/J.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/J.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/L10n.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/L10n.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Mailgun.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Mailgun.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/MandatoryIcon.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/MandatoryIcon.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Materialize.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Materialize.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Milligram.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Milligram.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Mini.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Mini.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Mui.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Mui.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/PasswordStrength.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/PasswordStrength.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Pure.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Pure.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Recaptcha.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Recaptcha.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Recaptcha3.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Recaptcha3.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Recaptcha3Token.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Recaptcha3Token.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Semantic.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Semantic.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Shoelace.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Shoelace.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Spectre.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Spectre.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/StartEndDate.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/StartEndDate.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Tachyons.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Tachyons.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Transformer.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Transformer.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Turret.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Turret.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/TypingAnimation.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/TypingAnimation.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Uikit.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Uikit.min.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Wizard.js create mode 100644 resources/assets/core/plugins/formvalidation/dist/js/plugins/Wizard.min.js create mode 100644 resources/assets/core/plugins/formvalidation/src/css/_core.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/index.css create mode 100644 resources/assets/core/plugins/formvalidation/src/css/index.css.map create mode 100644 resources/assets/core/plugins/formvalidation/src/css/index.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_bootstrap.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_bootstrap3.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_bootstrap5.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_bulma.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_foundation.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_framework.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_icon.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_materialize.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_milligram.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_mini.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_mui.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_pure.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_semantic.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_shoelace.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_spectre.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_tachyons.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_tooltip.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_turret.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_uikit.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/css/plugins/_wizard.scss create mode 100644 resources/assets/core/plugins/formvalidation/src/js/algorithms/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/algorithms/luhn.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/algorithms/mod11And10.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/algorithms/mod37And36.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/algorithms/mod97And10.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/algorithms/verhoeff.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/core/Core.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/core/Plugin.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/core/emitter.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/core/filter.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/core/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/filters/getFieldValue.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/filters/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/ar_MA.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/bg_BG.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/ca_ES.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/cs_CZ.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/da_DK.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/de_DE.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/el_GR.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/en_US.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/es_CL.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/es_ES.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/eu_ES.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/fa_IR.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/fi_FI.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/fr_BE.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/fr_FR.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/he_IL.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/hi_IN.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/hu_HU.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/id_ID.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/it_IT.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/ja_JP.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/nl_BE.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/nl_NL.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/no_NO.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/pl_PL.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/pt_BR.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/pt_PT.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/ro_RO.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/ru_RU.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/sk_SK.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/sq_AL.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/sr_RS.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/sv_SE.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/th_TH.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/tr_TR.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/ua_UA.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/vi_VN.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/zh_CN.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/locales/zh_TW.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Alias.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Aria.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/AutoFocus.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Bootstrap.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Bootstrap3.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Bootstrap5.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Bulma.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Declarative.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/DefaultSubmit.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Dependency.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Excluded.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/FieldStatus.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Foundation.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Framework.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Icon.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/InternationalTelephoneInput.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/J.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/L10n.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Mailgun.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/MandatoryIcon.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Materialize.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Message.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Milligram.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Mini.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Mui.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/PasswordStrength.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Pure.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Recaptcha.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Recaptcha3.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Recaptcha3Token.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Semantic.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Sequence.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Shoelace.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Spectre.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/StartEndDate.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/SubmitButton.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Tachyons.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Tooltip.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Transformer.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Trigger.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Turret.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/TypingAnimation.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Uikit.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/Wizard.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/plugins/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/call.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/classSet.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/closest.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/fetch.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/format.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/hasClass.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/utils/isValidDate.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/base64.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/between.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/bic.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/blank.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/callback.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/choice.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/color.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/creditCard.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/cusip.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/date.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/different.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/digits.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/ean.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/ein.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/emailAddress.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/file.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/greaterThan.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/grid.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/hex.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/iban.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/arId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/baId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/bgId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/brId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/chId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/clId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/cnId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/coId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/czId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/dkId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/esId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/fiId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/frId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/hkId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/hrId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/idId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/ieId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/ilId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/isId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/jmbg.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/krId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/ltId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/lvId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/meId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/mkId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/mxId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/myId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/nlId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/noId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/peId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/plId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/roId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/rsId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/seId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/siId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/smId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/thId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/trId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/twId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/uyId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/id/zaId.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/identical.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/imei.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/imo.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/index-full.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/integer.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/ip.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/isbn.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/isin.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/ismn.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/issn.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/lessThan.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/mac.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/meid.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/notEmpty.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/numeric.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/phone.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/promise.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/regexp.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/remote.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/rtn.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/sedol.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/siren.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/siret.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/step.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/stringCase.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/stringLength.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/uri.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/uuid.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/arVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/atVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/beVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/bgVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/brVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/chVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/cyVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/czVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/deVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/dkVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/eeVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/esVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/fiVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/frVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/gbVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/grVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/hrVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/huVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/ieVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/index.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/isVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/itVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/ltVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/luVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/lvVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/mtVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/nlVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/noVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/plVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/ptVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/roVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/rsVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/ruVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/seVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/siVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/skVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/veVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vat/zaVat.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/vin.ts create mode 100644 resources/assets/core/plugins/formvalidation/src/js/validators/zipCode.ts create mode 100644 resources/assets/core/plugins/fslightbox/LICENSE create mode 100644 resources/assets/core/plugins/fslightbox/README.md create mode 100644 resources/assets/core/plugins/fslightbox/fslightbox.js create mode 100644 resources/assets/core/plugins/fslightbox/package.json create mode 100644 resources/assets/core/plugins/jquery-idletimer/LICENSE-MIT create mode 100644 resources/assets/core/plugins/jquery-idletimer/idle-timer.js create mode 100644 resources/assets/core/plugins/jquery-idletimer/idle-timer.min.js create mode 100644 resources/assets/core/plugins/plugins.dark.scss create mode 100644 resources/assets/core/plugins/plugins.js create mode 100644 resources/assets/core/plugins/plugins.scss create mode 100644 resources/assets/core/plugins/toastr/LICENSE create mode 100644 resources/assets/core/plugins/toastr/build/toastr.css create mode 100644 resources/assets/core/plugins/toastr/build/toastr.js.map create mode 100644 resources/assets/core/plugins/toastr/build/toastr.min.css create mode 100644 resources/assets/core/plugins/toastr/build/toastr.min.js create mode 100644 resources/assets/core/sass/base/_functions.scss create mode 100644 resources/assets/core/sass/base/_mixins.scss create mode 100644 resources/assets/core/sass/base/functions/_get.scss create mode 100644 resources/assets/core/sass/base/functions/_math.scss create mode 100644 resources/assets/core/sass/base/functions/_mode.scss create mode 100644 resources/assets/core/sass/base/functions/_set.scss create mode 100644 resources/assets/core/sass/base/functions/_theme-colors.scss create mode 100644 resources/assets/core/sass/base/functions/_valueif.scss create mode 100644 resources/assets/core/sass/base/mixins/_attr.scss create mode 100644 resources/assets/core/sass/base/mixins/_breakpoints.scss create mode 100644 resources/assets/core/sass/base/mixins/_browsers.scss create mode 100644 resources/assets/core/sass/base/mixins/_fixes.scss create mode 100644 resources/assets/core/sass/base/mixins/_placeholder.scss create mode 100644 resources/assets/core/sass/base/mixins/_reset.scss create mode 100644 resources/assets/core/sass/components/_accordion.scss create mode 100644 resources/assets/core/sass/components/_anchor.scss create mode 100644 resources/assets/core/sass/components/_animation.scss create mode 100644 resources/assets/core/sass/components/_badge.scss create mode 100644 resources/assets/core/sass/components/_blockui.scss create mode 100644 resources/assets/core/sass/components/_breadcrumb.scss create mode 100644 resources/assets/core/sass/components/_bullet.scss create mode 100644 resources/assets/core/sass/components/_buttons.scss create mode 100644 resources/assets/core/sass/components/_card.scss create mode 100644 resources/assets/core/sass/components/_carousel.scss create mode 100644 resources/assets/core/sass/components/_code.scss create mode 100644 resources/assets/core/sass/components/_container.scss create mode 100644 resources/assets/core/sass/components/_cookiealert.scss create mode 100644 resources/assets/core/sass/components/_drawer.scss create mode 100644 resources/assets/core/sass/components/_explore.scss create mode 100644 resources/assets/core/sass/components/_feedback.scss create mode 100644 resources/assets/core/sass/components/_fixed.scss create mode 100644 resources/assets/core/sass/components/_forms.scss create mode 100644 resources/assets/core/sass/components/_helpers.scss create mode 100644 resources/assets/core/sass/components/_image-input.scss create mode 100644 resources/assets/core/sass/components/_indicator.scss create mode 100644 resources/assets/core/sass/components/_menu.scss create mode 100644 resources/assets/core/sass/components/_mixins.scss create mode 100644 resources/assets/core/sass/components/_modal.scss create mode 100644 resources/assets/core/sass/components/_nav-pills-custom.scss create mode 100644 resources/assets/core/sass/components/_nav.scss create mode 100644 resources/assets/core/sass/components/_notice.scss create mode 100644 resources/assets/core/sass/components/_overlay.scss create mode 100644 resources/assets/core/sass/components/_page-loader.scss create mode 100644 resources/assets/core/sass/components/_pagination.scss create mode 100644 resources/assets/core/sass/components/_popover.scss create mode 100644 resources/assets/core/sass/components/_print.scss create mode 100644 resources/assets/core/sass/components/_progress.scss create mode 100644 resources/assets/core/sass/components/_pulse.scss create mode 100644 resources/assets/core/sass/components/_rating.scss create mode 100644 resources/assets/core/sass/components/_ribbon.scss create mode 100644 resources/assets/core/sass/components/_root.scss create mode 100644 resources/assets/core/sass/components/_rotate.scss create mode 100644 resources/assets/core/sass/components/_scroll.scss create mode 100644 resources/assets/core/sass/components/_scrolltop.scss create mode 100644 resources/assets/core/sass/components/_separator.scss create mode 100644 resources/assets/core/sass/components/_shape.scss create mode 100644 resources/assets/core/sass/components/_stepper.scss create mode 100644 resources/assets/core/sass/components/_svg-icon.scss create mode 100644 resources/assets/core/sass/components/_symbol.scss create mode 100644 resources/assets/core/sass/components/_tables.scss create mode 100644 resources/assets/core/sass/components/_timeline-label.scss create mode 100644 resources/assets/core/sass/components/_timeline.scss create mode 100644 resources/assets/core/sass/components/_toasts.scss create mode 100644 resources/assets/core/sass/components/_toggle.scss create mode 100644 resources/assets/core/sass/components/_tooltip.scss create mode 100644 resources/assets/core/sass/components/_utilities.scss create mode 100644 resources/assets/core/sass/components/_variables.scss create mode 100644 resources/assets/core/sass/components/buttons/_base.scss create mode 100644 resources/assets/core/sass/components/buttons/_theme.scss create mode 100644 resources/assets/core/sass/components/components.scss create mode 100644 resources/assets/core/sass/components/forms/_floating-labels.scss create mode 100644 resources/assets/core/sass/components/forms/_form-check.scss create mode 100644 resources/assets/core/sass/components/forms/_form-control.scss create mode 100644 resources/assets/core/sass/components/forms/_form-select.scss create mode 100644 resources/assets/core/sass/components/forms/_input-group.scss create mode 100644 resources/assets/core/sass/components/forms/_required.scss create mode 100644 resources/assets/core/sass/components/helpers/_background.scss create mode 100644 resources/assets/core/sass/components/helpers/_borders.scss create mode 100644 resources/assets/core/sass/components/helpers/_flex.scss create mode 100644 resources/assets/core/sass/components/helpers/_opacity.scss create mode 100644 resources/assets/core/sass/components/helpers/_shadow.scss create mode 100644 resources/assets/core/sass/components/helpers/_text.scss create mode 100644 resources/assets/core/sass/components/helpers/_transform.scss create mode 100644 resources/assets/core/sass/components/menu/_base.scss create mode 100644 resources/assets/core/sass/components/menu/_theme.scss create mode 100644 resources/assets/core/sass/components/mixins/_buttons.scss create mode 100644 resources/assets/core/sass/components/mixins/_ki.scss create mode 100644 resources/assets/core/sass/components/mixins/_menu.scss create mode 100644 resources/assets/core/sass/components/mixins/_popover.scss create mode 100644 resources/assets/core/sass/components/mixins/_scroll.scss create mode 100644 resources/assets/core/sass/components/mixins/_shape.scss create mode 100644 resources/assets/core/sass/components/mixins/_svg-bg-icon.scss create mode 100644 resources/assets/core/sass/components/mixins/_svg-icon.scss create mode 100644 resources/assets/core/sass/components/mixins/_symbol.scss create mode 100644 resources/assets/core/sass/components/mixins/_tooltip.scss create mode 100644 resources/assets/core/sass/components/stepper/_base.scss create mode 100644 resources/assets/core/sass/components/stepper/_links.scss create mode 100644 resources/assets/core/sass/components/stepper/_pills.scss create mode 100644 resources/assets/core/sass/layout/_base.scss create mode 100644 resources/assets/core/sass/layout/app/_container.scss create mode 100644 resources/assets/core/sass/layout/app/_content.scss create mode 100644 resources/assets/core/sass/layout/app/_footer.scss create mode 100644 resources/assets/core/sass/layout/app/_inner.scss create mode 100644 resources/assets/core/sass/layout/app/_layout.scss create mode 100644 resources/assets/core/sass/layout/app/_navbar.scss create mode 100644 resources/assets/core/sass/layout/app/_page.scss create mode 100644 resources/assets/core/sass/layout/app/_print.scss create mode 100644 resources/assets/core/sass/layout/app/_root.scss create mode 100644 resources/assets/core/sass/layout/app/_toolbar.scss create mode 100644 resources/assets/core/sass/layout/app/_variables.scss create mode 100644 resources/assets/core/sass/layout/app/_wrapper.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_aside-panel.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_aside-primary.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_aside-secondary.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_aside.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_base.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_secondary.scss create mode 100644 resources/assets/core/sass/layout/app/aside/_tertiary.scss create mode 100644 resources/assets/core/sass/layout/app/content/_base.scss create mode 100644 resources/assets/core/sass/layout/app/footer/_base.scss create mode 100644 resources/assets/core/sass/layout/app/footer/_primary.scss create mode 100644 resources/assets/core/sass/layout/app/footer/_secondary.scss create mode 100644 resources/assets/core/sass/layout/app/header/_base.scss create mode 100644 resources/assets/core/sass/layout/app/header/_header-mobile.scss create mode 100644 resources/assets/core/sass/layout/app/header/_header-primary.scss create mode 100644 resources/assets/core/sass/layout/app/header/_header-secondary.scss create mode 100644 resources/assets/core/sass/layout/app/header/_header.scss create mode 100644 resources/assets/core/sass/layout/app/header/_mobile.scss create mode 100644 resources/assets/core/sass/layout/app/header/_primary.scss create mode 100644 resources/assets/core/sass/layout/app/header/_secondary.scss create mode 100644 resources/assets/core/sass/layout/app/mixins/_layout-minimize.scss create mode 100644 resources/assets/core/sass/layout/app/mixins/_layout-transition.scss create mode 100644 resources/assets/core/sass/layout/app/page/_base.scss create mode 100644 resources/assets/core/sass/layout/app/page/_container.scss create mode 100644 resources/assets/core/sass/layout/app/page/_print.scss create mode 100644 resources/assets/core/sass/layout/app/sidebar/_base.scss create mode 100644 resources/assets/core/sass/layout/app/sidebar/_primary.scss create mode 100644 resources/assets/core/sass/layout/app/sidebar/_secondary.scss create mode 100644 resources/assets/core/sass/layout/app/sidebar/_tertiary.scss create mode 100644 resources/assets/core/sass/layout/app/toolbar/_base.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_apexcharts.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_bootstrap-maxlength.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_datatables.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_daterangepicker.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_draggable.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_dropzone.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_flatpickr.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_formvalidation.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_fslightbox.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_fullcalendar.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_jkanban.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_jstree.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_mixins.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_nouislider.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_plugins.angular.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_plugins.react.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_plugins.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_plugins.vue.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_prismjs.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_quill.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_recaptcha.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_select2.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_summernote.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_sweetalert2.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_tagify.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_tiny-slider.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_toastr.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_variables.scss create mode 100644 resources/assets/core/sass/vendors/plugins/_vis-timeline.scss create mode 100644 resources/assets/core/sass/vendors/plugins/mixins/_nouislider.scss create mode 100644 resources/assets/core/sass/vendors/plugins/mixins/_select2.scss create mode 100644 resources/assets/core/sass/vendors/plugins/mixins/_tagify.scss create mode 100644 resources/assets/demo1/js/custom/intro.js create mode 100644 resources/assets/demo1/js/custom/landing.js create mode 100644 resources/assets/demo1/js/custom/widgets.js create mode 100644 resources/assets/demo1/js/layout/aside.js create mode 100644 resources/assets/demo1/js/layout/toolbar.js create mode 100644 resources/assets/demo1/js/scripts.js create mode 100644 resources/assets/demo1/media/logos/favicon.ico create mode 100644 resources/assets/demo1/media/logos/logo_dark@2x.png create mode 100644 resources/assets/demo1/media/logos/logo_light@2x.png create mode 100644 resources/assets/demo1/media/misc/outdoor.png create mode 100644 resources/assets/demo1/media/misc/pattern-1.jpg create mode 100644 resources/assets/demo1/media/misc/pattern-2.png create mode 100644 resources/assets/demo1/media/misc/pattern-4.jpg create mode 100644 resources/assets/demo1/media/misc/portfolio.png create mode 100644 resources/assets/demo1/media/misc/preview-1.jpg create mode 100644 resources/assets/demo1/media/misc/preview-2.jpg create mode 100644 resources/assets/demo1/media/misc/preview-3.jpg create mode 100644 resources/assets/demo1/media/misc/qr-code.png create mode 100644 resources/assets/demo1/media/misc/search-bg.png create mode 100644 resources/assets/demo1/media/plugins/jstree/32px.png create mode 100644 resources/assets/demo1/sass/_init.scss create mode 100644 resources/assets/demo1/sass/components/_item-hover-custom.scss create mode 100644 resources/assets/demo1/sass/components/_landing.scss create mode 100644 resources/assets/demo1/sass/components/_nouislider-custom.scss create mode 100644 resources/assets/demo1/sass/components/_placeholder-custom.scss create mode 100644 resources/assets/demo1/sass/components/_stepper-links.scss create mode 100644 resources/assets/demo1/sass/components/_timeline-label.scss create mode 100644 resources/assets/demo1/sass/components/_variables.custom.scss create mode 100644 resources/assets/demo1/sass/components/components.scss create mode 100644 resources/assets/demo1/sass/layout/_content.scss create mode 100644 resources/assets/demo1/sass/layout/_footer.scss create mode 100644 resources/assets/demo1/sass/layout/_header.scss create mode 100644 resources/assets/demo1/sass/layout/_layout.scss create mode 100644 resources/assets/demo1/sass/layout/_main.scss create mode 100644 resources/assets/demo1/sass/layout/_print.scss create mode 100644 resources/assets/demo1/sass/layout/_toolbar.scss create mode 100644 resources/assets/demo1/sass/layout/_variables.scss create mode 100644 resources/assets/demo1/sass/layout/aside/_base.scss create mode 100644 resources/assets/demo1/sass/layout/aside/_menu.scss create mode 100644 resources/assets/demo1/sass/plugins.dark.scss create mode 100644 resources/assets/demo1/sass/plugins.scss create mode 100644 resources/assets/demo1/sass/style.dark.scss create mode 100644 resources/assets/demo1/sass/style.scss create mode 100644 resources/assets/extended/button-ajax.js create mode 100644 resources/assets/extended/js/custom/account/settings/profile-details.js create mode 100644 resources/assets/extended/js/custom/account/settings/signin-methods.js create mode 100644 resources/assets/extended/js/custom/authentication/password-reset/new-password.js create mode 100644 resources/assets/extended/js/custom/authentication/password-reset/password-reset.js create mode 100644 resources/assets/extended/js/custom/authentication/sign-in/general.js create mode 100644 resources/assets/extended/js/custom/authentication/sign-up/general.js create mode 100644 resources/assets/extended/js/custom/modals/two-factor-authentication.js create mode 100644 resources/assets/extended/js/custom/user-management/permissions/add-permission.js create mode 100644 resources/assets/extended/js/custom/user-management/permissions/list.js create mode 100644 resources/assets/extended/js/custom/user-management/permissions/update-permission.js create mode 100644 resources/assets/extended/js/custom/user-management/roles/list/add.js create mode 100644 resources/assets/extended/js/custom/user-management/roles/list/update-role.js create mode 100644 resources/assets/extended/js/custom/user-management/roles/view/update-role.js create mode 100644 resources/assets/extended/js/custom/user-management/roles/view/view.js create mode 100644 resources/assets/extended/js/custom/user-management/users/list/add.js create mode 100644 resources/assets/extended/js/custom/user-management/users/list/export-users.js create mode 100644 resources/assets/extended/js/custom/user-management/users/list/table.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/add-auth-app.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/add-one-time-password.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/add-schedule.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/add-task.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/update-details.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/update-email.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/update-password.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/update-role.js create mode 100644 resources/assets/extended/js/custom/user-management/users/view/view.js create mode 100644 resources/assets/extended/js/custom/widgets.js create mode 100644 resources/assets/extended/js/vendors/plugins/datatables.init.js create mode 100644 resources/lang/en/auth.php create mode 100644 resources/lang/en/pagination.php create mode 100644 resources/lang/en/passwords.php create mode 100644 resources/lang/en/validation.php create mode 100644 resources/views/auth/confirm-password.blade.php create mode 100644 resources/views/auth/forgot-password.blade.php create mode 100644 resources/views/auth/layout.blade.php create mode 100644 resources/views/auth/login.blade.php create mode 100644 resources/views/auth/register.blade.php create mode 100644 resources/views/auth/reset-password.blade.php create mode 100644 resources/views/auth/verify-email.blade.php create mode 100644 resources/views/base/base.blade.php create mode 100644 resources/views/layout/demo1/_content.blade.php create mode 100644 resources/views/layout/demo1/_footer.blade.php create mode 100644 resources/views/layout/demo1/_scrolltop.blade.php create mode 100644 resources/views/layout/demo1/aside/_base.blade.php create mode 100644 resources/views/layout/demo1/aside/_menu.blade.php create mode 100644 resources/views/layout/demo1/header/__topbar.blade.php create mode 100644 resources/views/layout/demo1/header/_base.blade.php create mode 100644 resources/views/layout/demo1/header/_menu.blade.php create mode 100644 resources/views/layout/demo1/master.blade.php create mode 100644 resources/views/layout/demo1/page-title/_default.blade.php create mode 100644 resources/views/layout/demo1/page-title/_select.blade.php create mode 100644 resources/views/layout/demo1/toolbars/_toolbar-1.blade.php create mode 100644 resources/views/pages/account/_navbar.blade.php create mode 100644 resources/views/pages/account/overview/_details.blade.php create mode 100644 resources/views/pages/account/overview/overview.blade.php create mode 100644 resources/views/pages/account/settings/_profile-details.blade.php create mode 100644 resources/views/pages/account/settings/_signin-method.blade.php create mode 100644 resources/views/pages/account/settings/settings.blade.php create mode 100644 resources/views/pages/admin/games/clone.blade.php create mode 100644 resources/views/pages/admin/games/create.blade.php create mode 100644 resources/views/pages/admin/games/edit.blade.php create mode 100644 resources/views/pages/admin/games/index.blade.php create mode 100644 resources/views/pages/contact-us/index.blade.php create mode 100644 resources/views/pages/game-lists/create.blade.php create mode 100644 resources/views/pages/game-lists/edit.blade.php create mode 100644 resources/views/pages/game-lists/index.blade.php create mode 100644 resources/views/pages/game-reviews/index.blade.php create mode 100644 resources/views/pages/game/index.blade.php create mode 100644 resources/views/pages/index.blade.php create mode 100644 resources/views/pages/misc/newly-added-games.blade.php create mode 100644 resources/views/pages/misc/recent-gamer-updates.blade.php create mode 100644 resources/views/pages/platforms/index.blade.php create mode 100644 resources/views/pages/platforms/show.blade.php create mode 100644 resources/views/pages/privacy-policy/index.blade.php create mode 100644 resources/views/pages/profile/index.blade.php create mode 100644 resources/views/pages/search/games/show.blade.php create mode 100644 resources/views/pages/support/index.blade.php create mode 100644 resources/views/pages/support/knowledgebase/index.blade.php create mode 100644 resources/views/pages/terms-of-service/index.blade.php create mode 100644 resources/views/pages/wishlist/index.blade.php create mode 100644 resources/views/partials/footer-scripts/admin/games/_toasts.blade.php create mode 100644 resources/views/partials/footer-scripts/game-lists/_create_start_finish_date_pickers.blade.php create mode 100644 resources/views/partials/footer-scripts/game-lists/_data-tables-games-list.blade.php create mode 100644 resources/views/partials/footer-scripts/game-lists/_data-tables-user.blade.php create mode 100644 resources/views/partials/footer-scripts/game-lists/_edit_start_finish_date_pickers.blade.php create mode 100644 resources/views/partials/footer-scripts/game-lists/_toasts.blade.php create mode 100644 resources/views/partials/general/_button-indicator.blade.php create mode 100644 resources/views/partials/general/_donate-block.blade.php create mode 100644 resources/views/partials/general/_most-popular-games-block.blade.php create mode 100644 resources/views/partials/general/_notice.blade.php create mode 100644 resources/views/partials/general/_pagination.blade.php create mode 100644 resources/views/partials/general/_recent-user-updates-block.blade.php create mode 100644 resources/views/partials/menus/_menu-1.blade.php create mode 100644 resources/views/partials/menus/_menu-2.blade.php create mode 100644 resources/views/partials/menus/_menu-3.blade.php create mode 100644 resources/views/partials/modals/two-factor-authentication/_main.blade.php create mode 100644 resources/views/partials/modals/two-factor-authentication/partials/_app.blade.php create mode 100644 resources/views/partials/modals/two-factor-authentication/partials/_options.blade.php create mode 100644 resources/views/partials/modals/two-factor-authentication/partials/_sms.blade.php create mode 100644 resources/views/partials/search/_base.blade.php create mode 100644 resources/views/partials/search/_dropdown.blade.php create mode 100644 resources/views/partials/search/partials/_advanced-options.blade.php create mode 100644 resources/views/partials/search/partials/_empty.blade.php create mode 100644 resources/views/partials/search/partials/_form.blade.php create mode 100644 resources/views/partials/search/partials/_main.blade.php create mode 100644 resources/views/partials/search/partials/_preferences.blade.php create mode 100644 resources/views/partials/search/partials/_results.blade.php create mode 100644 resources/views/partials/theme-mode/__menu.blade.php create mode 100644 resources/views/partials/theme-mode/_main.blade.php create mode 100644 resources/views/partials/topbar/_user-menu.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-1.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-2.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-3.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-4.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-5.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-6.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-7.blade.php create mode 100644 resources/views/partials/widgets/charts/_widget-8.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-1.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-2.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-3.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-4.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-5.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-6.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-7.blade.php create mode 100644 resources/views/partials/widgets/lists/_widget-8.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-1.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-10.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-2.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-3.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-4.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-5.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-6.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-7.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-8.blade.php create mode 100644 resources/views/partials/widgets/mixed/_widget-9.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-1.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-10.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-11.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-12.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-13.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-2.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-3.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-4.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-5.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-6.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-7.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-8.blade.php create mode 100644 resources/views/partials/widgets/tables/_widget-9.blade.php create mode 100644 resources/views/vendor/datatables/print.blade.php create mode 100644 resources/views/vendor/datatables/script.blade.php create mode 100644 resources/views/vendor/pagination/bootstrap-4.blade.php create mode 100644 resources/views/vendor/pagination/bootstrap-5.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-bootstrap-5.blade.php create mode 100644 resources/views/vendor/pagination/simple-default.blade.php create mode 100644 resources/views/vendor/pagination/simple-tailwind.blade.php create mode 100644 resources/views/vendor/pagination/tailwind.blade.php create mode 100644 routes/api.php create mode 100644 routes/auth.php create mode 100644 routes/channels.php create mode 100644 routes/console.php create mode 100644 routes/web.php create mode 100644 server.php create mode 100644 storage/app/.gitignore create mode 100644 storage/app/public/.gitignore create mode 100644 storage/debugbar/.gitignore create mode 100644 storage/framework/.gitignore create mode 100644 storage/framework/cache/.gitignore create mode 100644 storage/framework/cache/data/.gitignore create mode 100644 storage/framework/sessions/.gitignore create mode 100644 storage/framework/testing/.gitignore create mode 100644 storage/framework/views/.gitignore create mode 100644 storage/logs/.gitignore create mode 100644 storage/settings.json create mode 100644 tests/CreatesApplication.php create mode 100644 tests/Feature/AuthenticationTest.php create mode 100644 tests/Feature/EmailVerificationTest.php create mode 100644 tests/Feature/ExampleTest.php create mode 100644 tests/Feature/PasswordConfirmationTest.php create mode 100644 tests/Feature/PasswordResetTest.php create mode 100644 tests/Feature/RegistrationTest.php create mode 100644 tests/Feature/SystemLogTest.php create mode 100644 tests/TestCase.php create mode 100644 tests/Unit/ExampleTest.php create mode 100644 webpack.mix.js diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..6537ca4 --- /dev/null +++ b/.editorconfig @@ -0,0 +1,15 @@ +root = true + +[*] +charset = utf-8 +end_of_line = lf +insert_final_newline = true +indent_style = space +indent_size = 4 +trim_trailing_whitespace = true + +[*.md] +trim_trailing_whitespace = false + +[*.{yml,yaml}] +indent_size = 2 diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..967315d --- /dev/null +++ b/.gitattributes @@ -0,0 +1,5 @@ +* text=auto +*.css linguist-vendored +*.scss linguist-vendored +*.js linguist-vendored +CHANGELOG.md export-ignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..6200f55 --- /dev/null +++ b/.gitignore @@ -0,0 +1,40 @@ +/node_modules + +/public/hot +/public/storage +/public/css +/public/js +/public/media +/public/plugins + +/public/demo1 +/public/demo2 +/public/demo3 +/public/demo4 +/public/demo5 +/public/demo6 +/public/demo7 +/public/demo8 +/public/demo9 +/public/demo10 +/public/demo11 +/public/demo12 +/public/demo13 + +/storage/*.key +/vendor +.env +.env.backup +.env.example +.phpunit.result.cache +docker-compose.override.yml +Homestead.json +Homestead.yaml +npm-debug.log +yarn-error.log +_ide_helper.php +_ide_helper_models.php +.phpstorm.meta.php +composer.lock +.push.settings.jsonc +config/changelog.php diff --git a/.phpcs.xml b/.phpcs.xml new file mode 100644 index 0000000..1253def --- /dev/null +++ b/.phpcs.xml @@ -0,0 +1,8 @@ + + + */node_modules/* + */resources/assets/* + */storage/* + */vendor/* + + diff --git a/.styleci.yml b/.styleci.yml new file mode 100644 index 0000000..9231873 --- /dev/null +++ b/.styleci.yml @@ -0,0 +1,13 @@ +php: + preset: laravel + disabled: + - no_unused_imports + finder: + not-name: + - index.php + - server.php +js: + finder: + not-name: + - webpack.mix.js +css: true diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php new file mode 100644 index 0000000..31f4b24 --- /dev/null +++ b/app/Console/Kernel.php @@ -0,0 +1,41 @@ +command('inspire')->hourly(); + } + + /** + * Register the commands for the application. + * + * @return void + */ + protected function commands() + { + $this->load(__DIR__ . '/Commands'); + + require base_path('routes/console.php'); + } +} diff --git a/app/Core/Adapters/BootstrapBase.php b/app/Core/Adapters/BootstrapBase.php new file mode 100644 index 0000000..213129d --- /dev/null +++ b/app/Core/Adapters/BootstrapBase.php @@ -0,0 +1,47 @@ +addHtmlAttribute('body', 'id', 'kt_body'); + + if (theme()->isDarkModeEnabled() && theme()->getCurrentMode() === 'dark') { + theme()->addHtmlClass('body', 'dark-mode'); + } + + if (theme()->getOption('layout', 'main/body/background-image')) { + theme()->addHtmlAttribute('body', 'style', 'background-image: url(' . asset(theme()->getMediaUrlPath() . theme()->getOption('layout', 'main/body/background-image')) . ')'); + } + + if (theme()->getOption('layout', 'main/body/class')) { + theme()->addHtmlClass('body', theme()->getOption('layout', 'main/body/class')); + } + + if (theme()->getOption('layout', 'main/body/attributes')) { + theme()->addHtmlAttributes('body', theme()->getOption('layout', 'main/body/attributes')); + } + + if (theme()->getOption('layout', 'loader/display') === true) { + theme()->addHtmlClass('body', 'page-loading-enabled'); + theme()->addHtmlClass('body', 'page-loading'); + } + } + + public static function run() + { + if (theme()->getOption('layout', 'base') === 'docs') { + return; + } + + // Init base + static::initBase(); + + // Init layout + if (theme()->getOption('layout', 'main/type') === 'default') { + static::initLayout(); + } + } +} diff --git a/app/Core/Adapters/Menu.php b/app/Core/Adapters/Menu.php new file mode 100644 index 0000000..0d62bdb --- /dev/null +++ b/app/Core/Adapters/Menu.php @@ -0,0 +1,61 @@ +user(); + + $checkPermission = $checkRole = false; + if (auth()->check()) { + // check if the spatie plugin functions exist + $checkPermission = method_exists($user, 'hasAnyPermission'); + $checkRole = method_exists($user, 'hasAnyRole'); + } + + foreach ($array as $key => &$value) { + if (is_callable($value)) { + continue; + } + + if ($checkPermission && isset($value['permission']) && !$user->hasAnyPermission((array) $value['permission'])) { + unset($array[$key]); + } + + if ($checkRole && isset($value['role']) && !$user->hasAnyRole((array) $value['role'])) { + unset($array[$key]); + } + + if (is_array($value)) { + self::filterMenuPermissions($value); + } + } + } +} diff --git a/app/Core/Adapters/Theme.php b/app/Core/Adapters/Theme.php new file mode 100644 index 0000000..423ed94 --- /dev/null +++ b/app/Core/Adapters/Theme.php @@ -0,0 +1,501 @@ +exists($path)) { + return view($path, $params); + } + + // Append demo folder for layout view + if (Str::startsWith($path, 'layout')) { + $path = str_replace('layout', 'layout/' . self::$demo, $path); + } + + $view = view($path, $params); + + // Special fix to print _mega-menu content for Core/Theme.php + if (strpos($path, '_mega-menu') !== false) { + echo $view; + } + + return $view; + } + + /** + * Print fonts in the HTML head + * + * @param string $value + */ + public static function includeFonts($value = '') + { + if (self::hasOption('assets', 'fonts/google')) { + $fonts = self::getOption('assets', 'fonts/google'); + + echo ''; + } + } + + /** + * Check if the option has a value + * + * @param $scope + * @param false $path + * + * @return bool + */ + public static function hasOption($scope, $path = false) + { + return (bool) self::getOption($scope, $path); + } + + /** + * Get the option's value from config + * + * @param $scope + * @param false $path + * @param null $default + * + * @return mixed|string + */ + public static function getOption($scope, $path = false, $default = null) + { + $demo = self::getDemo() ?? 'demo1'; + + // Map the config path + if (array_key_exists($scope, config($demo . '.general', []))) { + $scope = 'general.' . $scope; + } + + if (in_array($scope, ['page', 'pages'])) { + $scope = 'pages'; + $segments = request()->segments(); + $scope .= '.' . implode('.', $segments); + } + + // Get current page path + $deepPath = ''; + if (!empty($path)) { + $deepPath = '.' . str_replace('/', '.', $path); + } + + // Demo config + $demoConfig = config($demo . '.' . $scope . $deepPath, $default); + + // check if it is a callback + if (is_callable($demoConfig) && !is_string($demoConfig)) { + $demoConfig = $demoConfig(); + } + + return $demoConfig; + } + + /** + * Get current demo + * + * @return string + */ + public static function getDemo() + { + if (class_exists('request')) { + return request()->input('demo', self::$demo); + } + + return self::$demo; + } + + /** + * Get the product name string wrapped with the tag + * + * @return string + */ + public static function getProductNameHtml() + { + return '' . self::getProductName() . ' Laravel '; + } + + /** + * Get plain product name text + * + * @return mixed|string + */ + public static function getProductName() + { + return self::getOption('product', 'name'); + } + + /** + * Get the version number string from config file + * + * @return mixed + */ + public static function getVersion() + { + $versions = array_keys(config('changelog', [])); + if (isset($versions[0])) { + return str_replace('v', '', $versions[0]); + } + + return null; + } + + /** + * Get the current page title from config page.php + */ + public static function getPageTitle() + { + return theme()->getOption('page', 'title'); + } + + /** + * Get current route name and replace with a new route name + * + * @param $name + * + * @return string + */ + public static function subRoute($name) + { + $routes = explode('.', Route::currentRouteName()); + array_pop($routes); + + $parent = implode('.', $routes); + + return $parent . '.' . $name; + } + + public static function putProVersionTooltip($attr = array()) + { + ob_start(); + + // Call the function from core Theme + parent::putProVersionTooltip($attr); + + return ob_get_clean(); + } + + public static function getIllustrationUrl($file, $dark = true) + { + if ($dark === true) { + if (self::isDarkMode()) { + $file = str_replace(".svg", "-dark.svg", $file); + $file = str_replace(".png", "-dark.png", $file); + $file = str_replace(".jpg", "-dark.jpg", $file); + } + } + + $folder = 'illustrations/' . self::getOption('layout', 'illustrations/set'); + + return self::getMediaUrlPath() . $folder . '/' . $file; + } + + /** + * Check dark mode + * + * @return mixed|string + */ + public static function isDarkMode() + { + return self::getCurrentMode() === 'dark'; + } + + /** + * Get current skin + * + * @return mixed|string + */ + public static function getCurrentMode() + { + if (self::isDarkModeEnabled() && isset($_REQUEST['mode']) && $_REQUEST['mode']) { + return $_REQUEST['mode']; + } + + return 'light'; + } + + /** + * Check if current theme has dark mode + * + * @return bool + */ + public static function isDarkModeEnabled() + { + return (bool) self::getOption('layout', 'main/dark-mode-enabled'); + } + + /** + * Get media path + * + * @return string + */ + public static function getMediaUrlPath() + { + return theme()->getDemo() . '/media/'; + } + + public static function getImageUrl($folder, $file, $dark = true) + { + if ($dark) { + if (self::isDarkMode()) { + $file = str_replace(".svg", "-dark.svg", $file); + $file = str_replace(".png", "-dark.png", $file); + $file = str_replace(".jpg", "-dark.jpg", $file); + } + } + + return self::getMediaUrlPath() . $folder . '/' . $file; + } + + /** + * Rebuild config and merge with main and page config level in boot + */ + public function initConfig() + { + $mainConfig = collect(config('global')); + $demoConfig = config(Theme::$demo); + $mergedConfig = $mainConfig->replaceRecursive($demoConfig); + config([Theme::$demo => $mergedConfig->all()]); + + self::$config = $mergedConfig->all(); + + // Get config by url path + $configPath = Theme::$demo . '.pages.' . str_replace('/', '.', Theme::getPagePath()); + $pageConfig = collect(config($configPath)); + + // Merge group config with child config + $pageGroupOptions = Theme::getPageGroupOptions(config(Theme::$demo . '.pages'), Theme::getPagePath()); + if ($pageGroupOptions) { + $overridenConfig = $pageConfig->replaceRecursive($pageGroupOptions); + config([$configPath => $overridenConfig->all()]); + } + + $generalConfig = collect(config(Theme::$demo . '.general')); + // Merge general config with page level config + config([Theme::$demo . '.general' => $generalConfig->replaceRecursive(config($configPath))->all()]); + } + + /** + * Get current page path + * + * @return mixed + */ + public static function getPagePath() + { + // Override page path + $segments = request()->segments(); + if (!empty($segments)) { + \App\Core\Theme::$page = implode('/', $segments); + } + + return \App\Core\Theme::getPagePath(); + } + + /** + * Get menu array from config + * + * @return array + */ + public function getMenu() + { + $menus = self::getOption('menu'); + + $output = []; + + foreach ($menus as $menu) { + if (is_array($menu)) { + $this->iterateMenu($menu, $output); + } + } + + return $output; + } + + /** + * Iterate menu array for self::getMenu() function + * + * @param $menus + * @param $output + */ + private function iterateMenu($menus, &$output) + { + if (!is_array($menus)) { + return; + } + + if (isset($menus['path'])) { + $output[] = $menus; + } + + if (is_array($menus)) { + foreach ($menus as $menu) { + $this->iterateMenu($menu, $output); + } + } + } + + public static function getDemosTotal() + { + $total = 0; + + foreach (self::getOption('product', 'demos') as $id => $demo) { + if ($demo['published'] === true) { + $total++; + } + } + + return $total; + } +} diff --git a/app/Core/Adapters/Util.php b/app/Core/Adapters/Util.php new file mode 100644 index 0000000..b489788 --- /dev/null +++ b/app/Core/Adapters/Util.php @@ -0,0 +1,70 @@ +'; + $html .= '
'; + if ($icon) { + $html .= ' '; + $html .= '
'; + $html .= ' ' . Theme::getSvgIcon("icons/duotone/Layout/Layout-polygon.svg", "svg-icon-' . $state . ' position-absolute opacity-10", "w-80px h-80px"); + $html .= ' ' . Theme::getSvgIcon($icon, 'svg-icon-3x svg-icon-' . $state . ' position-absolute'); + $html .= '
'; + $html .= ' '; + } + + $html .= ' '; + $html .= '
'; + $html .= $text; + $html .= '
'; + $html .= ' '; + $html .= '
'; + $html .= ''; + + echo $html; + } + + public static function putHtmlAttributes($attributes) + { + return self::getHtmlAttributes($attributes); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo1.php b/app/Core/Bootstraps/BootstrapDemo1.php new file mode 100644 index 0000000..0cd3ba6 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo1.php @@ -0,0 +1,200 @@ +displayIcons(false); + } + + self::$asideMenu->setIconType(Theme::getOption('layout', 'aside/menu-icon')); + } + + private static function initHorizontalMenu() + { + self::$horizontalMenu = new Menu(Theme::getOption('menu', 'horizontal'), Theme::getPagePath()); + self::$horizontalMenu->setItemLinkClass('py-3'); + self::$horizontalMenu->setIconType(Theme::getOption('layout', 'header/menu-icon', 'svg')); + } + + private static function initFooter() + { + if (Theme::getOption('layout', 'footer/width') == 'fluid') { + Theme::addHtmlClass('footer-container', 'container-fluid'); + } else { + Theme::addHtmlClass('footer-container', 'container-xxl'); + } + } + + // Public Methods + public static function initLayout() + { + self::initHeader(); + self::initPageTitle(); + self::initToolbar(); + self::initContent(); + self::initAside(); + self::initFooter(); + self::initAsideMenu(); + self::initHorizontalMenu(); + } + + public static function getAsideMenu() + { + return self::$asideMenu; + } + + public static function getHorizontalMenu() + { + return self::$horizontalMenu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getAsideMenu()->getBreadcrumb($options); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo2.php b/app/Core/Bootstraps/BootstrapDemo2.php new file mode 100644 index 0000000..d393ab3 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo2.php @@ -0,0 +1,160 @@ +displayIcons(false); + } + + self::$asideMenu->setIconType(Theme::getOption('layout', 'aside/menu-icon')); + } + + private static function initHorizontalMenu() + { + self::$horizontalMenu = new Menu(Theme::getOption('menu', 'horizontal'), Theme::getPagePath()); + self::$horizontalMenu->setItemLinkClass('py-3'); + self::$horizontalMenu->setIconType(Theme::getOption('layout', 'header/menu-icon')); + } + + private static function initFooter() + { + if (Theme::getOption('layout', 'footer/width') == 'fluid') { + Theme::addHtmlClass('footer-container', 'container-fluid'); + } else { + Theme::addHtmlClass('footer-container', 'container'); + } + } + + private static function initScripts() + { + Theme::addPageJs('js/custom/widgets.js'); + Theme::addPageJs('js/custom/apps/chat/chat.js'); + Theme::addPageJs('js/custom/modals/create-app.js'); + Theme::addPageJs('js/custom/modals/upgrade-plan.js'); + + if (Theme::getViewMode() !== 'release') { + Theme::addPageJs('js/custom/intro.js'); + } + } + + // Public Methods + public static function getAsideMenu() + { + return self::$asideMenu; + } + + public static function getHorizontalMenu() + { + return self::$horizontalMenu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getHorizontalMenu()->getBreadcrumb($options); + } + + public static function initLayout() + { + self::initPage(); + self::initHeader(); + self::initPageTitle(); + self::initToolbar(); + self::initContent(); + self::initAside(); + self::initFooter(); + self::initAsideMenu(); + self::initHorizontalMenu(); + self::initScripts(); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo3.php b/app/Core/Bootstraps/BootstrapDemo3.php new file mode 100644 index 0000000..a397b9e --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo3.php @@ -0,0 +1,116 @@ + false + ); + + return self::getMenu()->getBreadcrumb($options); + } + + public static function initLayout() + { + self::initHeader(); + self::initContent(); + self::initAside(); + self::initSidebar(); + self::initFooter(); + self::initMenu(); + self::initScripts(); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo4.php b/app/Core/Bootstraps/BootstrapDemo4.php new file mode 100644 index 0000000..2e51163 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo4.php @@ -0,0 +1,127 @@ +setIconType(Theme::getOption('layout', 'aside/menu-icon', 'svg')); + } + + private static function initHorizontalMenu() + { + self::$horizontalMenu = new Menu(Theme::getOption('menu', 'horizontal'), Theme::getPagePath()); + self::$horizontalMenu->setItemLinkClass('py-3'); + self::$horizontalMenu->setIconType(Theme::getOption('layout', 'header/menu-icon', 'svg')); + } + + private static function initFooter() + { + if (Theme::getOption('layout', 'footer/width') == 'fluid') { + Theme::addHtmlClass('footer-container', 'container-fluid'); + } else { + Theme::addHtmlClass('footer-container', 'container-xxl'); + } + } + + private static function initScripts() + { + Theme::addPageJs('js/custom/widgets.js'); + Theme::addPageJs('js/custom/apps/chat/chat.js'); + Theme::addPageJs('js/custom/modals/create-app.js'); + Theme::addPageJs('js/custom/modals/upgrade-plan.js'); + + if (Theme::getViewMode() !== 'release') { + Theme::addPageJs('js/custom/intro.js'); + } + } + + // Public Methods + public static function getAsideMenu() + { + return self::$asideMenu; + } + + public static function getHorizontalMenu() + { + return self::$horizontalMenu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getHorizontalMenu()->getBreadcrumb($options); + } + + public static function initLayout() + { + self::initHeader(); + self::initContent(); + self::initAside(); + self::initFooter(); + self::initAsideMenu(); + self::initHorizontalMenu(); + self::initScripts(); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo5.php b/app/Core/Bootstraps/BootstrapDemo5.php new file mode 100644 index 0000000..a08ef48 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo5.php @@ -0,0 +1,99 @@ +setItemLinkClass('py-3'); + self::$horizontalMenu->setIconType(Theme::getOption('layout', 'header/menu-icon', 'svg')); + } + + private static function initScripts() + { + Theme::addPageJs('js/custom/widgets.js'); + Theme::addPageJs('js/custom/apps/chat/chat.js'); + Theme::addPageJs('js/custom/modals/create-app.js'); + Theme::addPageJs('js/custom/modals/upgrade-plan.js'); + + if (Theme::getViewMode() !== 'release') { + Theme::addPageJs('js/custom/intro.js'); + } + } + + // Public Methods + public static function initLayout() + { + self::initHeader(); + self::initContent(); + self::initAside(); + self::initSidebar(); + self::initHorizontalMenu(); + self::initScripts(); + } + + public static function getHorizontalMenu() + { + return self::$horizontalMenu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getHorizontalMenu()->getBreadcrumb($options); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo6.php b/app/Core/Bootstraps/BootstrapDemo6.php new file mode 100644 index 0000000..ce05450 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo6.php @@ -0,0 +1,177 @@ +setIconType(Theme::getOption('layout', 'aside/menu-icon')); + } + + private static function initHorizontalMenu() + { + self::$horizontalMenu = new Menu(Theme::getOption('menu', 'horizontal'), Theme::getPagePath()); + self::$horizontalMenu->setItemLinkClass('py-3'); + self::$horizontalMenu->setIconType(Theme::getOption('layout', 'header/menu-icon', 'svg')); + } + + private static function initFooter() + { + if (Theme::getOption('layout', 'footer/width') == 'fluid') { + Theme::addHtmlClass('footer-container', 'container-fluid'); + } else { + Theme::addHtmlClass('footer-container', 'container-xxl'); + } + } + + private static function initScripts() + { + Theme::addPageJs('js/custom/widgets.js'); + Theme::addPageJs('js/custom/apps/chat/chat.js'); + Theme::addPageJs('js/custom/modals/create-app.js'); + Theme::addPageJs('js/custom/modals/upgrade-plan.js'); + + if (Theme::getViewMode() !== 'release') { + Theme::addPageJs('js/custom/intro.js'); + } + } + + // Public Methods + public static function getAsideMenu() + { + return self::$asideMenu; + } + + public static function getHorizontalMenu() + { + return self::$horizontalMenu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getHorizontalMenu()->getBreadcrumb($options); + } + + public static function initLayout() + { + self::initPage(); + self::initHeader(); + self::initPageTitle(); + self::initToolbar(); + self::initContent(); + self::initAside(); + self::initFooter(); + self::initAsideMenu(); + self::initHorizontalMenu(); + self::initScripts(); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo7.php b/app/Core/Bootstraps/BootstrapDemo7.php new file mode 100644 index 0000000..a847085 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo7.php @@ -0,0 +1,128 @@ +displayIcons(false); + } + + self::$menu->setIconType(Theme::getOption('layout', 'aside/menu-icon')); + } + + private static function initFooter() + { + if (Theme::getOption('layout', 'footer/width') == 'fluid') { + Theme::addHtmlClass('footer-container', 'container-fluid'); + } else { + Theme::addHtmlClass('footer-container', 'container-xxl'); + } + } + + private static function initScripts() + { + // Global widgets + Theme::addPageJs('js/widgets.bundle.js'); + + // Custom widgets + Theme::addPageJs('js/custom/widgets.js'); + + // Chat app + Theme::addPageJs('js/custom/apps/chat/chat.js'); + + if (Theme::getViewMode() !== 'release') { + Theme::addPageJs('js/custom/intro.js'); + } + } + + // Public Methods + public static function getMenu() + { + return self::$menu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getMenu()->getBreadcrumb($options); + } + + public static function initLayout() + { + self::initPage(); + self::initHeader(); + self::initContent(); + self::initAside(); + self::initFooter(); + self::initMenu(); + self::initScripts(); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo8.php b/app/Core/Bootstraps/BootstrapDemo8.php new file mode 100644 index 0000000..cdc28b5 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo8.php @@ -0,0 +1,97 @@ + false + ); + + return self::getAsideMenu()->getBreadcrumb($options); + } +} diff --git a/app/Core/Bootstraps/BootstrapDemo9.php b/app/Core/Bootstraps/BootstrapDemo9.php new file mode 100644 index 0000000..d5c56c5 --- /dev/null +++ b/app/Core/Bootstraps/BootstrapDemo9.php @@ -0,0 +1,127 @@ +setIconType(Theme::getOption('layout', 'aside/menu-icon', 'svg')); + } + + private static function initHorizontalMenu() + { + self::$horizontalMenu = new Menu(Theme::getOption('menu', 'horizontal'), Theme::getPagePath()); + self::$horizontalMenu->setItemLinkClass('py-3'); + self::$horizontalMenu->setIconType(Theme::getOption('layout', 'header/menu-icon', 'svg')); + } + + private static function initFooter() + { + if (Theme::getOption('layout', 'footer/width') == 'fluid') { + Theme::addHtmlClass('footer-container', 'container-fluid'); + } else { + Theme::addHtmlClass('footer-container', 'container-xxl'); + } + } + + private static function initScripts() + { + Theme::addPageJs('js/custom/widgets.js'); + Theme::addPageJs('js/custom/apps/chat/chat.js'); + Theme::addPageJs('js/custom/modals/create-app.js'); + Theme::addPageJs('js/custom/modals/upgrade-plan.js'); + + if (Theme::getViewMode() !== 'release') { + Theme::addPageJs('js/custom/intro.js'); + } + } + + // Public Methods + public static function getAsideMenu() + { + return self::$asideMenu; + } + + public static function getHorizontalMenu() + { + return self::$horizontalMenu; + } + + public static function getBreadcrumb() + { + $options = array( + 'skip-active' => false + ); + + return self::getHorizontalMenu()->getBreadcrumb($options); + } + + public static function initLayout() + { + self::initHeader(); + self::initContent(); + self::initAside(); + self::initFooter(); + self::initAsideMenu(); + self::initHorizontalMenu(); + self::initScripts(); + } +} diff --git a/app/Core/Components.php b/app/Core/Components.php new file mode 100644 index 0000000..56f8b28 --- /dev/null +++ b/app/Core/Components.php @@ -0,0 +1,81 @@ +'; + $html .= '
'; + + if (isset($options['avatar'])) { + $html .= 'Pic'; + } else { + $html .= ''; + $html .= $options['initials']['label']; + $html .= ''; + } + + // Online badge + if (isset($options['badge'])) { + $html .= $options['badge']; + } + + $html .= '
'; + $html .= ''; + + return $html; + } +} diff --git a/app/Core/Data.php b/app/Core/Data.php new file mode 100644 index 0000000..1255a44 --- /dev/null +++ b/app/Core/Data.php @@ -0,0 +1,622 @@ + array('name' => 'Afghanistan', 'flag' => 'flags/afghanistan.svg'), + 'AX' => array('name' => 'Aland Islands', 'flag' => 'flags/aland-islands.svg'), + 'AL' => array('name' => 'Albania', 'flag' => 'flags/albania.svg'), + 'DZ' => array('name' => 'Algeria', 'flag' => 'flags/algeria.svg'), + 'AS' => array('name' => 'American Samoa', 'flag' => 'flags/american-samoa.svg'), + 'AD' => array('name' => 'Andorra', 'flag' => 'flags/andorra.svg'), + 'AO' => array('name' => 'Angola', 'flag' => 'flags/angola.svg'), + 'AI' => array('name' => 'Anguilla', 'flag' => 'flags/anguilla.svg'), + 'AG' => array('name' => 'Antigua and Barbuda', 'flag' => 'flags/antigua-and-barbuda.svg'), + 'AR' => array('name' => 'Argentina', 'flag' => 'flags/argentina.svg'), + 'AM' => array('name' => 'Armenia', 'flag' => 'flags/armenia.svg'), + 'AW' => array('name' => 'Aruba', 'flag' => 'flags/aruba.svg'), + 'AU' => array('name' => 'Australia', 'flag' => 'flags/australia.svg'), + 'AT' => array('name' => 'Austria', 'flag' => 'flags/austria.svg'), + 'AZ' => array('name' => 'Azerbaijan', 'flag' => 'flags/azerbaijan.svg'), + 'BS' => array('name' => 'Bahamas', 'flag' => 'flags/bahamas.svg'), + 'BH' => array('name' => 'Bahrain', 'flag' => 'flags/bahrain.svg'), + 'BD' => array('name' => 'Bangladesh', 'flag' => 'flags/bangladesh.svg'), + 'BB' => array('name' => 'Barbados', 'flag' => 'flags/barbados.svg'), + 'BY' => array('name' => 'Belarus', 'flag' => 'flags/belarus.svg'), + 'BE' => array('name' => 'Belgium', 'flag' => 'flags/belgium.svg'), + 'BZ' => array('name' => 'Belize', 'flag' => 'flags/belize.svg'), + 'BJ' => array('name' => 'Benin', 'flag' => 'flags/benin.svg'), + 'BM' => array('name' => 'Bermuda', 'flag' => 'flags/bermuda.svg'), + 'BT' => array('name' => 'Bhutan', 'flag' => 'flags/bhutan.svg'), + 'BO' => array('name' => 'Bolivia, Plurinational State of', 'flag' => 'flags/bolivia.svg'), + 'BQ' => array('name' => 'Bonaire, Sint Eustatius and Saba', 'flag' => 'flags/bonaire.svg'), + 'BA' => array('name' => 'Bosnia and Herzegovina', 'flag' => 'flags/bosnia-and-herzegovina.svg'), + 'BW' => array('name' => 'Botswana', 'flag' => 'flags/botswana.svg'), + 'BR' => array('name' => 'Brazil', 'flag' => 'flags/brazil.svg'), + 'IO' => array('name' => 'British Indian Ocean Territory', 'flag' => 'flags/british-indian-ocean-territory.svg'), + 'BN' => array('name' => 'Brunei Darussalam', 'flag' => 'flags/brunei.svg'), + 'BG' => array('name' => 'Bulgaria', 'flag' => 'flags/bulgaria.svg'), + 'BF' => array('name' => 'Burkina Faso', 'flag' => 'flags/burkina-faso.svg'), + 'BI' => array('name' => 'Burundi', 'flag' => 'flags/burundi.svg'), + 'KH' => array('name' => 'Cambodia', 'flag' => 'flags/cambodia.svg'), + 'CM' => array('name' => 'Cameroon', 'flag' => 'flags/cameroon.svg'), + 'CA' => array('name' => 'Canada', 'flag' => 'flags/canada.svg'), + 'CV' => array('name' => 'Cape Verde', 'flag' => 'flags/cape-verde.svg'), + 'KY' => array('name' => 'Cayman Islands', 'flag' => 'flags/cayman-islands.svg'), + 'CF' => array('name' => 'Central African Republic', 'flag' => 'flags/central-african-republic.svg'), + 'TD' => array('name' => 'Chad', 'flag' => 'flags/chad.svg'), + 'CL' => array('name' => 'Chile', 'flag' => 'flags/chile.svg'), + 'CN' => array('name' => 'China', 'flag' => 'flags/china.svg'), + 'CX' => array('name' => 'Christmas Island', 'flag' => 'flags/christmas-island.svg'), + 'CC' => array('name' => 'Cocos (Keeling) Islands', 'flag' => 'flags/cocos-island.svg'), + 'CO' => array('name' => 'Colombia', 'flag' => 'flags/colombia.svg'), + 'KM' => array('name' => 'Comoros', 'flag' => 'flags/comoros.svg'), + 'CK' => array('name' => 'Cook Islands', 'flag' => 'flags/cook-islands.svg'), + 'CR' => array('name' => 'Costa Rica', 'flag' => 'flags/costa-rica.svg'), + 'CI' => array('name' => 'Côte d\'Ivoire', 'flag' => 'flags/ivory-coast.svg'), + 'HR' => array('name' => 'Croatia', 'flag' => 'flags/croatia.svg'), + 'CU' => array('name' => 'Cuba', 'flag' => 'flags/cuba.svg'), + 'CW' => array('name' => 'Curaçao', 'flag' => 'flags/curacao.svg'), + 'CZ' => array('name' => 'Czech Republic', 'flag' => 'flags/czech-republic.svg'), + 'DK' => array('name' => 'Denmark', 'flag' => 'flags/denmark.svg'), + 'DJ' => array('name' => 'Djibouti', 'flag' => 'flags/djibouti.svg'), + 'DM' => array('name' => 'Dominica', 'flag' => 'flags/dominica.svg'), + 'DO' => array('name' => 'Dominican Republic', 'flag' => 'flags/dominican-republic.svg'), + 'EC' => array('name' => 'Ecuador', 'flag' => 'flags/ecuador.svg'), + 'EG' => array('name' => 'Egypt', 'flag' => 'flags/egypt.svg'), + 'SV' => array('name' => 'El Salvador', 'flag' => 'flags/el-salvador.svg'), + 'GQ' => array('name' => 'Equatorial Guinea', 'flag' => 'flags/equatorial-guinea.svg'), + 'ER' => array('name' => 'Eritrea', 'flag' => 'flags/eritrea.svg'), + 'EE' => array('name' => 'Estonia', 'flag' => 'flags/estonia.svg'), + 'ET' => array('name' => 'Ethiopia', 'flag' => 'flags/ethiopia.svg'), + 'FK' => array('name' => 'Falkland Islands (Malvinas)', 'flag' => 'flags/falkland-islands.svg'), + 'FJ' => array('name' => 'Fiji', 'flag' => 'flags/fiji.svg'), + 'FI' => array('name' => 'Finland', 'flag' => 'flags/finland.svg'), + 'FR' => array('name' => 'France', 'flag' => 'flags/france.svg'), + 'PF' => array('name' => 'French Polynesia', 'flag' => 'flags/french-polynesia.svg'), + 'GA' => array('name' => 'Gabon', 'flag' => 'flags/gabon.svg'), + 'GM' => array('name' => 'Gambia', 'flag' => 'flags/gambia.svg'), + 'GE' => array('name' => 'Georgia', 'flag' => 'flags/georgia.svg'), + 'DE' => array('name' => 'Germany', 'flag' => 'flags/germany.svg'), + 'GH' => array('name' => 'Ghana', 'flag' => 'flags/ghana.svg'), + 'GI' => array('name' => 'Gibraltar', 'flag' => 'flags/gibraltar.svg'), + 'GR' => array('name' => 'Greece', 'flag' => 'flags/greece.svg'), + 'GL' => array('name' => 'Greenland', 'flag' => 'flags/greenland.svg'), + 'GD' => array('name' => 'Grenada', 'flag' => 'flags/grenada.svg'), + 'GU' => array('name' => 'Guam', 'flag' => 'flags/guam.svg'), + 'GT' => array('name' => 'Guatemala', 'flag' => 'flags/guatemala.svg'), + 'GG' => array('name' => 'Guernsey', 'flag' => 'flags/guernsey.svg'), + 'GN' => array('name' => 'Guinea', 'flag' => 'flags/guinea.svg'), + 'GW' => array('name' => 'Guinea-Bissau', 'flag' => 'flags/guinea-bissau.svg'), + 'HT' => array('name' => 'Haiti', 'flag' => 'flags/haiti.svg'), + 'VA' => array('name' => 'Holy See (Vatican City State)', 'flag' => 'flags/vatican-city.svg'), + 'HN' => array('name' => 'Honduras', 'flag' => 'flags/honduras.svg'), + 'HK' => array('name' => 'Hong Kong', 'flag' => 'flags/hong-kong.svg'), + 'HU' => array('name' => 'Hungary', 'flag' => 'flags/hungary.svg'), + 'IS' => array('name' => 'Iceland', 'flag' => 'flags/iceland.svg'), + 'IN' => array('name' => 'India', 'flag' => 'flags/india.svg'), + 'ID' => array('name' => 'Indonesia', 'flag' => 'flags/indonesia.svg'), + 'IR' => array('name' => 'Iran, Islamic Republic of', 'flag' => 'flags/iran.svg'), + 'IQ' => array('name' => 'Iraq', 'flag' => 'flags/iraq.svg'), + 'IE' => array('name' => 'Ireland', 'flag' => 'flags/ireland.svg'), + 'IM' => array('name' => 'Isle of Man', 'flag' => 'flags/isle-of-man.svg'), + 'IL' => array('name' => 'Israel', 'flag' => 'flags/israel.svg'), + 'IT' => array('name' => 'Italy', 'flag' => 'flags/italy.svg'), + 'JM' => array('name' => 'Jamaica', 'flag' => 'flags/jamaica.svg'), + 'JP' => array('name' => 'Japan', 'flag' => 'flags/japan.svg'), + 'JE' => array('name' => 'Jersey', 'flag' => 'flags/jersey.svg'), + 'JO' => array('name' => 'Jordan', 'flag' => 'flags/jordan.svg'), + 'KZ' => array('name' => 'Kazakhstan', 'flag' => 'flags/kazakhstan.svg'), + 'KE' => array('name' => 'Kenya', 'flag' => 'flags/kenya.svg'), + 'KI' => array('name' => 'Kiribati', 'flag' => 'flags/kiribati.svg'), + 'KP' => array('name' => 'Korea, Democratic People\'s Republic of', 'flag' => 'flags/north-korea.svg'), + 'KW' => array('name' => 'Kuwait', 'flag' => 'flags/kuwait.svg'), + 'KG' => array('name' => 'Kyrgyzstan', 'flag' => 'flags/kyrgyzstan.svg'), + 'LA' => array('name' => 'Lao People\'s Democratic Republic', 'flag' => 'flags/laos.svg'), + 'LV' => array('name' => 'Latvia', 'flag' => 'flags/latvia.svg'), + 'LB' => array('name' => 'Lebanon', 'flag' => 'flags/lebanon.svg'), + 'LS' => array('name' => 'Lesotho', 'flag' => 'flags/lesotho.svg'), + 'LR' => array('name' => 'Liberia', 'flag' => 'flags/liberia.svg'), + 'LY' => array('name' => 'Libya', 'flag' => 'flags/libya.svg'), + 'LI' => array('name' => 'Liechtenstein', 'flag' => 'flags/liechtenstein.svg'), + 'LT' => array('name' => 'Lithuania', 'flag' => 'flags/lithuania.svg'), + 'LU' => array('name' => 'Luxembourg', 'flag' => 'flags/luxembourg.svg'), + 'MO' => array('name' => 'Macao', 'flag' => 'flags/macao.svg'), + 'MG' => array('name' => 'Madagascar', 'flag' => 'flags/madagascar.svg'), + 'MW' => array('name' => 'Malawi', 'flag' => 'flags/malawi.svg'), + 'MY' => array('name' => 'Malaysia', 'flag' => 'flags/malaysia.svg'), + 'MV' => array('name' => 'Maldives', 'flag' => 'flags/maldives.svg'), + 'ML' => array('name' => 'Mali', 'flag' => 'flags/mali.svg'), + 'MT' => array('name' => 'Malta', 'flag' => 'flags/malta.svg'), + 'MH' => array('name' => 'Marshall Islands', 'flag' => 'flags/marshall-island.svg'), + 'MQ' => array('name' => 'Martinique', 'flag' => 'flags/martinique.svg'), + 'MR' => array('name' => 'Mauritania', 'flag' => 'flags/mauritania.svg'), + 'MU' => array('name' => 'Mauritius', 'flag' => 'flags/mauritius.svg'), + 'MX' => array('name' => 'Mexico', 'flag' => 'flags/mexico.svg'), + 'FM' => array('name' => 'Micronesia, Federated States of', 'flag' => 'flags/micronesia.svg'), + 'MD' => array('name' => 'Moldova, Republic of', 'flag' => 'flags/moldova.svg'), + 'MC' => array('name' => 'Monaco', 'flag' => 'flags/monaco.svg'), + 'MN' => array('name' => 'Mongolia', 'flag' => 'flags/mongolia.svg'), + 'ME' => array('name' => 'Montenegro', 'flag' => 'flags/montenegro.svg'), + 'MS' => array('name' => 'Montserrat', 'flag' => 'flags/montserrat.svg'), + 'MA' => array('name' => 'Morocco', 'flag' => 'flags/morocco.svg'), + 'MZ' => array('name' => 'Mozambique', 'flag' => 'flags/mozambique.svg'), + 'MM' => array('name' => 'Myanmar', 'flag' => 'flags/myanmar.svg'), + 'NA' => array('name' => 'Namibia', 'flag' => 'flags/namibia.svg'), + 'NR' => array('name' => 'Nauru', 'flag' => 'flags/nauru.svg'), + 'NP' => array('name' => 'Nepal', 'flag' => 'flags/nepal.svg'), + 'NL' => array('name' => 'Netherlands', 'flag' => 'flags/netherlands.svg'), + 'NZ' => array('name' => 'New Zealand', 'flag' => 'flags/new-zealand.svg'), + 'NI' => array('name' => 'Nicaragua', 'flag' => 'flags/nicaragua.svg'), + 'NE' => array('name' => 'Niger', 'flag' => 'flags/niger.svg'), + 'NG' => array('name' => 'Nigeria', 'flag' => 'flags/nigeria.svg'), + 'NU' => array('name' => 'Niue', 'flag' => 'flags/niue.svg'), + 'NF' => array('name' => 'Norfolk Island', 'flag' => 'flags/norfolk-island.svg'), + 'MP' => array('name' => 'Northern Mariana Islands', 'flag' => 'flags/northern-mariana-islands.svg'), + 'NO' => array('name' => 'Norway', 'flag' => 'flags/norway.svg'), + 'OM' => array('name' => 'Oman', 'flag' => 'flags/oman.svg'), + 'PK' => array('name' => 'Pakistan', 'flag' => 'flags/pakistan.svg'), + 'PW' => array('name' => 'Palau', 'flag' => 'flags/palau.svg'), + 'PS' => array('name' => 'Palestinian Territory, Occupied', 'flag' => 'flags/palestine.svg'), + 'PA' => array('name' => 'Panama', 'flag' => 'flags/panama.svg'), + 'PG' => array('name' => 'Papua New Guinea', 'flag' => 'flags/papua-new-guinea.svg'), + 'PY' => array('name' => 'Paraguay', 'flag' => 'flags/paraguay.svg'), + 'PE' => array('name' => 'Peru', 'flag' => 'flags/peru.svg'), + 'PH' => array('name' => 'Philippines', 'flag' => 'flags/philippines.svg'), + 'PL' => array('name' => 'Poland', 'flag' => 'flags/poland.svg'), + 'PT' => array('name' => 'Portugal', 'flag' => 'flags/portugal.svg'), + 'PR' => array('name' => 'Puerto Rico', 'flag' => 'flags/puerto-rico.svg'), + 'QA' => array('name' => 'Qatar', 'flag' => 'flags/qatar.svg'), + 'RO' => array('name' => 'Romania', 'flag' => 'flags/romania.svg'), + 'RU' => array('name' => 'Russian Federation', 'flag' => 'flags/russia.svg'), + 'RW' => array('name' => 'Rwanda', 'flag' => 'flags/rwanda.svg'), + 'BL' => array('name' => 'Saint Barthélemy', 'flag' => 'flags/st-barts.svg'), + 'KN' => array('name' => 'Saint Kitts and Nevis', 'flag' => 'flags/saint-kitts-and-nevis.svg'), + 'LC' => array('name' => 'Saint Lucia', 'flag' => 'flags/st-lucia.svg'), + 'MF' => array('name' => 'Saint Martin (French part)', 'flag' => 'flags/sint-maarten.svg'), + // 'PM' => array('name' => 'Saint Pierre and Miquelon', 'flag' => 'flags/saint-pierre.svg'), + 'VC' => array('name' => 'Saint Vincent and the Grenadines', 'flag' => 'flags/st-vincent-and-the-grenadines.svg'), + 'WS' => array('name' => 'Samoa', 'flag' => 'flags/samoa.svg'), + 'SM' => array('name' => 'San Marino', 'flag' => 'flags/san-marino.svg'), + 'ST' => array('name' => 'Sao Tome and Principe', 'flag' => 'flags/sao-tome-and-prince.svg'), + 'SA' => array('name' => 'Saudi Arabia', 'flag' => 'flags/saudi-arabia.svg'), + 'SN' => array('name' => 'Senegal', 'flag' => 'flags/senegal.svg'), + 'RS' => array('name' => 'Serbia', 'flag' => 'flags/serbia.svg'), + 'SC' => array('name' => 'Seychelles', 'flag' => 'flags/seychelles.svg'), + 'SL' => array('name' => 'Sierra Leone', 'flag' => 'flags/sierra-leone.svg'), + 'SG' => array('name' => 'Singapore', 'flag' => 'flags/singapore.svg'), + 'SX' => array('name' => 'Sint Maarten (Dutch part)', 'flag' => 'flags/sint-maarten.svg'), + 'SK' => array('name' => 'Slovakia', 'flag' => 'flags/slovakia.svg'), + 'SI' => array('name' => 'Slovenia', 'flag' => 'flags/slovenia.svg'), + 'SB' => array('name' => 'Solomon Islands', 'flag' => 'flags/solomon-islands.svg'), + 'SO' => array('name' => 'Somalia', 'flag' => 'flags/somalia.svg'), + 'ZA' => array('name' => 'South Africa', 'flag' => 'flags/south-africa.svg'), + 'KR' => array('name' => 'South Korea', 'flag' => 'flags/south-korea.svg'), + 'SS' => array('name' => 'South Sudan', 'flag' => 'flags/south-sudan.svg'), + 'ES' => array('name' => 'Spain', 'flag' => 'flags/spain.svg'), + 'LK' => array('name' => 'Sri Lanka', 'flag' => 'flags/sri-lanka.svg'), + 'SD' => array('name' => 'Sudan', 'flag' => 'flags/sudan.svg'), + 'SR' => array('name' => 'Suriname', 'flag' => 'flags/suriname.svg'), + 'SZ' => array('name' => 'Swaziland', 'flag' => 'flags/swaziland.svg'), + 'SE' => array('name' => 'Sweden', 'flag' => 'flags/sweden.svg'), + 'CH' => array('name' => 'Switzerland', 'flag' => 'flags/switzerland.svg'), + 'SY' => array('name' => 'Syrian Arab Republic', 'flag' => 'flags/syria.svg'), + 'TW' => array('name' => 'Taiwan, Province of China', 'flag' => 'flags/taiwan.svg'), + 'TJ' => array('name' => 'Tajikistan', 'flag' => 'flags/tajikistan.svg'), + 'TZ' => array('name' => 'Tanzania, United Republic of', 'flag' => 'flags/tanzania.svg'), + 'TH' => array('name' => 'Thailand', 'flag' => 'flags/thailand.svg'), + 'TG' => array('name' => 'Togo', 'flag' => 'flags/togo.svg'), + 'TK' => array('name' => 'Tokelau', 'flag' => 'flags/tokelau.svg'), + 'TO' => array('name' => 'Tonga', 'flag' => 'flags/tonga.svg'), + 'TT' => array('name' => 'Trinidad and Tobago', 'flag' => 'flags/trinidad-and-tobago.svg'), + 'TN' => array('name' => 'Tunisia', 'flag' => 'flags/tunisia.svg'), + 'TR' => array('name' => 'Turkey', 'flag' => 'flags/turkey.svg'), + 'TM' => array('name' => 'Turkmenistan', 'flag' => 'flags/turkmenistan.svg'), + 'TC' => array('name' => 'Turks and Caicos Islands', 'flag' => 'flags/turks-and-caicos.svg'), + 'TV' => array('name' => 'Tuvalu', 'flag' => 'flags/tuvalu.svg'), + 'UG' => array('name' => 'Uganda', 'flag' => 'flags/uganda.svg'), + 'UA' => array('name' => 'Ukraine', 'flag' => 'flags/ukraine.svg'), + 'AE' => array('name' => 'United Arab Emirates', 'flag' => 'flags/united-arab-emirates.svg'), + 'GB' => array('name' => 'United Kingdom', 'flag' => 'flags/united-kingdom.svg'), + 'US' => array('name' => 'United States', 'flag' => 'flags/united-states.svg'), + 'UY' => array('name' => 'Uruguay', 'flag' => 'flags/uruguay.svg'), + 'UZ' => array('name' => 'Uzbekistan', 'flag' => 'flags/uzbekistan.svg'), + 'VU' => array('name' => 'Vanuatu', 'flag' => 'flags/vanuatu.svg'), + 'VE' => array('name' => 'Venezuela, Bolivarian Republic of', 'flag' => 'flags/venezuela.svg'), + 'VN' => array('name' => 'Vietnam', 'flag' => 'flags/vietnam.svg'), + 'VI' => array('name' => 'Virgin Islands', 'flag' => 'flags/virgin-islands.svg'), + 'YE' => array('name' => 'Yemen', 'flag' => 'flags/yemen.svg'), + 'ZM' => array('name' => 'Zambia', 'flag' => 'flags/zambia.svg'), + 'ZW' => array('name' => 'Zimbabwe', 'flag' => 'flags/zimbabwe.svg') + ); + } + + public static function getLanguagesList() + { + $countryArr = Data::getCountriesList(); + + return array( + 'id' => array('name' => 'Bahasa Indonesia - Indonesian', 'country' => $countryArr['ID']), + 'msa' => array('name' => 'Bahasa Melayu - Malay', 'country' => $countryArr['MY']), + 'ca' => array('name' => 'Català - Catalan', 'country' => $countryArr['CA']), + 'cs' => array('name' => 'Čeština - Czech', 'country' => $countryArr['CZ']), + 'da' => array('name' => 'Dansk - Danish', 'country' => $countryArr['NL']), + 'de' => array('name' => 'Deutsch - German', 'country' => $countryArr['DE']), + 'en' => array('name' => 'English', 'country' => $countryArr['GB']), + 'en-gb' => array('name' => 'English UK - British English', 'country' => $countryArr['GB']), + 'es' => array('name' => 'Español - Spanish', 'country' => $countryArr['ES']), + 'fil' => array('name' => 'Filipino', 'country' => $countryArr['PH']), + 'fr' => array('name' => 'Français - French', 'country' => $countryArr['FR']), + 'ga' => array('name' => 'Gaeilge - Irish (beta)', 'country' => $countryArr['GA']), + 'gl' => array('name' => 'Galego - Galician (beta)', 'country' => $countryArr['GL']), + 'hr' => array('name' => 'Hrvatski - Croatian', 'country' => $countryArr['HR']), + 'it' => array('name' => 'Italiano - Italian', 'country' => $countryArr['IT']), + 'hu' => array('name' => 'Magyar - Hungarian', 'country' => $countryArr['HU']), + 'nl' => array('name' => 'Nederlands - Dutch', 'country' => $countryArr['NL']), + 'no' => array('name' => 'Norsk - Norwegian', 'country' => $countryArr['NO']), + 'pl' => array('name' => 'Polski - Polish', 'country' => $countryArr['PL']), + 'pt' => array('name' => 'Português - Portuguese', 'country' => $countryArr['PT']), + 'ro' => array('name' => 'Română - Romanian', 'country' => $countryArr['RO']), + 'sk' => array('name' => 'Slovenčina - Slovak', 'country' => $countryArr['SK']), + 'fi' => array('name' => 'Suomi - Finnish', 'country' => $countryArr['FI']), + 'sv' => array('name' => 'Svenska - Swedish', 'country' => $countryArr['SV']), + 'vi' => array('name' => 'Tiếng Việt - Vietnamese', 'country' => $countryArr['VI']), + 'tr' => array('name' => 'Türkçe - Turkish', 'country' => $countryArr['TR']), + 'el' => array('name' => 'Ελληνικά - Greek', 'country' => $countryArr['GR']), + 'bg' => array('name' => 'Български език - Bulgarian', 'country' => $countryArr['BG']), + 'ru' => array('name' => 'Русский - Russian', 'country' => $countryArr['RU']), + 'sr' => array('name' => 'Српски - Serbian', 'country' => $countryArr['SR']), + 'uk' => array('name' => 'Українська мова - Ukrainian', 'country' => $countryArr['UA']), + 'he' => array('name' => 'עִבְרִית - Hebrew', 'country' => $countryArr['IL']), + 'ur' => array('name' => 'اردو - Urdu (beta)', 'country' => $countryArr['PK']), + 'ar' => array('name' => 'العربية - Arabic', 'country' => $countryArr['AR']), + 'fa' => array('name' => 'فارسی - Persian', 'country' => $countryArr['AR']), + 'mr' => array('name' => 'मराठी - Marathi', 'country' => $countryArr['MR']), + 'hi' => array('name' => 'हिन्दी - Hindi', 'country' => $countryArr['IN']), + 'bn' => array('name' => 'বাংলা - Bangla', 'country' => $countryArr['BD']), + 'gu' => array('name' => 'ગુજરાતી - Gujarati', 'country' => $countryArr['GU']), + 'ta' => array('name' => 'தமிழ் - Tamil', 'country' => $countryArr['IN']), + 'kn' => array('name' => 'ಕನ್ನಡ - Kannada', 'country' => $countryArr['KN']), + 'th' => array('name' => 'ภาษาไทย - Thai', 'country' => $countryArr['TH']), + 'ko' => array('name' => '한국어 - Korean', 'country' => $countryArr['KR']), + 'ja' => array('name' => '日本語 - Japanese', 'country' => $countryArr['JP']), + 'zh-cn' => array('name' => '简体中文 - Simplified Chinese', 'country' => $countryArr['CN']), + 'zh-tw' => array('name' => '繁體中文 - Traditional Chinese', 'country' => $countryArr['TW']) + ); + } + + public static function getCurrencyList() + { + $countryArr = Data::getCountriesList(); + + return array( + 'USD' => array('name' => 'USA dollar', 'country' => $countryArr['US']), + 'GBP' => array('name' => 'British pound', 'country' => $countryArr['GB']), + 'AUD' => array('name' => 'Australian dollar', 'country' => $countryArr['AU']), + 'JPY' => array('name' => 'Japanese yen', 'country' => $countryArr['JP']), + 'SEK' => array('name' => 'Swedish krona', 'country' => $countryArr['SE']), + 'CAD' => array('name' => 'Canadian dollar', 'country' => $countryArr['CA']), + 'CHF' => array('name' => 'Swiss franc', 'country' => $countryArr['CH']) + ); + } + + public static function getTimeZonesList() + { + return array( + 'International Date Line West' => array('name' => '(GMT-11:00) International Date Line West', 'offset' => '-39600'), + 'Midway Island' => array('name' => '(GMT-11:00) Midway Island', 'offset' => '-39600'), + 'Samoa' => array('name' => '(GMT-11:00) Samoa', 'offset' => '-39600'), + 'Hawaii' => array('name' => '(GMT-10:00) Hawaii', 'offset' => '-36000'), + 'Alaska' => array('name' => '(GMT-08:00) Alaska', 'offset' => '-28800'), + 'Pacific Time (US & Canada)' => array('name' => '(GMT-07:00) Pacific Time (US & Canada)', 'offset' => '-25200'), + 'Tijuana' => array('name' => '(GMT-07:00) Tijuana', 'offset' => '-25200'), + 'Arizona' => array('name' => '(GMT-07:00) Arizona', 'offset' => '-25200'), + 'Mountain Time (US & Canada)' => array('name' => '(GMT-06:00) Mountain Time (US & Canada)', 'offset' => '-21600'), + 'Chihuahua' => array('name' => '(GMT-06:00) Chihuahua', 'offset' => '-21600'), + 'Mazatlan' => array('name' => '(GMT-06:00) Mazatlan', 'offset' => '-21600'), + 'Saskatchewan' => array('name' => '(GMT-06:00) Saskatchewan', 'offset' => '-21600'), + 'Central America' => array('name' => '(GMT-06:00) Central America', 'offset' => '-21600'), + 'Central Time (US & Canada)' => array('name' => '(GMT-05:00) Central Time (US & Canada)', 'offset' => '-18000'), + 'Guadalajara' => array('name' => '(GMT-05:00) Guadalajara', 'offset' => '-18000'), + 'Mexico City' => array('name' => '(GMT-05:00) Mexico City', 'offset' => '-18000'), + 'Monterrey' => array('name' => '(GMT-05:00) Monterrey', 'offset' => '-18000'), + 'Bogota' => array('name' => '(GMT-05:00) Bogota', 'offset' => '-18000'), + 'Lima' => array('name' => '(GMT-05:00) Lima', 'offset' => '-18000'), + 'Quito' => array('name' => '(GMT-05:00) Quito', 'offset' => '-18000'), + 'Eastern Time (US & Canada)' => array('name' => '(GMT-04:00) Eastern Time (US & Canada)', 'offset' => '-14400'), + 'Indiana (East)' => array('name' => '(GMT-04:00) Indiana (East)', 'offset' => '-14400'), + 'Caracas' => array('name' => '(GMT-04:00) Caracas', 'offset' => '-14400'), + 'La Paz' => array('name' => '(GMT-04:00) La Paz', 'offset' => '-14400'), + 'Georgetown' => array('name' => '(GMT-04:00) Georgetown', 'offset' => '-14400'), + 'Atlantic Time (Canada)' => array('name' => '(GMT-03:00) Atlantic Time (Canada)', 'offset' => '-10800'), + 'Santiago' => array('name' => '(GMT-03:00) Santiago', 'offset' => '-10800'), + 'Brasilia' => array('name' => '(GMT-03:00) Brasilia', 'offset' => '-10800'), + 'Buenos Aires' => array('name' => '(GMT-03:00) Buenos Aires', 'offset' => '-10800'), + 'Newfoundland' => array('name' => '(GMT-02:30) Newfoundland', 'offset' => '-9000'), + 'Greenland' => array('name' => '(GMT-02:00) Greenland', 'offset' => '-7200'), + 'Mid-Atlantic' => array('name' => '(GMT-02:00) Mid-Atlantic', 'offset' => '-7200'), + 'Cape Verde Is.' => array('name' => '(GMT-01:00) Cape Verde Is.', 'offset' => '-3600'), + 'Azores' => array('name' => '(GMT) Azores', 'offset' => '0'), + 'Monrovia' => array('name' => '(GMT) Monrovia', 'offset' => '0'), + 'UTC' => array('name' => '(GMT) UTC', 'offset' => '0'), + 'Dublin' => array('name' => '(GMT+01:00) Dublin', 'offset' => '3600'), + 'Edinburgh' => array('name' => '(GMT+01:00) Edinburgh', 'offset' => '3600'), + 'Lisbon' => array('name' => '(GMT+01:00) Lisbon', 'offset' => '3600'), + 'London' => array('name' => '(GMT+01:00) London', 'offset' => '3600'), + 'Casablanca' => array('name' => '(GMT+01:00) Casablanca', 'offset' => '3600'), + 'West Central Africa' => array('name' => '(GMT+01:00) West Central Africa', 'offset' => '3600'), + 'Belgrade' => array('name' => '(GMT+02:00) Belgrade', 'offset' => '7200'), + 'Bratislava' => array('name' => '(GMT+02:00) Bratislava', 'offset' => '7200'), + 'Budapest' => array('name' => '(GMT+02:00) Budapest', 'offset' => '7200'), + 'Ljubljana' => array('name' => '(GMT+02:00) Ljubljana', 'offset' => '7200'), + 'Prague' => array('name' => '(GMT+02:00) Prague', 'offset' => '7200'), + 'Sarajevo' => array('name' => '(GMT+02:00) Sarajevo', 'offset' => '7200'), + 'Skopje' => array('name' => '(GMT+02:00) Skopje', 'offset' => '7200'), + 'Warsaw' => array('name' => '(GMT+02:00) Warsaw', 'offset' => '7200'), + 'Zagreb' => array('name' => '(GMT+02:00) Zagreb', 'offset' => '7200'), + 'Brussels' => array('name' => '(GMT+02:00) Brussels', 'offset' => '7200'), + 'Copenhagen' => array('name' => '(GMT+02:00) Copenhagen', 'offset' => '7200'), + 'Madrid' => array('name' => '(GMT+02:00) Madrid', 'offset' => '7200'), + 'Paris' => array('name' => '(GMT+02:00) Paris', 'offset' => '7200'), + 'Amsterdam' => array('name' => '(GMT+02:00) Amsterdam', 'offset' => '7200'), + 'Berlin' => array('name' => '(GMT+02:00) Berlin', 'offset' => '7200'), + 'Bern' => array('name' => '(GMT+02:00) Bern', 'offset' => '7200'), + 'Rome' => array('name' => '(GMT+02:00) Rome', 'offset' => '7200'), + 'Stockholm' => array('name' => '(GMT+02:00) Stockholm', 'offset' => '7200'), + 'Vienna' => array('name' => '(GMT+02:00) Vienna', 'offset' => '7200'), + 'Cairo' => array('name' => '(GMT+02:00) Cairo', 'offset' => '7200'), + 'Harare' => array('name' => '(GMT+02:00) Harare', 'offset' => '7200'), + 'Pretoria' => array('name' => '(GMT+02:00) Pretoria', 'offset' => '7200'), + 'Bucharest' => array('name' => '(GMT+03:00) Bucharest', 'offset' => '10800'), + 'Helsinki' => array('name' => '(GMT+03:00) Helsinki', 'offset' => '10800'), + 'Kiev' => array('name' => '(GMT+03:00) Kiev', 'offset' => '10800'), + 'Kyiv' => array('name' => '(GMT+03:00) Kyiv', 'offset' => '10800'), + 'Riga' => array('name' => '(GMT+03:00) Riga', 'offset' => '10800'), + 'Sofia' => array('name' => '(GMT+03:00) Sofia', 'offset' => '10800'), + 'Tallinn' => array('name' => '(GMT+03:00) Tallinn', 'offset' => '10800'), + 'Vilnius' => array('name' => '(GMT+03:00) Vilnius', 'offset' => '10800'), + 'Athens' => array('name' => '(GMT+03:00) Athens', 'offset' => '10800'), + 'Istanbul' => array('name' => '(GMT+03:00) Istanbul', 'offset' => '10800'), + 'Minsk' => array('name' => '(GMT+03:00) Minsk', 'offset' => '10800'), + 'Jerusalem' => array('name' => '(GMT+03:00) Jerusalem', 'offset' => '10800'), + 'Moscow' => array('name' => '(GMT+03:00) Moscow', 'offset' => '10800'), + 'St. Petersburg' => array('name' => '(GMT+03:00) St. Petersburg', 'offset' => '10800'), + 'Volgograd' => array('name' => '(GMT+03:00) Volgograd', 'offset' => '10800'), + 'Kuwait' => array('name' => '(GMT+03:00) Kuwait', 'offset' => '10800'), + 'Riyadh' => array('name' => '(GMT+03:00) Riyadh', 'offset' => '10800'), + 'Nairobi' => array('name' => '(GMT+03:00) Nairobi', 'offset' => '10800'), + 'Baghdad' => array('name' => '(GMT+03:00) Baghdad', 'offset' => '10800'), + 'Abu Dhabi' => array('name' => '(GMT+04:00) Abu Dhabi', 'offset' => '14400'), + 'Muscat' => array('name' => '(GMT+04:00) Muscat', 'offset' => '14400'), + 'Baku' => array('name' => '(GMT+04:00) Baku', 'offset' => '14400'), + 'Tbilisi' => array('name' => '(GMT+04:00) Tbilisi', 'offset' => '14400'), + 'Yerevan' => array('name' => '(GMT+04:00) Yerevan', 'offset' => '14400'), + 'Tehran' => array('name' => '(GMT+04:30) Tehran', 'offset' => '16200'), + 'Kabul' => array('name' => '(GMT+04:30) Kabul', 'offset' => '16200'), + 'Ekaterinburg' => array('name' => '(GMT+05:00) Ekaterinburg', 'offset' => '18000'), + 'Islamabad' => array('name' => '(GMT+05:00) Islamabad', 'offset' => '18000'), + 'Karachi' => array('name' => '(GMT+05:00) Karachi', 'offset' => '18000'), + 'Tashkent' => array('name' => '(GMT+05:00) Tashkent', 'offset' => '18000'), + 'Chennai' => array('name' => '(GMT+05:30) Chennai', 'offset' => '19800'), + 'Kolkata' => array('name' => '(GMT+05:30) Kolkata', 'offset' => '19800'), + 'Mumbai' => array('name' => '(GMT+05:30) Mumbai', 'offset' => '19800'), + 'New Delhi' => array('name' => '(GMT+05:30) New Delhi', 'offset' => '19800'), + 'Sri Jayawardenepura' => array('name' => '(GMT+05:30) Sri Jayawardenepura', 'offset' => '19800'), + 'Kathmandu' => array('name' => '(GMT+05:45) Kathmandu', 'offset' => '20700'), + 'Astana' => array('name' => '(GMT+06:00) Astana', 'offset' => '21600'), + 'Dhaka' => array('name' => '(GMT+06:00) Dhaka', 'offset' => '21600'), + 'Almaty' => array('name' => '(GMT+06:00) Almaty', 'offset' => '21600'), + 'Urumqi' => array('name' => '(GMT+06:00) Urumqi', 'offset' => '21600'), + 'Rangoon' => array('name' => '(GMT+06:30) Rangoon', 'offset' => '23400'), + 'Novosibirsk' => array('name' => '(GMT+07:00) Novosibirsk', 'offset' => '25200'), + 'Bangkok' => array('name' => '(GMT+07:00) Bangkok', 'offset' => '25200'), + 'Hanoi' => array('name' => '(GMT+07:00) Hanoi', 'offset' => '25200'), + 'Jakarta' => array('name' => '(GMT+07:00) Jakarta', 'offset' => '25200'), + 'Krasnoyarsk' => array('name' => '(GMT+07:00) Krasnoyarsk', 'offset' => '25200'), + 'Beijing' => array('name' => '(GMT+08:00) Beijing', 'offset' => '28800'), + 'Chongqing' => array('name' => '(GMT+08:00) Chongqing', 'offset' => '28800'), + 'Hong Kong' => array('name' => '(GMT+08:00) Hong Kong', 'offset' => '28800'), + 'Kuala Lumpur' => array('name' => '(GMT+08:00) Kuala Lumpur', 'offset' => '28800'), + 'Singapore' => array('name' => '(GMT+08:00) Singapore', 'offset' => '28800'), + 'Taipei' => array('name' => '(GMT+08:00) Taipei', 'offset' => '28800'), + 'Perth' => array('name' => '(GMT+08:00) Perth', 'offset' => '28800'), + 'Irkutsk' => array('name' => '(GMT+08:00) Irkutsk', 'offset' => '28800'), + 'Ulaan Bataar' => array('name' => '(GMT+08:00) Ulaan Bataar', 'offset' => '28800'), + 'Seoul' => array('name' => '(GMT+09:00) Seoul', 'offset' => '32400'), + 'Osaka' => array('name' => '(GMT+09:00) Osaka', 'offset' => '32400'), + 'Sapporo' => array('name' => '(GMT+09:00) Sapporo', 'offset' => '32400'), + 'Tokyo' => array('name' => '(GMT+09:00) Tokyo', 'offset' => '32400'), + 'Yakutsk' => array('name' => '(GMT+09:00) Yakutsk', 'offset' => '32400'), + 'Darwin' => array('name' => '(GMT+09:30) Darwin', 'offset' => '34200'), + 'Adelaide' => array('name' => '(GMT+09:30) Adelaide', 'offset' => '34200'), + 'Canberra' => array('name' => '(GMT+10:00) Canberra', 'offset' => '36000'), + 'Melbourne' => array('name' => '(GMT+10:00) Melbourne', 'offset' => '36000'), + 'Sydney' => array('name' => '(GMT+10:00) Sydney', 'offset' => '36000'), + 'Brisbane' => array('name' => '(GMT+10:00) Brisbane', 'offset' => '36000'), + 'Hobart' => array('name' => '(GMT+10:00) Hobart', 'offset' => '36000'), + 'Vladivostok' => array('name' => '(GMT+10:00) Vladivostok', 'offset' => '36000'), + 'Guam' => array('name' => '(GMT+10:00) Guam', 'offset' => '36000'), + 'Port Moresby' => array('name' => '(GMT+10:00) Port Moresby', 'offset' => '36000'), + 'Solomon Is.' => array('name' => '(GMT+10:00) Solomon Is.', 'offset' => '36000'), + 'Magadan' => array('name' => '(GMT+11:00) Magadan', 'offset' => '39600'), + 'New Caledonia' => array('name' => '(GMT+11:00) New Caledonia', 'offset' => '39600'), + 'Fiji' => array('name' => '(GMT+12:00) Fiji', 'offset' => '43200'), + 'Kamchatka' => array('name' => '(GMT+12:00) Kamchatka', 'offset' => '43200'), + 'Marshall Is.' => array('name' => '(GMT+12:00) Marshall Is.', 'offset' => '43200'), + 'Auckland' => array('name' => '(GMT+12:00) Auckland', 'offset' => '43200'), + 'Wellington' => array('name' => '(GMT+12:00) Wellington', 'offset' => '43200'), + 'Nuku\'alofa' => array('name' => '(GMT+13:00) Nuku\'alofa', 'offset' => '46800') + ); + } + + public static function getSampleUserInfo($index = -1) + { + $users = array( + array( + 'name' => 'Emma Smith', + 'avatar' => 'avatars/300-6.jpg', + 'email' => 'e.smith@kpmg.com.au', + 'position' => 'Art Director', + "online" => false + ), + array( + 'name' => 'Melody Macy', + 'initials' => array('label' => 'M', 'state' => 'danger'), + 'email' => 'melody@altbox.com', + 'position' => 'Marketing Analytic', + "online" => true + ), + array( + 'name' => 'Max Smith', + 'avatar' => 'avatars/300-1.jpg', + 'email' => 'max@kt.com', + 'position' => 'Software Enginer', + "online" => false + ), + array( + 'name' => 'Sean Bean', + 'avatar' => 'avatars/300-5.jpg', + 'email' => 'sean@dellito.com', + 'position' => 'Web Developer', + "online" => false + ), + array( + 'name' => 'Brian Cox', + 'avatar' => 'avatars/300-25.jpg', + 'email' => 'brian@exchange.com', + 'position' => 'UI/UX Designer', + "online" => false + ), + array( + 'name' => 'Mikaela Collins', + 'initials' => array('label' => 'C', 'state' => 'warning'), + 'email' => 'mikaela@pexcom.com', + 'position' => 'Head Of Marketing', + "online" => true + ), + array( + 'name' => 'Francis Mitcham', + 'avatar' => 'avatars/300-9.jpg', + 'email' => 'f.mitcham@kpmg.com.au', + 'position' => 'Software Arcitect', + "online" => false + ), + + array( + 'name' => 'Olivia Wild', + 'initials' => array('label' => 'O', 'state' => 'danger'), + 'email' => 'olivia@corpmail.com', + 'position' => 'System Admin', + "online" => true + ), + array( + 'name' => 'Neil Owen', + 'initials' => array('label' => 'N', 'state' => 'primary'), + 'email' => 'owen.neil@gmail.com', + 'position' => 'Account Manager', + "online" => true + ), + array( + 'name' => 'Dan Wilson', + 'avatar' => 'avatars/300-23.jpg', + 'email' => 'dam@consilting.com', + 'position' => 'Web Desinger', + "online" => false + ), + array( + 'name' => 'Emma Bold', + 'initials' => array('label' => 'E', 'state' => 'danger'), + 'email' => 'emma@intenso.com', + 'position' => 'Corporate Finance', + "online" => true + ), + array( + 'name' => 'Ana Crown', + 'avatar' => 'avatars/300-12.jpg', + 'email' => 'ana.cf@limtel.com', + 'position' => 'Customer Relationship', + "online" => false + ), + array( + 'name' => 'Robert Doe', + 'initials' => array('label' => 'A', 'state' => 'info'), + 'email' => 'robert@benko.com', + 'position' => 'Marketing Executive', + "online" => true + ), + array( + 'name' => 'John Miller', + 'avatar' => 'avatars/300-13.jpg', + 'email' => 'miller@mapple.com', + 'position' => 'Project Manager', + "online" => false + ), + array( + 'name' => 'Lucy Kunic', + 'initials' => array('label' => 'L', 'state' => 'success'), + 'email' => 'lucy.m@fentech.com', + 'position' => 'SEO Master', + "online" => true + ), + array( + 'name' => 'Ethan Wilder', + 'avatar' => 'avatars/300-21.jpg', + 'email' => 'ethan@loop.com.au', + 'position' => 'Accountant', + "online" => true + ) + ); + + $total = count($users); + + if ($index === -1 || isset($users[$index]) === false) { + $index = rand(0, $total - 1); + } + + return $users[$index]; + } + + public static function getSampleStatus($index = -1) + { + $statuses = array( + array('label' => 'Approved', 'state' => 'success'), + array('label' => 'Pending', 'state' => 'warning'), + array('label' => 'Rejected', 'state' => 'danger'), + array('label' => 'In progress', 'state' => 'info'), + array('label' => 'Completed', 'state' => 'primary'), + ); + + $total = count($statuses); + + if ($index === -1 || isset($statuses[$index]) === false) { + $index = rand(0, $total - 2); + } + + return $statuses[$index]; + } + + public static function getSampleDate() + { + $dates = array('Feb 21', 'Mar 10', 'Apr 15', 'May 05', 'Jun 20', 'Jun 24', 'Jul 25', 'Aug 19', 'Sep 22', 'Oct 25', 'Nov 10', 'Dec 20'); + + $date = $dates[rand(0, count($dates) - 1)] . ", " . date("Y"); + + return $date; + } + + public static function getSampleDatetime() + { + $dates = array('21 Feb', '10 Mar', '15 Apr', '05 May', '20 Jun', '24 Jun', '25 Jul', '19 Aug', '22 Sep', '25 Oct', '10 Nov', '20 Dec'); + $times = array('8:43 pm', '10:30 am', '5:20 pm', '2:40 pm', '11:05 am', '10:10 pm', '6:05 pm', '11:30 am', '5:30 pm', '9:23 pm', '6:43 am'); + + $date = $dates[rand(0, count($dates) - 1)] . " " . date("Y") . ", " . $times[rand(0, count($times) - 1)]; + + return $date; + } +} diff --git a/app/Core/Menu.php b/app/Core/Menu.php new file mode 100644 index 0000000..3bdd26d --- /dev/null +++ b/app/Core/Menu.php @@ -0,0 +1,521 @@ +linkLevel = $level; + + // Overcome recursive infinite loop + if ($level > 10000) { + return; + } + + // Process callable item + if (is_callable($item)) { + $item = call_user_func($item); + } + + // Exit if item is null + if ($item === null) { + return; + } + + // Handle menu item visiblity with callback function + if (isset($item['hide'])) { + if (is_callable($item['hide'])) { + $hide = call_user_func($item['hide'], $this, $item); + } else { + $hide = $item['hide']; + } + + if ($hide === true) { + return; + } + } + + if (isset($item['sub']) && ($this->_matchParentItemByPath($item) === true)) { + $classes[] = 'here show'; + } + + if (isset($item['attributes']) && isset($item['attributes']['item'])) { + $attributes = $item['attributes']['item']; + } elseif (isset($item['attributes']) && isset($item['attributes']['link']) === false) { + $attributes = $item['attributes']; + } + + if (isset($item['classes']) && isset($item['classes']['item'])) { + $classes[] = $item['classes']['item']; + } + + echo '<' . $this->itemTag . ' ' . Util::getHtmlAttributes($attributes) . Util::getHtmlClass($classes) . '>'; + + if (isset($item['custom'])) { + $this->_generateItemCustom($item); + } + + if (isset($item['content'])) { + $this->_generateItemContent($item); + } + + if (isset($item['title']) || isset($item['breadcrumb-title'])) { + $this->_generateItemLink($item); + } + + if (isset($item['heading'])) { + $this->_generateItemHeading($item); + } + + if (isset($item['sub'])) { + $this->_generateItemSub($item['sub'], $level++); + } + + echo 'itemTag . '>'; + } + + private function _generateItemLink($item) + { + $classes = array('menu-link'); + $attributes = array(); + $tag = 'a'; + // Construct li ks attributes + if (isset($item['path'])) { + // Assign the page URL + $attributes['href'] = Theme::getPageUrl($item['path']); + + // Handle open in new tab mode + if (isset($item['new-tab']) && $item['new-tab'] === true) { + $attributes['target'] = 'blank'; + } + + // Add special attribute for links to pro pages + if (Theme::isFreeVersion() === true && Theme::isProPage($item['path']) === true) { + $attributes['data-kt-page'] = 'pro'; + } + } else { + $tag = 'span'; + } + + if (isset($item['attributes']) && isset($item['attributes']['link'])) { + $attributes = array_merge($attributes, $item['attributes']['link']); + } + + if ($this->_matchItemByPath($item) === true) { + $classes[] = 'active'; + } + + if (!empty($this->itemLinkClass)) { + $classes[] = $this->itemLinkClass; + } + + if (isset($item['classes']) && isset($item['classes']['link'])) { + $classes[] = $item['classes']['link']; + } + + echo '<' . $tag . Util::getHtmlClass($classes) . Util::getHtmlAttributes($attributes) . '>'; + + if ($this->displayIcons !== false) { + $this->_generateItemLinkIcon($item); + } + + $this->_generateItemLinkBullet($item); + + if (isset($item['title'])) { + $this->_generateItemLinkTitle($item); + } + + $this->_generateItemLinkBadge($item); + + if (isset($item['sub']) && @$item['arrow'] !== false) { + if (!($this->hideRootArrow === true && $this->linkLevel === 0)) { + $this->_generateItemLinkArrow($item); + } + } + + echo ''; + } + + private function _generateItemLinkTitle($item) + { + $classes = array('menu-title'); + + if (isset($item['classes']) && isset($item['classes']['title'])) { + $classes[] = $item['classes']['title']; + } + + if (!is_string($item['title']) && is_callable($item['title'])) { + $item['title'] = call_user_func($item['title'], $item); + } + + echo ''; + + if (isset($this->callbacks['title']) && is_callable($this->callbacks['title'])) { + echo call_user_func($this->callbacks['title'], $item, $item['title']); + } else { + echo __($item['title']); + // Append exclusive badge + if (isset($item['path']) && Theme::isExclusivePage($item['path']) === true) { + echo 'Exclusive'; + } + + // Append pro badge + if (Theme::isFreeVersion()) { + if ((isset($item['path']) && Theme::isProPage($item['path']) === true) || (isset($item['pro']) && $item['pro'] === true)) { + echo 'Pro'; + } + } + } + + echo ''; + } + + private function _generateItemLinkIcon($item) + { + $classes = array('menu-icon'); + + if (isset($item['classes']) && isset($item['classes']['icon'])) { + $classes[] = $item['classes']['icon']; + } + + if (isset($item['icon'])) { + echo ''; + + if ($this->linkLevel === 0 && !empty($this->iconRoot)) { + echo $this->iconRoot; + } else { + if (is_array($item['icon'])) { + echo $item['icon'][$this->iconType]; + } else { + echo $item['icon']; + } + } + + echo ''; + + return; + } + } + + private function _generateItemLinkBullet($item) + { + if (isset($item['icon']) === true && $this->displayIcons !== false) { + return; + } + + $classes = array('menu-bullet'); + + if (isset($item['classes']) && isset($item['classes']['bullet'])) { + $classes[] = $item['classes']['bullet']; + } + + if (isset($item['bullet'])) { + echo ''; + + if (isset($item['bullet'])) { + echo $item['bullet']; + } + + echo ''; + } + } + + private function _generateItemLinkBadge($item) + { + $classes = array('menu-badge'); + + if (isset($item['classes']) && isset($item['classes']['badge'])) { + $classes[] = $item['classes']['badge']; + } + + if (isset($item['badge'])) { + echo ''; + echo $item['badge']; + echo ''; + } + } + + private function _generateItemLinkArrow($item) + { + $classes = array('menu-arrow'); + + if (isset($item['classes']['arrow'])) { + $classes[] = $item['classes']['arrow']; + } + + echo ''; + echo ''; + } + + private function _generateItemSub($sub, $level) + { + $classes = array('menu-sub'); + + if (isset($sub['class'])) { + $classes[] = $sub['class']; + } + + echo '<' . $this->parentTag . ' ' . Util::getHtmlClass($classes) . '>'; + + if (isset($sub['view'])) { + Theme::getView($sub['view']); + } else { + foreach ($sub['items'] as $item) { + $this->_generateItem($item, $level++); + } + } + + echo 'parentTag . '>'; + } + + private function _generateItemHeading($item) + { + $classes = array('menu-content'); + + if (isset($item['heading'])) { + if (isset($this->callbacks['heading']) && is_callable($this->callbacks['heading'])) { + echo call_user_func($this->callbacks['heading'], $item['heading']); + } else { + echo '

'; + echo $item['heading']; + echo '

'; + } + } + } + + private function _generateItemContent($item) + { + $classes = array('menu-content'); + + if (isset($item['classes']) && isset($item['classes']['content'])) { + $classes[] = $item['classes']['content']; + } + + if (isset($item['content'])) { + echo '
'; + echo $item['content']; + echo '
'; + } + } + + private function _generateItemCustom($item) + { + if (isset($item['custom'])) { + echo $item['custom']; + } + } + + private function _matchParentItemByPath($item, $level = 0) + { + if ($level > 1000) { + return false; + } + + if ($this->_matchItemByPath($item) === true) { + return true; + } else { + if (isset($item['sub']) && isset($item['sub']['items'])) { + foreach ($item['sub']['items'] as $currentItem) { + if ($this->_matchParentItemByPath($currentItem, $level++) === true) { + return true; + } + } + } + + return false; + } + } + + private function _matchItemByPath($item) + { + if (isset($item['path']) && ($this->path === $item['path'] || $this->path === $item['path'] . '/index')) { + return true; + } else { + return false; + } + } + + private function _buildBreadcrumb($items, &$breadcrumb, $options, $level = 0) + { + if ($level > 10000) { + return false; + } + + foreach ($items as $item) { + $title = ''; + + if (isset($item['breadcrumb-title'])) { + $title = $item['breadcrumb-title']; + } elseif (isset($item['title'])) { + if (!is_string($item['title']) && is_callable($item['title'])) { + $title = call_user_func($item['title'], $item); + } else { + $title = $item['title']; + } + } elseif (isset($item['heading'])) { + $title = $item['heading']; + } + + if (isset($item['path']) && ($item['path'] === $this->path || $item['path'] . '/index' === $this->path)) { + if (@$options['skip-active'] !== true) { + $breadcrumb[] = array( + 'title' => $title, + 'path' => isset($item['path']) ? $item['path'] : '', + 'active' => true + ); + } + + return true; + } elseif (isset($item['sub']) && isset($item['sub']['items'])) { + if ($this->_buildBreadcrumb($item['sub']['items'], $breadcrumb, $options, $level++) === true) { + $breadcrumb[] = array( + 'title' => $title, + 'path' => isset($item['path']) ? $item['path'] : ( isset($item['alt-path']) ? $item['alt-path'] : ''), + 'active' => false + ); + + return true; + } + } + } + + return false; + } + + /** + * Public Methods. + * + */ + public function __construct($items, $path = '') + { + $this->items = $items; + $this->path = $path; + + return $this; + } + + /** + * options: array('includeHomeLink' => boolean, 'homeLink' => array(), 'skipCurrentPage' => boolean) + * + */ + public function getBreadcrumb($options = array()) + { + $breadcrumb = array(); + + //$includeHomeLink = true, $homeLink = null + + $this->_buildBreadcrumb($this->items, $breadcrumb, $options); + + $breadcrumb = array_reverse($breadcrumb, true); + + if (!empty($breadcrumb)) { + if (isset($options['home'])) { + array_unshift($breadcrumb, $options['home']); + } else { + array_unshift($breadcrumb, array( + 'title' => 'Home', + 'path' => 'index', + 'active' => false + )); + } + } + + return $breadcrumb; + } + + public function setPath($path) + { + $this->path = $path; + } + + public function displayIcons($flag) + { + $this->displayIcons = $flag; + } + + public function hideRootArrow($flag) + { + $this->hideRootArrow = $flag; + } + + public function setItemTag($tagName) + { + $this->itemTag = $tagName; + } + + public function setIconType($type) + { + $this->iconType = $type; + } + + public function setDefaultRootIcon($icon) + { + $this->iconRoot = $icon; + } + + public function setItemLinkClass($class) + { + $this->itemLinkClass = $class; + } + + public function addCallback($target, $callback) + { + if (!is_string($callback) && is_callable($callback)) { + $this->callbacks[$target] = $callback; + } + } + + public function build() + { + foreach ($this->items as $item) { + $this->_generateItem($item); + } + } +} diff --git a/app/Core/Theme.php b/app/Core/Theme.php new file mode 100644 index 0000000..8488ad7 --- /dev/null +++ b/app/Core/Theme.php @@ -0,0 +1,1352 @@ + $demo) { + if ($demo['published'] === true) { + $total++; + } + } + + return $total; + } + + public static function isMultiDemo() + { + return !empty(self::getDemo()); + } + + public static function hasWebpack() + { + return !(isset($_REQUEST['webpack']) && !filter_var($_REQUEST['webpack'], FILTER_VALIDATE_BOOLEAN)); + } + + public static function isFreeVersion() + { + if (isset($_REQUEST['free'])) { + return filter_var($_REQUEST['free'], FILTER_VALIDATE_BOOLEAN); + } + + return self::$freeVersion; + } + + public static function setFreeVersion($flag) + { + return self::$freeVersion = $flag; + } + + public static function putProVersionTooltip($attr = array()) + { + $attr['data-bs-toggle'] = 'tooltip'; + $attr['title'] = "Available in Pro version"; + $attr['data-bs-html'] = 'true'; + + if (empty($attr) || isset($attr['data-bs-placement']) === false) { + $attr['data-bs-placement'] = 'bottom'; + } + + if (Theme::isFreeVersion() === true) { + echo Util::putHtmlAttributes($attr); + } + } + + public static function getOption($scope, $path = false, $default = null) + { + if (!self::hasOption($scope, $path)) { + return $default; + } + + $result = array(); + + if (!isset(self::$config[$scope])) { + return null; + } + + if ($path === false) { + $result = self::$config[$scope]; + } else { + $result = Util::getArrayValue(self::$config[$scope], $path); + } + + // check if its a callback + if (is_callable($result) && !is_string($result)) { + $result = call_user_func($result); + } + + return $result; + } + + public static function setOption($scope, $path, $value) + { + if (isset(self::$config[$scope])) { + return Util::setArrayValue(self::$config[$scope], $path, $value); + } else { + return false; + } + } + + public static function hasOption($scope, $path = false) + { + if (isset(self::$config[$scope])) { + if ($path === false) { + return isset(self::$config[$scope]); + } else { + return Util::hasArrayValue(self::$config[$scope], $path); + } + } else { + return false; + } + } + + public static function getPageGroupOptions($pagesConfig, $pagePath) + { + $parts = explode('/', $pagePath); + $running = count($parts) - 1; + + for ($i = 0; $i <= count($parts); $i++) { + $path = array(); + + for ($j = 0; $j <= $running; $j++) { + $path[] = $parts[$j]; + } + + $running--; + $path = implode('/', $path); + $path = $path . '/*'; + + if (Util::hasArrayValue($pagesConfig, $path)) { + return Util::getArrayValue($pagesConfig, $path); + } + } + + return false; + } + + public static function getPageOptionsByPath($path) + { + if (Util::hasArrayValue(self::$config['pages'], $path)) { + return Util::getArrayValue(self::$config['pages'], $path); + } else { + return false; + } + } + + public static function getPageVendorFiles($type) + { + $files = array(); + $vendors = Theme::getOption('vendors'); + $pageVendors = Theme::getOption('page', 'assets/vendors'); + + if (empty($pageVendors)) { + return array(); + } + + foreach ($pageVendors as $name) { + if (isset($vendors[$name]) && is_array($vendors[$name]) && isset($vendors[$name][$type])) { + foreach ($vendors[$name][$type] as $each) { + $files[] = $each; + } + } + } + + return array_unique($files); + } + + public static function hasPageVendorFiles($type) + { + $files = array(); + $vendors = Theme::getOption('vendors'); + $pageVendors = Theme::getOption('page', 'assets/vendors'); + + if (empty($pageVendors)) { + return false; + } + + foreach ($pageVendors as $name) { + if (isset($vendors[$name]) && is_array($vendors[$name]) && isset($vendors[$name][$type])) { + foreach ($vendors[$name][$type] as $each) { + $files[] = $each; + } + } + } + + return count(array_unique($files)) > 0; + } + + public static function getPageVendorsCssFiles() + { + } + + public static function isProPage($path) + { + $pageConfig = self::getPageOptionsByPath($path); + + if ($pageConfig && isset($pageConfig['pro']) && $pageConfig['pro'] === true) { + return true; + } else { + return false; + } + } + + public static function isExclusivePage($path) + { + $pageConfig = self::getPageOptionsByPath($path); + + if ($pageConfig && isset($pageConfig['exclusive']) && $pageConfig['exclusive'] === true) { + return true; + } else { + return false; + } + } + + public static function getPageKey() + { + $el = (array)explode('/', self::getPagePath()); + + return end($el); + } + + public static function getPagePath() + { + return self::$page; + } + + public static function getPagePathPart($index) + { + $parts = explode('/', self::$page); + + return isset($parts[$index]) ? $parts[$index] : false; + } + + public static function addHtmlAttribute($scope, $name, $value) + { + self::$htmlAttributes[$scope][$name] = $value; + } + + public static function addHtmlAttributes($scope, $attributes) + { + foreach ($attributes as $key => $value) { + self::$htmlAttributes[$scope][$key] = $value; + } + } + + public static function addHtmlClass($scope, $class) + { + self::$htmlClasses[$scope][] = $class; + } + + public static function addCssVariable($scope, $name, $value) + { + self::$cssVariables[$scope][$name] = $value; + } + + public static function printHtmlAttributes($scope) + { + $Attributes = array(); + + if (isset(self::$htmlAttributes[$scope]) && !empty(self::$htmlAttributes[$scope])) { + echo Util::getHtmlAttributes(self::$htmlAttributes[$scope]); + } + + echo ''; + } + + public static function printHtmlClasses($scope, $full = true) + { + if (isset(self::$htmlClasses[$scope]) && !empty(self::$htmlClasses[$scope])) { + $classes = implode(' ', self::$htmlClasses[$scope]); + + if ($full) { + echo Util::getHtmlClass(self::$htmlClasses[$scope]); + } else { + echo Util::getHtmlClass(self::$htmlClasses[$scope], false); + } + } else { + echo ''; + } + } + + public static function printCssVariables($scope) + { + $Attributes = array(); + + if (isset(self::$cssVariables[$scope]) && !empty(self::$cssVariables[$scope])) { + echo Util::getCssVariables(self::$cssVariables[$scope]); + } + } + + public static function appendVersionToUrl($path) + { + // only at preview version + if (self::$viewMode == 'preview') { + $path .= '?v=' . self::getOption('theme/version'); + } + + return $path; + } + + public static function getView($path, $params = array(), $once = false) + { + global $_THEME_PATH, $_COMMON_PATH; + + $actual_path = $_THEME_PATH . '/dist/view/' . $path . '.php'; + $common_path = $_COMMON_PATH . '/dist/view/' . $path . '.php'; + + // For multi demo, include from demo1 for other demos + if (file_exists($actual_path) === false) { + if (self::$demo != '' && self::$demo != 'demo1') { + $actual_path = str_replace(self::$demo . '/', 'demo1/', $actual_path); + } + } + + // Get view from common(core)) + if (file_exists($actual_path) === false && file_exists($common_path) === true) { // try to find in common + $actual_path = $common_path; + } + + // Override widget params + if (self::hasOption('widgets')) { + $widgets = self::getOption('widgets'); + + if (isset($widgets[$path]) && isset($widgets[$path]['params'])) { + $params = array_replace_recursive($params, $widgets[$path]['params']); + } + } + + // Include view + self::includeView($actual_path, $params, $once); + } + + public static function getPageView($params = array()) + { + global $_THEME_PATH, $_COMMON_PATH; + + $actual_path = $_THEME_PATH . '/dist/view/pages/' . self::$config['page']['view'] . '.php'; + $common_path = $_COMMON_PATH . '/dist/view/pages/' . self::$config['page']['view'] . '.php'; + + // For multi demo, include from demo1 for other demos + if (file_exists($actual_path) === false) { + if (self::$demo != '' && self::$demo != 'demo1') { + $actual_path = str_replace(self::$demo . '/', 'demo1/', $actual_path); + } + } + + if (file_exists($actual_path) === false && file_exists($common_path) === true) { // try to find in common + $actual_path = $common_path; + } + + self::includeView($actual_path, $params); + } + + public static function getCommonView($path, $params = array()) + { + global $_COMMON_PATH; + + $actual_path = $_COMMON_PATH . '/dist/view/' . $path . '.php'; + + self::includeView($actual_path, $params); + } + + public static function includeView($path, $params = array(), $once = false) + { + if (!file_exists($path)) { + echo '"' . $path . '" does not exist!
'; + return; + } + + if (isset($_REQUEST['layout-marker'])) { + preg_match('/dist\/view\/(.*?)\.php$/', $path, $matches); + if (! empty($matches)) { + echo ''; + if ($once === true) { + include_once($path); + } else { + include($path); + } + echo ''; + } + } else { + if ($once === true) { + include_once($path); + } else { + include($path); + } + } + + return $path; + } + + public static function importModal($name) + { + $modals = self::getOption('modals'); + + if (isset($modals[$name]) && isset(self::$importedModals[$name]) === false) { + self::$importedModals[$name] = $modals[$name]; + + if (isset($modals[$name]['assets'])) { + if (isset($modals[$name]['assets']['vendors'])) { + if (isset(self::$config['page']['assets']['vendors'])) { + self::$config['page']['assets']['vendors'] = array_merge(self::$config['page']['assets']['vendors'], $modals[$name]['assets']['vendors']); + } else { + self::$config['page']['assets']['vendors'] = $modals[$name]['assets']['vendors']; + } + } + + if (isset($modals[$name]['assets']['custom'])) { + if (isset($modals[$name]['assets']['custom']['js'])) { + if (isset(self::$config['page']['assets']['custom']['js'])) { + self::$config['page']['assets']['custom']['js'] = array_merge(self::$config['page']['assets']['custom']['js'], $modals[$name]['assets']['custom']['js']); + } else { + self::$config['page']['assets']['custom']['js'] = $modals[$name]['assets']['custom']['js']; + } + } + + if (isset($modals[$name]['assets']['custom']['css'])) { + if (isset(self::$config['page']['assets']['custom']['css'])) { + self::$config['page']['assets']['custom']['css'] = array_merge(self::$config['page']['assets']['custom']['css'], $modals[$name]['assets']['custom']['css']); + } else { + self::$config['page']['assets']['custom']['css'] = $modals[$name]['assets']['custom']['css']; + } + } + } + } + } + } + + public static function importModalById($id) + { + $name = str_replace('#kt_modal_', '', $id); + $name = str_replace('_', '-', $name); + + self::importModal($name); + } + + public static function linkModal($name, $return = false) + { + $modals = self::getOption('modals'); + + if ($name && isset($modals[$name])) { + self::importModal($name); + } else { + return; + } + + $code = ' data-bs-toggle="modal"'; + $code .= ' data-bs-target="#kt_modal_' . str_replace('-', '_', $name) . '"'; + + if ($return === true) { + return $code; + } else { + echo $code; + } + } + + public static function hasImportedModals() + { + return !empty(self::$importedModals); + } + + public static function includeImportedModals() + { + foreach (self::$importedModals as $name => $modal) { + self::getView($modal['view'], (isset($modal['params']) ? $modal['params'] : null), true); + } + } + + public static function beginPageLayout($path, $params = array()) + { + self::$pageLayoutPath = $path; + self::$pageLayoutParams = $params; + ob_start(); + } + + public static function getPageLayoutView() + { + echo self::$pageLayoutView; + } + + public static function endPageLayout() + { + self::$pageLayoutView = ob_get_contents(); + ob_end_clean(); + + self::getView(self::$pageLayoutPath, self::$pageLayoutParams); + } + + public static function getAssetsPath() + { + global $_THEME_PATH; + + return $_THEME_PATH . '/dist/assets/'; + } + + public static function getMediaPath() + { + return self::getAssetsPath() . 'media/'; + } + + public static function getBaseUrlPath() + { + if (! isset($_SERVER['PHP_SELF'])) { + return ''; + } + + if (!empty($_SERVER['PHP_SELF'])) { + return dirname($_SERVER['PHP_SELF']) . '/'; + } + + return ''; + } + + public static function getAssetsUrlPath() + { + return self::getBaseUrlPath() . 'assets/'; + } + + public static function getMediaUrlPath() + { + return self::getAssetsUrlPath() . 'media/'; + } + + public static function includeFonts($value = '') + { + if (self::hasOption('assets', 'fonts/google')) { + $fonts = self::getOption('assets', 'fonts/google'); + + echo ''; + } + } + + public static function rtlCssFilename($path) + { + if (isset($_REQUEST['rtl']) && $_REQUEST['rtl'] == 1) { + if (strpos($path, 'fullcalendar') !== false) { + } else { + $path = str_replace('.css', '.rtl.css', $path); + } + + if (self::isDarkModeEnabled() && self::isDarkMode() && @$_REQUEST['mode'] != 'rtl') { + if (strpos($path, 'plugins.bundle') !== false || strpos($path, 'style.bundle') !== false) { + // import dark mode css + $path = str_replace('.bundle', '.' . self::getCurrentMode() . '.bundle', $path); + } + } + } elseif (self::isDarkModeEnabled() && self::isDarkMode() && @$_REQUEST['mode'] != 'rtl') { + if (strpos($path, 'plugins.bundle.css') !== false || strpos($path, 'style.bundle.css') !== false) { + // import dark mode css + $path = str_replace('.bundle', '.' . self::getCurrentMode() . '.bundle', $path); + } + } + + return $path; + } + + public static function isRTL() + { + if (isset($_REQUEST['rtl']) && $_REQUEST['rtl'] == 1) { + return true; + } else { + return false; + } + } + + public static function strposa($haystack, $needle, $offset = 0) + { + if (!is_array($needle)) { + $needle = array($needle); + } + foreach ($needle as $query) { + if (strpos($haystack, $query, $offset) !== false) { + return true; + } // stop on first true result + } + + return false; + } + + /** + * Check if current theme has dark mode + * + * @return bool + */ + public static function isDarkModeEnabled() + { + return (bool) self::getOption('layout', 'main/dark-mode-enabled'); + } + + /** + * Get current mode + * + * @return mixed|string + */ + public static function getCurrentMode() + { + if (self::isDarkModeEnabled() && isset($_REQUEST['mode']) && $_REQUEST['mode']) { + return $_REQUEST['mode']; + } + + return self::getOption('layout', 'main/dark-mode-default') === true ? 'dark' : 'light'; + } + + /** + * Check dark mode + * + * @return mixed|string + */ + public static function isDarkMode() + { + return self::getCurrentMode() === 'dark'; + } + + public static function isPageBgWhite() + { + return (bool) self::getOption('layout', 'main/page-bg-white'); + } + + public static function getPageUrl($path, $demo = '', $mode = null) + { + // Disable pro page URL's for the free version + if (self::isFreeVersion() === true && self::isProPage($path) === true) { + return "#"; + } + + if ($path === '#') { + return $path; + } + + $baseUrl = self::getBaseUrlPath(); + + $params = ''; + if (isset($_REQUEST['type']) && $_REQUEST['type'] === 'html') { + // param keep in url + if (isset($_REQUEST['rtl']) && $_REQUEST['rtl']) { + $params = 'rtl/'; + } + + if ($mode !== null) { + if ($mode) { + $params = $mode . '/'; + } + } else { + if (isset($_REQUEST['mode']) && $_REQUEST['mode']) { + $params = $_REQUEST['mode'] . '/'; + } + } + + if (!empty($demo)) { + if (self::getViewMode() === 'release') { + // force add link to other demo in release + $baseUrl .= '../../' . $demo . '/dist/'; + } else { + // for preview + $baseUrl .= '../' . $demo . '/' . $params; + } + } else { + $d = ''; + if (!empty(self::getDemo())) { + $d = '../' . self::getDemo() . '/'; + } + if (self::getViewMode() === 'release') { + // force add link to other demo in release + $baseUrl .= '../' . $d . 'dist/'; + } else { + // for preview + $baseUrl .= $d . $params; + } + } + + $url = $baseUrl . $path . '.html'; + + // skip layout builder page for generated html + if (strpos($path, 'builder') !== false && self::getViewMode() === 'release') { + if (!empty(self::getDemo())) { + $path = self::getDemo() . '/' . $path; + } + + $url = self::getOption('product', 'preview') . '/' . $path . '.html'; + } + } else { + if (isset($_REQUEST['rtl']) && $_REQUEST['rtl']) { + $params = '&rtl=1'; + } + + if ($mode !== null) { + if ($mode) { + $params = '&mode=' . $mode; + } + } else { + if (isset($_REQUEST['mode']) && $_REQUEST['mode']) { + $params = '&mode=' . $_REQUEST['mode']; + } + } + + if (!empty($demo)) { + // force add link to other demo + $baseUrl .= '../../' . $demo . '/dist/'; + } + + $url = $baseUrl . '?page=' . $path . $params; + } + + return $url; + } + + public static function isCurrentPage($path) + { + return self::$page === $path; + } + + public static function getSvgIcon($path, $class = '', $svgClass = '') + { + $path = str_replace('\\', '/', trim($path)); + $full_path = $path; + if (! file_exists($path)) { + $full_path = self::getMediaPath() . $path; + + if (! is_string($full_path)) { + return ''; + } + + if (! file_exists($full_path)) { + return "\n"; + } + } + + $svg_content = file_get_contents($full_path); + + $dom = new DOMDocument(); + $dom->loadXML($svg_content); + + // remove unwanted comments + $xpath = new DOMXPath($dom); + foreach ($xpath->query('//comment()') as $comment) { + $comment->parentNode->removeChild($comment); + } + + // add class to svg + if (! empty($svgClass)) { + foreach ($dom->getElementsByTagName('svg') as $element) { + $element->setAttribute('class', $svgClass); + } + } + + // remove unwanted tags + $title = $dom->getElementsByTagName('title'); + if ($title['length']) { + $dom->documentElement->removeChild($title[0]); + } + $desc = $dom->getElementsByTagName('desc'); + if ($desc['length']) { + $dom->documentElement->removeChild($desc[0]); + } + $defs = $dom->getElementsByTagName('defs'); + if ($defs['length']) { + $dom->documentElement->removeChild($defs[0]); + } + + // remove unwanted id attribute in g tag + $g = $dom->getElementsByTagName('g'); + foreach ($g as $el) { + $el->removeAttribute('id'); + } + $mask = $dom->getElementsByTagName('mask'); + foreach ($mask as $el) { + $el->removeAttribute('id'); + } + $rect = $dom->getElementsByTagName('rect'); + foreach ($rect as $el) { + $el->removeAttribute('id'); + } + $xpath = $dom->getElementsByTagName('path'); + foreach ($xpath as $el) { + $el->removeAttribute('id'); + } + $circle = $dom->getElementsByTagName('circle'); + foreach ($circle as $el) { + $el->removeAttribute('id'); + } + $use = $dom->getElementsByTagName('use'); + foreach ($use as $el) { + $el->removeAttribute('id'); + } + $polygon = $dom->getElementsByTagName('polygon'); + foreach ($polygon as $el) { + $el->removeAttribute('id'); + } + $ellipse = $dom->getElementsByTagName('ellipse'); + foreach ($ellipse as $el) { + $el->removeAttribute('id'); + } + + $string = $dom->saveXML($dom->documentElement); + + // remove empty lines + $string = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string); + + $cls = array('svg-icon'); + + if (! empty($class)) { + $cls = array_merge($cls, explode(' ', $class)); + } + + $asd = explode('/media/', $path); + if (isset($asd[1])) { + $path = 'assets/media/' . $asd[1]; + } + + $output = "\n"; + $output .= '' . $string . ''; + $output .= "\n"; + + return $output; + } + + public static function getProductName() + { + if (Theme::isFreeVersion() === true && self::getOption('product', 'name-free')) { + return self::getOption('product', 'name-free'); + } elseif (self::getOption('product', 'name-pro')) { + return self::getOption('product', 'name-pro'); + } else { + return self::getOption('product', 'name'); + } + } + + public static function getProductNameHtml() + { + return '' . self::getProductName() . ' '; + } + + public static function getProductDescription() + { + return self::getOption('product', 'description'); + } + + public static function getSassVariableMap($key) + { + global $_COMMON_PATH; + + // get cache if available + $variables = Util::getCache(__CLASS__ . '-' . __FUNCTION__); + + if (empty($variables)) { + // get variable scss file content + $content = file_get_contents($_COMMON_PATH . '/src/sass/components/_variables.scss'); + + // regex capture variables with array + preg_match_all('/\$([A-Za-z0-9-]+): ?\((.*?)\) ?!default;/sm', $content, $matches); + + $variables = array_combine($matches[1], $matches[2]); + + foreach ($variables as &$variable) { + preg_match_all('/"?([A-Za-z0-9-]+)"? ?:/', $variable, $matched); + $variable = $matched[1]; + } + + // keep cache in file + Util::putCache(__CLASS__ . '-' . __FUNCTION__, $variables); + } + + if (isset($variables[$key])) { + return $variables[$key]; + } + + return null; + } + + public static function getPackageReferences() + { + global $_COMMON_PATH; + + $content = file_get_contents($_COMMON_PATH . '/tools/package.json'); + + $json = json_decode($content, true); + $dependencies = $json['dependencies']; + + // predefined + $references = array( + array( + 'name' => 'Node.js', + 'url' => 'https://www.npmjs.com/', + 'version' => '14.16.0', + ), + array( + 'name' => 'Gulp', + 'url' => 'https://gulpjs.com/', + 'version' => '4.0.2', + ), + array( + 'name' => 'Yarn', + 'url' => 'https://yarnpkg.com/', + 'version' => '1.22.10', + ), + array( + 'name' => 'Duotune Icons', + 'url' => 'https://keenthemes.com/products/duotune-pro', + 'version' => '1.0.0', + ), + array( + 'name' => 'FormValidation', + 'url' => 'https://formvalidation.io/', + 'version' => '1.8.0', + ), + array( + 'name' => 'bootstrap-multiselectsplitter', + 'url' => 'https://github.com/poolerMF/bootstrap-multiselectsplitter/', + 'version' => '1.0.4', + ), + array( + 'name' => 'toastr', + 'url' => 'https://github.com/petekeller2/toastr', + 'version' => '2.1.4', + ), + ); + + foreach ($dependencies as $plugin => $version) { + try { + $json_file = $_COMMON_PATH . '/tools/node_modules/' . $plugin . '/package.json'; + if (!file_exists($json_file)) { + continue; + } + $plugin_content = file_get_contents($json_file); + $plugin_json = json_decode($plugin_content, true); + + $url = ''; + if (isset($plugin_json['homepage'])) { + $url = $plugin_json['homepage']; + } elseif (isset($plugin_json['repository']['url'])) { + // if it is a git url convert to normal url + $url = preg_replace('/(git)?(\+https)?:\/\/(.*?)\.git$/', 'https://$3', $plugin_json['repository']['url']); + } elseif (isset($plugin_json['bugs']['url'])) { + $url = $plugin_json['bugs']['url']; + } elseif (isset($plugin_json['funding'])) { + $url = $plugin_json['funding']; + if (isset($plugin_json['funding']['url'])) { + $url = $plugin_json['funding']['url']; + } + } + + if (!empty($url)) { + $references[$url] = array( + 'name' => $plugin, + 'url' => $url, + 'version' => $plugin_json['version'] ?? '', + ); + } + } catch (Exception $exception) { + } + } + + return $references; + } + + public static function getChangelogInfo() + { + global $_THEME_PATH, $_COMMON_PATH; + + $changelog = array(); + + $common_path = $_COMMON_PATH . '/dist/changelog'; + $current_path = $_THEME_PATH . '/dist/changelog'; + + // For multi demo, include from demo1 for other demos + if (file_exists($current_path) === false) { + if (self::$demo != '' && self::$demo != 'demo1') { + $current_path = str_replace(self::$demo . '/', 'demo1/', $current_path); + } + } + + // Read core changelog dir + if ($handle = @opendir($common_path)) { + while (false !== ($entry = readdir($handle))) { + $path = $common_path . '/' . $entry; + + if ($entry != "." && $entry != ".." && file_exists($path)) { + $array = include($common_path . '/' . $entry); + + $changelog = array_replace_recursive($changelog, $array); + } + } + + closedir($handle); + } + + // Read current changelog dir + if ($handle = @opendir($current_path)) { + while (false !== ($entry = readdir($handle))) { + $path = $current_path . '/' . $entry; + + if ($entry != "." && $entry != ".." && file_exists($path)) { + $array = include($path); + + $changelog = array_replace_recursive($changelog, $array); + } + } + + closedir($handle); + } + + // reverse sort by key + uasort($changelog, function ($a, $b) { + $a = strtotime($a['date']); + $b = strtotime($b['date']); + if ($a == $b) { + return 0; + } + + return ($a < $b) ? 1 : -1; + }); + + return $changelog; + } + + public static function getVersion() + { + return self::getOption("product", "version"); + } + + public static function addPageJs($path) + { + self::$config["page"]["assets"]['custom']['js'][] = $path; + } + + public static function getCorePath() + { + return __DIR__ . '/../..'; + } + + public static function getImageUrl($folder, $file, $flip = true) + { + $folder = ltrim($folder, '/'); + $folder = rtrim($folder, '/'); + + $path = Theme::getMediaUrlPath() . $folder . '/' . $file; + + if (Theme::isDarkMode() && $flip === true) { + $file = str_replace(".svg", "-dark.svg", $file); + $file = str_replace(".png", "-dark.png", $file); + $file = str_replace(".jpg", "-dark.jpg", $file); + + $path_dark_path = Theme::getMediaPath() . $folder . '/' . $file; + $path_dark_url_path = Theme::getMediaUrlPath() . $folder . '/' . $file; + + + if (file_exists($path_dark_path)) { + return $path_dark_url_path; + } + } + + return $path; + } + + public static function getIllustrationUrl($file, $flip = true) + { + $folder = 'illustrations/' . Theme::getOption('layout', 'illustrations/set'); + $folder = ltrim($folder, '/'); + $folder = rtrim($folder, '/'); + + $path = Theme::getMediaUrlPath() . $folder . '/' . $file; + + return self::getImageUrl($folder, $file, $flip); + } + + public static function getPagesConfig($config, &$result = array()) + { + foreach ($config as $key => $page) { + if ($key === '*') { + continue; + } + + if (isset($page['view']) && (isset($page['title']))) { + $page['path'] = $config['path'] . '/' . $key; + + $result[] = $page; + } elseif (is_array($page)) { + if (isset($config['path'])) { + $page['path'] = $config['path'] . '/' . $key; + } else { + $page['path'] = $key; + } + + self::getPagesConfig($page, $result); + } + } + + return $result; + } + + public static function printJsHostUrl() + { + echo sprintf('var hostUrl = "%s";', self::getAssetsUrlPath()); + } +} diff --git a/app/Core/Traits/SpatieLogsActivity.php b/app/Core/Traits/SpatieLogsActivity.php new file mode 100644 index 0000000..76f70cc --- /dev/null +++ b/app/Core/Traits/SpatieLogsActivity.php @@ -0,0 +1,20 @@ +logAll(); + $logOptions->logOnlyDirty(); + + return $logOptions; + } +} diff --git a/app/Core/Util.php b/app/Core/Util.php new file mode 100644 index 0000000..ad04dc2 --- /dev/null +++ b/app/Core/Util.php @@ -0,0 +1,523 @@ + 0 ? 'style="height:' . $height . 'px"' : ''; + + $code = '
' . htmlspecialchars(trim($code), ENT_QUOTES) . '
'; + + return $code; + } + + public static function highlight() + { + $tabItemActive = 'active'; + $tabPaneActive = 'show active'; + + $args = func_get_args(); + + echo ''; + echo '
'; + echo ' '; + + if (!empty($args)) { + if (isset($args[0]) && is_array($args[0]) === false) { + echo '
'; + echo Util::parseCode($args[0], @$args[1], @$args[2]); + echo '
'; + } elseif (is_array($args[0]) && isset($args[1]) === false) { + $options = $args[0]; + + echo ''; + + echo '
'; + foreach ($options as $each) { + if (isset($each['lang']) === true) { + echo '
'; + echo '
'; + echo Util::parseCode($each['code'], $each['lang'], @$each['height']); + echo '
'; + echo '
'; + + $tabPaneActive = ''; + } + } + echo '
'; + } + } + + echo '
'; + echo ''; + } + + + public static function tidyHtml($buffer) + { + if (! extension_loaded('Tidy')) { + return $buffer; + } + + // Specify configuration + $config = array( + // 'clean' => true, + 'drop-empty-elements' => false, + 'doctype' => 'omit', + 'indent' => 2, + // 'output-html' => true, + // 'output-xhtml' => true, + // 'force-output' => true, + 'show-body-only' => true, + 'indent-with-tabs' => true, + 'tab-size' => 1, + 'indent-spaces' => 1, + 'tidy-mark' => false, + 'wrap' => 0, + 'indent-attributes' => false, + 'input-xml' => true, + // HTML5 tags + 'new-blocklevel-tags' => 'article aside audio bdi canvas details dialog figcaption figure footer header hgroup main menu menuitem nav section source summary template track video', + 'new-empty-tags' => 'command embed keygen source track wbr', + 'new-inline-tags' => 'code audio command datalist embed keygen mark menuitem meter output progress source time video wbr', + ); + + // Tidy + $tidy = new Tidy(); + $tidy->parseString($buffer, $config, 'utf8'); + $tidy->cleanRepair(); + + // Output + return $tidy; + } + + public static function setArrayValue(&$array, $path, $value) + { + $loc = &$array; + foreach (explode('/', $path) as $step) { + $loc = &$loc[ $step ]; + } + + return $loc = $value; + } + + public static function getArrayValue($array, $path) + { + if (is_string($path)) { + // dot delimiter + $path = explode('/', $path); + } + + $ref = &$array; + foreach ($path as $key) { + if (! is_array($ref)) { + $ref = []; + } + + $ref = &$ref[$key]; + } + + $prev = $ref; + + return $prev; + } + + public static function hasArrayValue($array, $path) + { + return self::getArrayValue($array, $path) !== null; + } + + public static function getArrayPath($array, $searchKey = '') + { + //create a recursive iterator to loop over the array recursively + $iter = new RecursiveIteratorIterator( + new RecursiveArrayIterator($array), + RecursiveIteratorIterator::SELF_FIRST + ); + + //loop over the iterator + foreach ($iter as $key => $value) { + //if the value matches our search + if ($value === $searchKey) { + //add the current key + $keys = array( $key ); + //loop up the recursive chain + for ($i = $iter->getDepth() - 1; $i >= 0; $i--) { + //add each parent key + array_unshift($keys, $iter->getSubIterator($i)->key()); + } + //return our output array + return $keys; + } + } + + //return false if not found + return false; + } + + public static function matchArrayByKeyValue($array, $searchKey, $searchValue) + { + //create a recursive iterator to loop over the array recursively + $iter = new RecursiveIteratorIterator( + new RecursiveArrayIterator($array), + RecursiveIteratorIterator::SELF_FIRST + ); + + //loop over the iterator + foreach ($iter as $key => $value) { + //if the value matches our search + if ($key === $searchKey && $value === $searchValue) { + return true; + } + } + + //return false if not found + return false; + } + + public static function searchArrayByKeyValue($array, $searchKey, $searchValue) + { + $result = array(); + + //create a recursive iterator to loop over the array recursively + $iter = new RecursiveIteratorIterator( + new RecursiveArrayIterator($array), + RecursiveIteratorIterator::SELF_FIRST + ); + + //loop over the iterator + foreach ($iter as $key => $value) { + //if the value matches our search + if ($key === $searchKey && $value === $searchValue) { + return true; + } + } + + //return false if not found + return false; + } + + public static function separateCamelCase($str) + { + $re = '/ + (?<=[a-z]) + (?=[A-Z]) + | (?<=[A-Z]) + (?=[A-Z][a-z]) + /x'; + $a = preg_split($re, $str); + $formattedStr = implode(' ', $a); + + return $formattedStr; + } + + public static function isExternalURL($url) + { + $url = trim(strtolower($url)); + + if (substr($url, 0, 2) == '//') { + return true; + } + + if (substr($url, 0, 7) == 'http://') { + return true; + } + + if (substr($url, 0, 8) == 'https://') { + return true; + } + + if (substr($url, 0, 5) == 'www.') { + return true; + } + + return false; + } + + public static function getIf($cond, $value, $alt = '') + { + return $cond ? $value : $alt; + } + + public static function putIf($cond, $value, $alt = '') + { + echo self::getIf($cond, $value, $alt); + } + + public static function notice($text, $state = 'danger', $icon = 'icons/duotune/art/art006.svg') + { + $html = ''; + + $html .= ''; + $html .= '
'; + $html .= ' '; + $html .= '
'; + $html .= ' ' . Theme::getSvgIcon("icons/duotune/abstract/abs051.svg", "svg-icon-" . $state . " position-absolute opacity-10", "w-80px h-80px"); + $html .= ' ' . Theme::getSvgIcon($icon, "svg-icon-3x svg-icon-" . $state . " position-absolute"); + $html .= '
'; + $html .= ' '; + + $html .= ' '; + $html .= '
'; + $html .= $text; + $html .= '
'; + $html .= ' '; + $html .= '
'; + $html .= ''; + + echo $html; + } + + public static function info($text, $state = 'danger', $icon = 'icons/duotune/general/gen044.svg') + { + $html = ''; + + $html .= ''; + $html .= '
'; + $html .= ' '; + $html .= ' ' . Theme::getSvgIcon($icon, 'svg-icon-3x svg-icon-' . $state . ' me-5'); + $html .= ' '; + + $html .= ' '; + $html .= '
'; + $html .= $text; + $html .= '
'; + $html .= ' '; + $html .= '
'; + $html .= ''; + + echo $html; + } + + public static function getHtmlAttributes($attributes = array()) + { + $result = array(); + + if (empty($attributes)) { + return false; + } + + foreach ($attributes as $name => $value) { + if (!empty($value)) { + $result[] = $name . '="' . $value . '"'; + } + } + + return ' ' . implode(' ', $result) . ' '; + } + + public static function putHtmlAttributes($attributes) + { + $result = self::getHtmlAttributes($attributes); + + if ($result) { + echo $result; + } + } + + public static function getHtmlClass($classes, $full = true) + { + $result = array(); + + $classes = implode(' ', $classes); + + if ($full === true) { + return ' class="' . $classes . '" '; + } else { + return ' ' . $classes . ' '; + } + } + + public static function getCssVariables($variables, $full = true) + { + $result = array(); + + foreach ($variables as $name => $value) { + if (!empty($value)) { + $result[] = $name . ':' . $value; + } + } + + $result = implode(';', $result); + + if ($full === true) { + return ' style="' . $result . '" '; + } else { + return ' ' . $result . ' '; + } + } + + /** + * Create a cache file + * + * @param $key + * @param $value + */ + public static function putCache($key, $value) + { + global $_COMMON_PATH; + + // check if cache file exist + $cache = $_COMMON_PATH . '/dist/libs/cache/' . $key . '.cache.json'; + + // create cache folder if folder does not exist + if (!file_exists(dirname($cache))) { + mkdir(dirname($cache), 0777, true); + } + + // create cache file + file_put_contents($cache, json_encode($value)); + } + + /** + * Retrieve a cache file by key + * + * @param $key + * + * @return mixed|null + */ + public static function getCache($key) + { + global $_COMMON_PATH; + + // check if cache file exist + $cache = $_COMMON_PATH . '/dist/libs/cache/' . $key . '.cache.json'; + + // check if the requested cache file exists + if (file_exists($cache)) { + return json_decode(file_get_contents($cache), true); + } + + return null; + } + + /** + * Sample demo for docs for multidemo site + * + * @return string + */ + public static function sampleDemoText() + { + $demo = ''; + if (Theme::isMultiDemo()) { + $demo = '--demo1'; + } + return $demo; + } + + public static function camelize($input, $separator = '_') + { + return str_replace($separator, ' ', ucwords($input, $separator)); + } + + public static function arrayMergeRecursive() + { + $arrays = func_get_args(); + $merged = array(); + + while ($arrays) { + $array = array_shift($arrays); + + if (!is_array($array)) { + trigger_error(__FUNCTION__ . ' encountered a non array argument', E_USER_WARNING); + return; + } + + if (!$array) { + continue; + } + + foreach ($array as $key => $value) { + if (is_string($key)) { + if (is_array($value) && array_key_exists($key, $merged) && is_array($merged[$key])) { + $merged[$key] = self::arrayMergeRecursive($merged[$key], $value); + } else { + $merged[$key] = $value; + } + } else { + $merged[] = $value; + } + } + } + + return $merged; + } + + public static function isHexColor($color) + { + return preg_match('/^#[a-f0-9]{6}$/i', $color); + } +} diff --git a/app/DataTables/Logs/AuditLogsDataTable.php b/app/DataTables/Logs/AuditLogsDataTable.php new file mode 100644 index 0000000..57db14f --- /dev/null +++ b/app/DataTables/Logs/AuditLogsDataTable.php @@ -0,0 +1,120 @@ +eloquent($query) + ->rawColumns(['description', 'properties', 'action']) + ->editColumn('id', function (Activity $model) { + return $model->id; + }) + ->editColumn('subject_id', function (Activity $model) { + if (!isset($model->subject)) { + return ''; + } + + if (isset($model->subject->name)) { + return $model->subject->name; + } + + return $model->subject->user()->first()->name; + }) + ->editColumn('causer_id', function (Activity $model) { + return $model->causer ? $model->causer->first_name : __('System'); + }) + ->editColumn('properties', function (Activity $model) { + $content = $model->properties; + + return view('pages.log.audit._details', compact('content')); + }) + ->editColumn('created_at', function (Activity $model) { + return $model->created_at->format('d M, Y H:i:s'); + }) + ->addColumn('action', function (Activity $model) { + return view('pages.log.audit._action-menu', compact('model')); + }); + } + + /** + * Get query source of dataTable. + * + * @param Activity $model + * + * @return \Illuminate\Database\Eloquent\Builder + */ + public function query(Activity $model) + { + return $model->newQuery(); + } + + /** + * Optional method if you want to use html builder. + * + * @return \Yajra\DataTables\Html\Builder + */ + public function html() + { + return $this->builder() + ->setTableId('audit-log-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(true) + ->orderBy(6) + ->responsive() + ->autoWidth(false) + ->parameters([ + 'scrollX' => true, + 'drawCallback' => 'function() { KTMenu.createInstances(); }', + ]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get columns. + * + * @return array + */ + protected function getColumns() + { + return [ + Column::make('id')->title('Log ID')->addClass('ps-0'), + Column::make('log_name')->title(__('Location')), + Column::make('description'), + Column::make('subject_type'), + Column::make('subject_id')->title(__('Subject')), + Column::make('causer_id')->title(__('Causer')), + Column::make('created_at'), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->addClass('text-center') + ->responsivePriority(-1), + Column::make('properties')->addClass('none'), + ]; + } + + /** + * Get filename for export. + * + * @return string + */ + protected function filename() + { + return 'DataLogs_' . date('YmdHis'); + } +} diff --git a/app/DataTables/Logs/SystemLogsDataTable.php b/app/DataTables/Logs/SystemLogsDataTable.php new file mode 100644 index 0000000..26042f6 --- /dev/null +++ b/app/DataTables/Logs/SystemLogsDataTable.php @@ -0,0 +1,143 @@ +collection($query) + ->rawColumns(['action', 'level']) + ->editColumn('id', function (Collection $model) { + return Str::limit($model->get('id'), 5, ''); + }) + ->editColumn('file_path', function (Collection $model) { + return Str::limit($model->get('file_path')); + }) + ->editColumn('message', function (Collection $model) { + return Str::limit($model->get('context')->message, 95); + }) + ->editColumn('date', function (Collection $model) { + return $model->get('date')->format('d M, Y H:i:s'); + }) + ->editColumn('level', function (Collection $model) { + $styles = [ + 'emergency' => 'danger', + 'alert' => 'warning', + 'critical' => 'danger', + 'error' => 'danger', + 'warning' => 'warning', + 'notice' => 'success', + 'info' => 'info', + 'debug' => 'primary', + ]; + $style = 'info'; + if (isset($styles[$model->get('level')])) { + $style = $styles[$model->get('level')]; + } + $value = $model->get('level'); + + return '
' . $value . '
'; + }) + ->editColumn('context', function (Collection $model) { + $content = $model->get('context'); + + return view('pages.log.system._details', compact('content')); + }) + ->addColumn('action', function (Collection $model) { + return view('pages.log.system._action-menu', compact('model')); + }); + } + + /** + * Get query source of dataTable. + * + * @param LogReader $model + * + * @return Collection + */ + public function query(LogReader $model) + { + $data = collect(); + + $model->setLogPath(storage_path('logs')); + + try { + $data = $model->get()->merge($data); + } catch (UnableToRetrieveLogFilesException $exception) { + } + + $data = $data->map(function ($a) { + return (collect($a))->only(['id', 'date', 'environment', 'level', 'file_path', 'context']); + }); + + return $data; + } + + /** + * Optional method if you want to use html builder. + * + * @return \Yajra\DataTables\Html\Builder + */ + public function html() + { + return $this->builder() + ->setTableId('system-log-table') + ->columns($this->getColumns()) + ->minifiedAjax() + ->stateSave(true) + ->orderBy(3) + ->responsive() + ->autoWidth(false) + ->parameters(['scrollX' => true]) + ->addTableClass('align-middle table-row-dashed fs-6 gy-5'); + } + + /** + * Get columns. + * + * @return array + */ + protected function getColumns() + { + return [ + Column::make('id')->title('Log ID')->width(100)->addClass('ps-0'), + Column::make('message'), + Column::make('level'), + Column::make('date')->width(200), + Column::computed('action') + ->exportable(false) + ->printable(false) + ->addClass('text-center') + ->responsivePriority(-1), + Column::make('environment')->addClass('none'), + Column::make('file_path')->title(__('Log Path'))->addClass('none'), + Column::make('context')->addClass('none'), + ]; + } + + /** + * Get filename for export. + * + * @return string + */ + protected function filename() + { + return 'SystemLogs_' . date('YmdHis'); + } +} diff --git a/app/Exceptions/Handler.php b/app/Exceptions/Handler.php new file mode 100644 index 0000000..01ea4bb --- /dev/null +++ b/app/Exceptions/Handler.php @@ -0,0 +1,42 @@ +reportable(function (Throwable $e) { + if (app()->bound('sentry')) { + app('sentry')->captureException($e); + } + }); + } +} diff --git a/app/Helpers/Game.php b/app/Helpers/Game.php new file mode 100644 index 0000000..da099d9 --- /dev/null +++ b/app/Helpers/Game.php @@ -0,0 +1,16 @@ +user()->info; + + // get the default inner page + return view('pages.account.settings.settings', compact('info')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param int $user + * + * @return \Illuminate\Http\RedirectResponse + */ + public function update(SettingsInfoRequest $request) + { + // save user name + $validated = $request->validate([ + 'first_name' => 'required|string|max:255', + 'last_name' => 'required|string|max:255', + ]); + + auth()->user()->update($validated); + + // save on user info + $info = UserInfo::where('user_id', auth()->user()->id)->first(); + + if ($info === null) { + // create new model + $info = new UserInfo(); + } + + // attach this info to the current user + $info->user()->associate(auth()->user()); + + foreach ($request->only(array_keys($request->rules())) as $key => $value) { + if (is_array($value)) { + $value = serialize($value); + } + $info->$key = $value; + } + + // include to save avatar + if ($avatar = $this->upload()) { + $info->avatar = $avatar; + } + + if ($request->boolean('avatar_remove')) { + Storage::delete($info->avatar); + $info->avatar = null; + } + + $info->save(); + + return redirect()->intended('account/settings'); + } + + /** + * Function for upload avatar image + * + * @param string $folder + * @param string $key + * @param string $validation + * + * @return false|string|null + */ + public function upload($folder = 'images', $key = 'avatar', $validation = 'image|mimes:jpeg,png,jpg,gif,svg|max:2048|sometimes') + { + request()->validate([$key => $validation]); + + $file = null; + if (request()->hasFile($key)) { + $file = Storage::disk('public')->putFile($folder, request()->file($key), 'public'); + } + + return $file; + } + + /** + * Function to accept request for change email + * + * @param SettingsEmailRequest $request + */ + public function changeEmail(SettingsEmailRequest $request) + { + // prevent change email for demo account + if ($request->input('current_email') === 'demo@demo.com') { + return redirect()->intended('account/settings'); + } + + auth()->user()->update(['email' => $request->input('email')]); + + if ($request->expectsJson()) { + return response()->json($request->all()); + } + + return redirect()->intended('account/settings'); + } + + /** + * Function to accept request for change password + * + * @param SettingsPasswordRequest $request + */ + public function changePassword(SettingsPasswordRequest $request) + { + // prevent change password for demo account + if ($request->input('current_email') === 'demo@demo.com') { + return redirect()->intended('account/settings'); + } + + auth()->user()->update(['password' => Hash::make($request->input('password'))]); + + if ($request->expectsJson()) { + return response()->json($request->all()); + } + + return redirect()->intended('account/settings'); + } +} diff --git a/app/Http/Controllers/Auth/AuthenticatedSessionController.php b/app/Http/Controllers/Auth/AuthenticatedSessionController.php new file mode 100644 index 0000000..5a4bc67 --- /dev/null +++ b/app/Http/Controllers/Auth/AuthenticatedSessionController.php @@ -0,0 +1,102 @@ +authenticate(); + + $request->session()->regenerate(); + + return redirect()->intended(RouteServiceProvider::HOME); + } + + /** + * Handle an incoming api authentication request. + * + * @param \App\Http\Requests\Auth\LoginRequest $request + * + * @return \Illuminate\Http\Response + */ + public function apiStore(LoginRequest $request) + { + if (!Auth::attempt($request->only('email', 'password'))) { + throw ValidationException::withMessages([ + 'email' => ['The provided credentials are incorrect'] + ]); + } + + $user = User::where('email', $request->email)->first(); + return response($user); + } + + /** + * Verifies user token. + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + */ + public function apiVerifyToken(Request $request) + { + $request->validate([ + 'api_token' => 'required' + ]); + + $user = User::where('api_token', $request->api_token)->first(); + + if (!$user) { + throw ValidationException::withMessages([ + 'token' => ['Invalid token'] + ]); + } + return response($user); + } + + /** + * Destroy an authenticated session. + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\RedirectResponse + */ + public function destroy(Request $request) + { + Auth::guard('web')->logout(); + + $request->session()->invalidate(); + + $request->session()->regenerateToken(); + + return redirect('/'); + } +} diff --git a/app/Http/Controllers/Auth/ConfirmablePasswordController.php b/app/Http/Controllers/Auth/ConfirmablePasswordController.php new file mode 100644 index 0000000..4180f9a --- /dev/null +++ b/app/Http/Controllers/Auth/ConfirmablePasswordController.php @@ -0,0 +1,47 @@ +validate([ + 'email' => $request->user()->email, + 'password' => $request->password, + ]) + ) { + throw ValidationException::withMessages([ + 'password' => __('auth.password'), + ]); + } + + $request->session()->put('auth.password_confirmed_at', time()); + + return redirect()->intended(RouteServiceProvider::HOME); + } +} diff --git a/app/Http/Controllers/Auth/EmailVerificationNotificationController.php b/app/Http/Controllers/Auth/EmailVerificationNotificationController.php new file mode 100644 index 0000000..2a499d1 --- /dev/null +++ b/app/Http/Controllers/Auth/EmailVerificationNotificationController.php @@ -0,0 +1,28 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(RouteServiceProvider::HOME); + } + + $request->user()->sendEmailVerificationNotification(); + + return back()->with('status', 'verification-link-sent'); + } +} diff --git a/app/Http/Controllers/Auth/EmailVerificationPromptController.php b/app/Http/Controllers/Auth/EmailVerificationPromptController.php new file mode 100644 index 0000000..6d6069f --- /dev/null +++ b/app/Http/Controllers/Auth/EmailVerificationPromptController.php @@ -0,0 +1,24 @@ +user()->hasVerifiedEmail() + ? redirect()->intended(RouteServiceProvider::HOME) + : view('auth.verify-email'); + } +} diff --git a/app/Http/Controllers/Auth/NewPasswordController.php b/app/Http/Controllers/Auth/NewPasswordController.php new file mode 100644 index 0000000..81bdd90 --- /dev/null +++ b/app/Http/Controllers/Auth/NewPasswordController.php @@ -0,0 +1,67 @@ +validate([ + 'token' => 'required', + 'email' => 'required|email', + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + ]); + + // Here we will attempt to reset the user's password. If it is successful we + // will update the password on an actual user model and persist it to the + // database. Otherwise we will parse the error and return the response. + $status = Password::reset( + $request->only('email', 'password', 'password_confirmation', 'token'), + function ($user) use ($request) { + $user->forceFill([ + 'password' => Hash::make($request->password), + 'remember_token' => Str::random(60), + ])->save(); + + event(new PasswordReset($user)); + } + ); + + // If the password was successfully reset, we will redirect the user back to + // the application's home authenticated view. If there is an error we can + // redirect them back to where they came from with their error message. + return $status == Password::PASSWORD_RESET + ? redirect()->route('login')->with('status', __($status)) + : back()->withInput($request->only('email')) + ->withErrors(['email' => __($status)]); + } +} diff --git a/app/Http/Controllers/Auth/PasswordResetLinkController.php b/app/Http/Controllers/Auth/PasswordResetLinkController.php new file mode 100644 index 0000000..c0fccd0 --- /dev/null +++ b/app/Http/Controllers/Auth/PasswordResetLinkController.php @@ -0,0 +1,76 @@ +validate([ + 'email' => 'required|email', + ]); + + // We will send the password reset link to this user. Once we have attempted + // to send the link, we will examine the response then see the message we + // need to show to the user. Finally, we'll send out a proper response. + $status = Password::sendResetLink( + $request->only('email') + ); + + return $status == Password::RESET_LINK_SENT + ? back()->with('status', __($status)) + : back()->withInput($request->only('email')) + ->withErrors(['email' => __($status)]); + } + + /** + * Handle an incoming api password reset link request. + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + * + * @throws \Illuminate\Validation\ValidationException + */ + public function apiStore(Request $request) + { + $request->validate([ + 'email' => 'required|email', + ]); + + $user = User::where('email', $request->email)->first(); + + if (!$user) { + throw ValidationException::withMessages([ + 'email' => ['User with such email doesn\'t exist'] + ]); + } + + return response('Password reset email successfully sent.'); + } +} diff --git a/app/Http/Controllers/Auth/RegisteredUserController.php b/app/Http/Controllers/Auth/RegisteredUserController.php new file mode 100644 index 0000000..4bc2e63 --- /dev/null +++ b/app/Http/Controllers/Auth/RegisteredUserController.php @@ -0,0 +1,137 @@ +validate([ + 'username' => 'required|string|max:16|unique:users', + 'email' => 'required|string|email|max:255|unique:users', + 'password' => ['required', 'confirmed', Rules\Password::defaults()] + ]); + + $user = User::create([ + 'username' => $request->username, + 'email' => $request->email, + 'password' => Hash::make($request->password), + 'ip_address' => $request->ip() + ]); + + /* Add account into Fider (https://myvideogamelist.com). */ + $json = '{"name": "' . $request->username . '", "email": "' . $request->email . '"}'; + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => "https://features.myvideogamelist.com/api/v1/users", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => $json, + CURLOPT_HTTPHEADER => array( + "Content-Type: application/json", + "Authorization: Bearer $TOKEN" + ), + )); + + curl_exec($curl); + + curl_close($curl); + + event(new Registered($user)); + + Auth::login($user); + + return redirect(RouteServiceProvider::HOME); + } + + + /** + * Handle an incoming api registration request. + * + * @param \Illuminate\Http\Request $request + * + * @return \Illuminate\Http\Response + * + * @throws \Illuminate\Validation\ValidationException + */ + public function apiStore(Request $request) + { + $request->validate([ + 'username' => 'required|string|max:16|unique:users', + 'email' => 'required|string|email|max:255|unique:users', + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + ]); + + $token = Str::random(60); + $user = User::create([ + 'username' => $request->username, + 'email' => $request->email, + 'password' => Hash::make($request->password), + 'api_token' => hash('sha256', $token), + 'ip_address' => $request->ip() + ]); + + /* Add account into Fider (https://myvideogamelist.com). */ + $json = '{"name": "' . $request->username . '", "email": "' . $request->email . '"}'; + + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => "https://features.myvideogamelist.com/api/v1/users", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => "", + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => "POST", + CURLOPT_POSTFIELDS => $json, + CURLOPT_HTTPHEADER => array( + "Content-Type: application/json", + "Authorization: Bearer $TOKEN" + ), + )); + + curl_exec($curl); + + curl_close($curl); + + return response($user); + } +} diff --git a/app/Http/Controllers/Auth/VerifyEmailController.php b/app/Http/Controllers/Auth/VerifyEmailController.php new file mode 100644 index 0000000..53e832e --- /dev/null +++ b/app/Http/Controllers/Auth/VerifyEmailController.php @@ -0,0 +1,31 @@ +user()->hasVerifiedEmail()) { + return redirect()->intended(RouteServiceProvider::HOME . '?verified=1'); + } + + if ($request->user()->markEmailAsVerified()) { + event(new Verified($request->user())); + } + + return redirect()->intended(RouteServiceProvider::HOME . '?verified=1'); + } +} diff --git a/app/Http/Controllers/ConsoleListController.php b/app/Http/Controllers/ConsoleListController.php new file mode 100644 index 0000000..7fab85e --- /dev/null +++ b/app/Http/Controllers/ConsoleListController.php @@ -0,0 +1,85 @@ +authorize('create', Game::class); + + // Validate the data from the request. + $inputs = $this->validate($request, [ + 'name' => 'string|required|max:255', + 'alt_titles' => 'string|nullable|max:255', + 'platform_id' => 'integer|required', + 'description' => 'string|nullable', + 'source' => 'url|nullable|max:255', + 'boxart' => 'image|nullable|max:512', + 'genre_ids' => 'array|nullable', + 'developers' => 'string|nullable|max:255', + 'publishers' => 'string|nullable|max:255', + 'composers' => 'string|nullable|max:255', + 'website' => 'url|nullable|max:255', + 'na_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'jp_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'eu_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'aus_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'esrb_rating' => [ + 'string', + 'nullable', + Rule::in(['Everyone', 'Everyone 10+', 'Teen', 'Mature 17+', 'Adults Only 18+', 'Rating Pending - Likely Mature 17+']) // phpcs:ignore + ], + 'pegi_rating' => [ + 'string', + 'nullable', + Rule::in(['PEGI 3', 'PEGI 7', 'PEGI 12', 'PEGI 16', 'PEGI 18']) + ], + 'cero_rating' => [ + 'string', + 'nullable', + Rule::in(['CERO A', 'CERO B', 'CERO C', 'CERO D', 'CERO Z']) + ], + 'acb_rating' => [ + 'string', + 'nullable', + Rule::in(['E', 'G', 'PG', 'M', 'MA 15+', 'R 18+', 'X 18+']) + ] + ]); + + // Convert the genre_ids array into a comma separated string. + if (isset($inputs['genre_ids'])) { + $inputs['genre_ids'] = implode(',', $inputs['genre_ids']); + } + + // Upload the boxart image as necessary. + if ($request->hasFile('boxart')) { + $path = $request->boxart->store('assets/boxart', 's3'); + $inputs['boxart'] = basename($path); + } + + // Set the requested_by and added_by fields to the current user. + $inputs['requested_by'] = auth()->user()->id; + $inputs['added_by'] = auth()->user()->id; + + // Save the data to the database. + $result = Game::create($inputs); + + // If the creation was successful go to the list of games. + if ($result->exists) { + return redirect('/admin/games')->with('create_success', str_replace('"', '', json_encode($inputs['name']))); + } else { // If the creation failed, go back. + return back(); + } + } + + /** + * Display the specified resource. + * + * @param int $gameId + * + * @return \Illuminate\Http\Response + */ + public function show($gameId) + { + // Direct the user to the games profile page. + $game = Game::findOrFail($gameId); + return view('pages.game.index', compact('game')); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Game $game + * @return \Illuminate\Http\Response + */ + public function edit(Game $game) + { + // Direct the user to the edit game page. + $game = Game::findOrFail($game->id); + return view('pages.admin.games.edit', compact('game')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Game $game + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Game $game) + { + // Ensure the user has permission to add games into the database. + $this->authorize('update', Game::class); + + // Validate the data from the request. + $inputs = $this->validate($request, [ + 'name' => 'string|required|max:255', + 'alt_titles' => 'string|nullable|max:255', + 'platform_id' => 'integer|required', + 'description' => 'string|nullable', + 'source' => 'url|nullable|max:255', + 'boxart' => 'image|nullable|max:512', + 'genre_ids' => 'array|nullable', + 'developers' => 'string|nullable|max:255', + 'publishers' => 'string|nullable|max:255', + 'composers' => 'string|nullable|max:255', + 'website' => 'url|nullable|max:255', + 'na_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'jp_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'eu_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'aus_release_date' => [ + new GameReleaseDate(), + 'nullable' + ], + 'esrb_rating' => [ + 'string', + 'nullable', + Rule::in(['Everyone', 'Everyone 10+', 'Teen', 'Mature 17+', 'Adults Only 18+', 'Rating Pending - Likely Mature 17+']) // phpcs:ignore + ], + 'pegi_rating' => [ + 'string', + 'nullable', + Rule::in(['PEGI 3', 'PEGI 7', 'PEGI 12', 'PEGI 16', 'PEGI 18']) + ], + 'cero_rating' => [ + 'string', + 'nullable', + Rule::in(['CERO A', 'CERO B', 'CERO C', 'CERO D', 'CERO Z']) + ], + 'acb_rating' => [ + 'string', + 'nullable', + Rule::in(['E', 'G', 'PG', 'M', 'MA 15+', 'R 18+', 'X 18+']) + ] + ]); + + // Convert the genre_ids array into a comma separated string. + if (isset($inputs['genre_ids'])) { + $inputs['genre_ids'] = implode(',', $inputs['genre_ids']); + $game->genre_ids = $inputs['genre_ids']; + } + + // Upload the new boxart image as necessary. + if ($request->hasFile('boxart')) { + // Get the current boxart image. + $original_boxart = $game->boxart; + + // Delete the boxart image if a previous boxart image existed. + if ($original_boxart) { + $result = Storage::disk('s3')->delete('assets/boxart/' . $original_boxart); + } + + // Upload the new boxart image. + $path = $request->boxart->store('assets/boxart', 's3'); + $inputs['boxart'] = basename($path); + $game->boxart = $inputs['boxart']; + } + + // Set the values of the $game object to the new values. + $game->name = $inputs['name']; + $game->alt_titles = $inputs['alt_titles']; + $game->platform_id = $inputs['platform_id']; + $game->description = $inputs['description']; + $game->source = $inputs['source']; + $game->developers = $inputs['developers']; + $game->publishers = $inputs['publishers']; + $game->composers = $inputs['composers']; + $game->website = $inputs['website']; + $game->na_release_date = $inputs['na_release_date']; + $game->jp_release_date = $inputs['jp_release_date']; + $game->eu_release_date = $inputs['eu_release_date']; + $game->aus_release_date = $inputs['aus_release_date']; + $game->esrb_rating = $inputs['esrb_rating']; + $game->pegi_rating = $inputs['pegi_rating']; + $game->cero_rating = $inputs['cero_rating']; + $game->acb_rating = $inputs['acb_rating']; + + // Save the data to the database. + $result = $game->save(); + + // If the update was successful show the user the updated game. + if ($result === true) { + return redirect('/admin/game/' . $game->id . '/edit')->with('edit_success', '1'); + } else { // If the update failed, go back. + return back(); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Game $game + * @return \Illuminate\Http\Response + */ + public function destroy(Game $game) + { + // + } +} diff --git a/app/Http/Controllers/GameListController.php b/app/Http/Controllers/GameListController.php new file mode 100644 index 0000000..54b5007 --- /dev/null +++ b/app/Http/Controllers/GameListController.php @@ -0,0 +1,283 @@ +user(); + } else { // Otherwise, $user is the user with the specified username. + $user = User::where('username', $username)->firstOrFail(); + } + + // Direct the user to the games list page. + return view('pages.game-lists.index', compact('user')); + } + + /** + * Show the form for creating a new resource. + * + * @param int $gameId + * @return \Illuminate\Http\Response + */ + public function create($gameId) + { + // Make sure $gameId is numeric. + if (is_numeric($gameId)) { + return view('pages.game-lists.create', ['gameId' => $gameId]); + } else { // Else go to the home page. + return redirect()->route('index'); + } + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // Validate the data from the request. + $inputs = $this->validate($request, [ + 'name' => [ + 'string', + 'max:128', + 'nullable' + ], + 'ownership' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4]) + ], + 'status' => [ + 'numeric', + Rule::in([1, 2, 3, 4, 5, 6]) + ], + 'rating' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) + ], + 'priority' => [ + Rule::in(['Low', 'Medium', 'High']), + 'string', + 'max:6', + 'nullable', + ], + 'difficulty' => [ + 'string', + 'nullable', + Rule::in(['Easy', 'Medium', 'Hard', 'Extremely Hard']) + ], + 'hoursPlayed' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]) + ], + 'start_date' => 'date_format:Y-m-d|after:1970-01-01 00:00:00|nullable', + 'finish_date' => 'date_format:Y-m-d|after:1970-01-01 00:00:00|nullable', + 'replayValue' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4, 5]) + ], + 'notes' => 'string|nullable' + ]); + + // Fetch a Game Model. + $game = Game::whereId($request->input('gameId'))->first(); + + // Fetch the name if none was selected. + if (!$request->input('name')) { + $inputs['name'] = $game->name; + } + + // Set $input['game_id']. + $inputs['game_id'] = $game->id; + + // Set $inputs['platform_id']. + $inputs['platform_id'] = Game::whereId($game->id)->value('platform_id'); + + // Set the value of replayValue. + if (!$request->input('replayValue')) { + $inputs['replayValue'] = null; + } + + // Set the value of isReplaying. + if ($request->input('isReplaying') == 1) { + $inputs['isReplaying'] = 'Y'; + } else { + $inputs['isReplaying'] = 'N'; + } + + // Save the data to the database. + $result = auth()->user()->gameList()->create($inputs); + + // If adding the game was successful go to the users list. + if ($result->exists) { + return redirect('/list')->with('create_success', str_replace('"', '', json_encode($inputs['name']))); + } else { // If the addition failed, go back. + return back(); + } + } + + /** + * Display the specified resource. + * + * @param \App\Models\GameList $gameList + * @return \Illuminate\Http\Response + */ + public function show(GameList $gameList) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\GameList $gameList + * @return \Illuminate\Http\Response + */ + public function edit(GameList $gameList) + { + // Direct the user to the edit page. + return view('pages.game-lists.edit', compact('gameList')); + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\GameList $gameList + * @return \Illuminate\Http\Response + */ + public function update(Request $request, GameList $gameList) + { + // Validate the data from the request. + $inputs = $this->validate($request, [ + 'name' => 'string|max:128|nullable', + 'ownership' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4]) + ], + 'status' => [ + 'numeric', + Rule::in([1, 2, 3, 4, 5, 6]) + ], + 'rating' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) + ], + 'priority' => [ + Rule::in(['Low', 'Medium', 'High']), + 'string', + 'max:6', + 'nullable', + ], + 'difficulty' => [ + 'string', + 'nullable', + Rule::in(['Easy', 'Medium', 'Hard', 'Extremely Hard']) + ], + 'hoursPlayed' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]) + ], + 'start_date' => 'date_format:Y-m-d|after:1970-01-01 00:00:00|nullable', + 'finish_date' => 'date_format:Y-m-d|after:1970-01-01 00:00:00|nullable', + 'replayValue' => [ + 'numeric', + 'nullable', + Rule::in([1, 2, 3, 4, 5]) + ], + 'notes' => 'string|nullable' + ]); + + // Fetch a Game Model. + $game = Game::whereId($gameList->game_id)->first(); + + // Fetch the name if none was selected. + if (!$request->input('name')) { + $inputs['name'] = $game->name; + } + + // Set $inputs['platform_id']. + $inputs['platform_id'] = $game->platform_id; + + // Set the value of replayValue. + if (!$request->input('replayValue')) { + $inputs['replayValue'] = null; + } + + // Set the value of isReplaying. + if ($request->input('isReplaying') == 1) { + $inputs['isReplaying'] = 'Y'; + } else { + $inputs['isReplaying'] = 'N'; + } + + // Set the values of the gameList object to the updates values. + $gameList['name'] = $inputs['name']; + $gameList['ownership'] = $inputs['ownership']; + $gameList['status'] = $inputs['status']; + $gameList['rating'] = $inputs['rating']; + $gameList['priority'] = $inputs['priority']; + $gameList['difficulty'] = $inputs['difficulty']; + $gameList['hours_played'] = $inputs['hoursPlayed']; + $gameList['start_date'] = $inputs['start_date']; + $gameList['finish_date'] = $inputs['finish_date']; + $gameList['replay_value'] = $inputs['replayValue']; + $gameList['notes'] = $inputs['notes']; + $gameList['is_replaying'] = $inputs['isReplaying']; + + // Ensure the user has permission to update this game list entry. + $this->authorize('update', $gameList); + + // Save the data to the database. + $result = $gameList->save(); + + // If the update was successful go back to the edit page with a success message. + if ($result === true) { + return redirect('/list/edit/' . $gameList->id)->with('edit_success', '1'); + } else { // If the update failed, go back. + return back(); + } + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\GameList $gameList + * @return \Illuminate\Http\Response + */ + public function destroy(GameList $gameList) + { + // Check to ensure this user has permission to delete this game list entry. + $this->authorize('delete', $gameList); + + // Soft delete the entry within the database. + $gameList->delete(); + + // Go back to the users game list. + return redirect('/list')->with('delete_success', str_replace('"', '', json_encode($gameList->name))); + } +} diff --git a/app/Http/Controllers/GameSearchController.php b/app/Http/Controllers/GameSearchController.php new file mode 100644 index 0000000..d3be0b2 --- /dev/null +++ b/app/Http/Controllers/GameSearchController.php @@ -0,0 +1,110 @@ +validate($request, [ + 'search' => 'required|string|max:64' + ]); + + // Set the search term variable. + $term = $input['search']; + + // Fetch all matching posts and send them to the search view. + $games = Game::where('name', 'like', "%$term%") + ->orWhere('alt_titles', 'like', "%$term%") + ->orderBy('created_at', 'DESC') + ->paginate(25); + + // Send the results to the view. + return view('pages.search.games.show', compact('games')); + } +} diff --git a/app/Http/Controllers/GenreController.php b/app/Http/Controllers/GenreController.php new file mode 100644 index 0000000..74b58d0 --- /dev/null +++ b/app/Http/Controllers/GenreController.php @@ -0,0 +1,85 @@ +render('pages.log.audit.index'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * + * @return \Illuminate\Http\Response + */ + public function destroy($id) + { + $activity = Activity::find($id); + + // Delete from db + $activity->delete(); + } +} diff --git a/app/Http/Controllers/Logs/SystemLogsController.php b/app/Http/Controllers/Logs/SystemLogsController.php new file mode 100644 index 0000000..1b31d47 --- /dev/null +++ b/app/Http/Controllers/Logs/SystemLogsController.php @@ -0,0 +1,32 @@ +render('pages.log.system.index'); + } + + /** + * Remove the specified resource from storage. + * + * @param int $id + * + * @return \Illuminate\Http\Response + */ + public function destroy($id, LogReader $logReader) + { + return $logReader->find($id)->delete(); + } +} diff --git a/app/Http/Controllers/PlatformController.php b/app/Http/Controllers/PlatformController.php new file mode 100644 index 0000000..6cc3ec7 --- /dev/null +++ b/app/Http/Controllers/PlatformController.php @@ -0,0 +1,100 @@ +firstOrFail(); + } elseif ($platform == 'Sega_Genesis_MegaDrive') { + $platform = Platform::where('name', 'Sega Genesis/MegaDrive')->firstOrFail(); + } elseif ($platform == 'Meta_Oculus_Quest') { + $platform = Platform::where('name', 'Meta/Oculus Quest')->firstOrFail(); + } elseif ($platform == 'Meta_Oculus_Quest_2') { + $platform = Platform::where('name', 'Meta/Oculus Quest 2')->firstOrFail(); + } else { + $platform = Platform::where('name', str_replace('_', ' ', $platform))->firstOrFail(); + } + + // Direct the users to a page showing all the games for the specified platform. + return view('pages.platforms.show', compact('platform')); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Platform $platform + * @return \Illuminate\Http\Response + */ + public function edit(Platform $platform) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Platform $platform + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Platform $platform) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Platform $platform + * @return \Illuminate\Http\Response + */ + public function destroy(Platform $platform) + { + // + } +} diff --git a/app/Http/Controllers/ProfileCommentController.php b/app/Http/Controllers/ProfileCommentController.php new file mode 100644 index 0000000..93a82cc --- /dev/null +++ b/app/Http/Controllers/ProfileCommentController.php @@ -0,0 +1,85 @@ +user(); + } else { // Otherwise, $user is the user with the specified username. + $user = User::where('username', $username)->firstOrFail(); + } + + // Direct the user to the profile page. + return view('pages.profile.index', compact('user')); + } + + /** + * 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/UserGamerTagController.php b/app/Http/Controllers/UserGamerTagController.php new file mode 100644 index 0000000..c78a834 --- /dev/null +++ b/app/Http/Controllers/UserGamerTagController.php @@ -0,0 +1,85 @@ +user(); + + $result = DB::table('user_site_settings')->updateOrInsert( + ['user_id' => $user->id, 'setting_name' => 'dark_mode'], + ['setting_value' => $mode] + ); + } +} diff --git a/app/Http/Controllers/WishlistController.php b/app/Http/Controllers/WishlistController.php new file mode 100644 index 0000000..c5e4763 --- /dev/null +++ b/app/Http/Controllers/WishlistController.php @@ -0,0 +1,97 @@ +user()->id; + $wishlist = Wishlist::where('user_id', $userId)->whereNull('deleted_at')->get(); + } else { // Otherwise, fetch the user_id from $username and their wishlist items. + $userId = User::whereUsername($username)->firstOrFail()->id; + $wishlist = Wishlist::where('user_id', $userId)->get(); + } + + // Direct the user to the wishlist page. + return view('pages.wishlist.index', compact('wishlist')); + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\Wishlist $wishlist + * @return \Illuminate\Http\Response + */ + public function edit(Wishlist $wishlist) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\Wishlist $wishlist + * @return \Illuminate\Http\Response + */ + public function update(Request $request, Wishlist $wishlist) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\Wishlist $wishlist + * @return \Illuminate\Http\Response + */ + public function destroy(Wishlist $wishlist) + { + // + } +} diff --git a/app/Http/Kernel.php b/app/Http/Kernel.php new file mode 100644 index 0000000..915c4ec --- /dev/null +++ b/app/Http/Kernel.php @@ -0,0 +1,67 @@ + [ + \App\Http\Middleware\EncryptCookies::class, + \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, + \Illuminate\Session\Middleware\StartSession::class, + // \Illuminate\Session\Middleware\AuthenticateSession::class, + \Illuminate\View\Middleware\ShareErrorsFromSession::class, + \App\Http\Middleware\VerifyCsrfToken::class, + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + + 'api' => [ + 'throttle:api', + \Illuminate\Routing\Middleware\SubstituteBindings::class, + ], + ]; + + /** + * The application's route middleware. + * + * These middleware may be assigned to groups or used individually. + * + * @var array + */ + protected $routeMiddleware = [ + 'auth' => \App\Http\Middleware\Authenticate::class, + 'auth.basic' => \Illuminate\Auth\Middleware\AuthenticateWithBasicAuth::class, + 'cache.headers' => \Illuminate\Http\Middleware\SetCacheHeaders::class, + 'can' => \Illuminate\Auth\Middleware\Authorize::class, + 'guest' => \App\Http\Middleware\RedirectIfAuthenticated::class, + 'password.confirm' => \Illuminate\Auth\Middleware\RequirePassword::class, + 'signed' => \Illuminate\Routing\Middleware\ValidateSignature::class, + 'throttle' => \Illuminate\Routing\Middleware\ThrottleRequests::class, + 'verified' => \Illuminate\Auth\Middleware\EnsureEmailIsVerified::class, + ]; +} diff --git a/app/Http/Middleware/Authenticate.php b/app/Http/Middleware/Authenticate.php new file mode 100644 index 0000000..704089a --- /dev/null +++ b/app/Http/Middleware/Authenticate.php @@ -0,0 +1,21 @@ +expectsJson()) { + return route('login'); + } + } +} diff --git a/app/Http/Middleware/DevMiddleware.php b/app/Http/Middleware/DevMiddleware.php new file mode 100644 index 0000000..dcd82d5 --- /dev/null +++ b/app/Http/Middleware/DevMiddleware.php @@ -0,0 +1,32 @@ +check()) { + return redirect(theme()->getPageUrl(RouteServiceProvider::HOME)); + } + } + + return $next($request); + } +} diff --git a/app/Http/Middleware/TrimStrings.php b/app/Http/Middleware/TrimStrings.php new file mode 100644 index 0000000..5a50e7b --- /dev/null +++ b/app/Http/Middleware/TrimStrings.php @@ -0,0 +1,18 @@ +allSubdomainsOfApplicationUrl(), + ]; + } +} diff --git a/app/Http/Middleware/TrustProxies.php b/app/Http/Middleware/TrustProxies.php new file mode 100644 index 0000000..0c7d3b6 --- /dev/null +++ b/app/Http/Middleware/TrustProxies.php @@ -0,0 +1,28 @@ + 'required|string|email|max:255|unique:users', + 'current_password' => ['required', new MatchOldPassword()], + ]; + } +} diff --git a/app/Http/Requests/Account/SettingsInfoRequest.php b/app/Http/Requests/Account/SettingsInfoRequest.php new file mode 100644 index 0000000..9e3c5d0 --- /dev/null +++ b/app/Http/Requests/Account/SettingsInfoRequest.php @@ -0,0 +1,38 @@ + 'nullable|string|max:255', + 'phone' => 'nullable|string|max:255', + 'website' => 'nullable|string|max:255', + 'country' => 'nullable|string|max:255', + 'language' => 'nullable|string|max:255', + 'timezone' => 'nullable|string|max:255', + 'currency' => 'nullable|string|max:255', + 'communication' => 'nullable|array', + 'marketing' => 'nullable|integer', + ]; + } +} diff --git a/app/Http/Requests/Account/SettingsPasswordRequest.php b/app/Http/Requests/Account/SettingsPasswordRequest.php new file mode 100644 index 0000000..d19b753 --- /dev/null +++ b/app/Http/Requests/Account/SettingsPasswordRequest.php @@ -0,0 +1,33 @@ + ['required', new MatchOldPassword()], + 'password' => ['required', 'confirmed', Rules\Password::defaults()], + ]; + } +} diff --git a/app/Http/Requests/Auth/LoginRequest.php b/app/Http/Requests/Auth/LoginRequest.php new file mode 100644 index 0000000..8352973 --- /dev/null +++ b/app/Http/Requests/Auth/LoginRequest.php @@ -0,0 +1,93 @@ + 'required|string', + 'password' => 'required|string', + ]; + } + + /** + * Attempt to authenticate the request's credentials. + * + * @return void + * + * @throws \Illuminate\Validation\ValidationException + */ + public function authenticate() + { + $this->ensureIsNotRateLimited(); + + if (! Auth::attempt($this->only('username', 'password'), $this->boolean('remember'))) { + RateLimiter::hit($this->throttleKey()); + + throw ValidationException::withMessages([ + 'username' => __('auth.failed'), + ]); + } + + RateLimiter::clear($this->throttleKey()); + } + + /** + * Ensure the login request is not rate limited. + * + * @return void + * + * @throws \Illuminate\Validation\ValidationException + */ + public function ensureIsNotRateLimited() + { + if (! RateLimiter::tooManyAttempts($this->throttleKey(), 5)) { + return; + } + + event(new Lockout($this)); + + $seconds = RateLimiter::availableIn($this->throttleKey()); + + throw ValidationException::withMessages([ + 'username' => trans('auth.throttle', [ + 'seconds' => $seconds, + 'minutes' => ceil($seconds / 60), + ]), + ]); + } + + /** + * Get the rate limiting throttle key for the request. + * + * @return string + */ + public function throttleKey() + { + return Str::lower($this->input('username')) . '|' . $this->ip(); + } +} diff --git a/app/Models/ConsoleList.php b/app/Models/ConsoleList.php new file mode 100644 index 0000000..4eca579 --- /dev/null +++ b/app/Models/ConsoleList.php @@ -0,0 +1,23 @@ +hasOne(Platform::class, 'id', 'platform_id'); + } +} diff --git a/app/Models/GameComment.php b/app/Models/GameComment.php new file mode 100644 index 0000000..251b65a --- /dev/null +++ b/app/Models/GameComment.php @@ -0,0 +1,25 @@ +hasOne(User::class); + } + + /** + * Game list relation to game model + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function game() + { + return $this->hasOne(Game::class, 'id', 'game_id'); + } +} diff --git a/app/Models/Genre.php b/app/Models/Genre.php new file mode 100644 index 0000000..c5bb0a1 --- /dev/null +++ b/app/Models/Genre.php @@ -0,0 +1,23 @@ + 'datetime', + ]; + + public function getRememberToken() + { + return $this->remember_token; + } + + public function setRememberToken($value) + { + $this->remember_token = $value; + } + + /** + * User relation to user gamertags model + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function gamertags() + { + return $this->hasOne(UserGamerTag::class); + } + + /** + * User relation to user info model + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function info() + { + return $this->hasOne(UserInfo::class); + } + + /** + * User relation to user notification settings model + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function notifications() + { + return $this->hasOne(UserNotificationSetting::class); + } + + /** + * User relation to role model + * + * @return \Illuminate\Database\Eloquent\Relations\HasOne + */ + public function role() + { + return $this->hasOne(Role::class, 'id', 'role_id'); + } + + /** + * User relation to game list model + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function gameList() + { + return $this->hasMany(GameList::class); + } + + /** + * User relation to user site settings model + * + * @return \Illuminate\Database\Eloquent\Relations\HasMany + */ + public function siteSettings() + { + return $this->hasMany(UserSiteSetting::class); + } +} diff --git a/app/Models/UserGamerTag.php b/app/Models/UserGamerTag.php new file mode 100644 index 0000000..fdb8770 --- /dev/null +++ b/app/Models/UserGamerTag.php @@ -0,0 +1,40 @@ +belongsTo(User::class); + } +} diff --git a/app/Models/UserInfo.php b/app/Models/UserInfo.php new file mode 100644 index 0000000..02a79bb --- /dev/null +++ b/app/Models/UserInfo.php @@ -0,0 +1,40 @@ +belongsTo(User::class); + } +} diff --git a/app/Models/UserNotificationSetting.php b/app/Models/UserNotificationSetting.php new file mode 100644 index 0000000..69ac83f --- /dev/null +++ b/app/Models/UserNotificationSetting.php @@ -0,0 +1,37 @@ +belongsTo(User::class); + } +} diff --git a/app/Models/UserSiteSetting.php b/app/Models/UserSiteSetting.php new file mode 100644 index 0000000..afc2e16 --- /dev/null +++ b/app/Models/UserSiteSetting.php @@ -0,0 +1,34 @@ +hasOne(User::class); + } +} diff --git a/app/Models/Wishlist.php b/app/Models/Wishlist.php new file mode 100644 index 0000000..4dc5799 --- /dev/null +++ b/app/Models/Wishlist.php @@ -0,0 +1,25 @@ +id === $gameList->user_id; + } + + /** + * Determine whether the user can delete the model. + * + * @param \App\Models\User $user + * @param \App\Models\GameList $gameList + * @return \Illuminate\Auth\Access\Response|bool + */ + public function delete(User $user, GameList $gameList) + { + return $user->id === $gameList->user_id; + } + + /** + * Determine whether the user can restore the model. + * + * @param \App\Models\User $user + * @param \App\Models\GameList $gameList + * @return \Illuminate\Auth\Access\Response|bool + */ + public function restore(User $user, GameList $gameList) + { + // + } + + /** + * Determine whether the user can permanently delete the model. + * + * @param \App\Models\User $user + * @param \App\Models\GameList $gameList + * @return \Illuminate\Auth\Access\Response|bool + */ + public function forceDelete(User $user, GameList $gameList) + { + // + } +} diff --git a/app/Policies/GamePolicy.php b/app/Policies/GamePolicy.php new file mode 100644 index 0000000..3a6eb3e --- /dev/null +++ b/app/Policies/GamePolicy.php @@ -0,0 +1,129 @@ +role_id === 1 || + $user->role_id === 2 || + $user->role_id === 3 + ) { + return true; + } + } + + /** + * Determine whether the user can clone the model. + */ + public function clone(User $user) + { + // Ensure the user has permission to clone games into the database. + if ( + $user->role_id === 1 || + $user->role_id === 2 || + $user->role_id === 3 + ) { + return true; + } + } + + /** + * Determine whether the user can update the model. + * + * @param \App\Models\User $user + * @return \Illuminate\Auth\Access\Response|bool + */ + public function update(User $user) + { + // Ensure the user has permission to updates games in the database. + if ( + $user->role_id === 1 || + $user->role_id === 2 || + $user->role_id === 3 + ) { + return true; + } + } + + /** + * Determine whether the user can delete the model. + * + * @param \App\Models\User $user + * @param \App\Models\Game $game + * @return \Illuminate\Auth\Access\Response|bool + */ + public function delete(User $user, Game $game) + { + // Ensure the user has permission to delete games from the database. + if ( + $user->role_id === 1 || + $user->role_id === 2 || + $user->role_id === 3 + ) { + return true; + } + } + + /** + * Determine whether the user can restore the model. + * + * @param \App\Models\User $user + * @param \App\Models\Game $game + * @return \Illuminate\Auth\Access\Response|bool + */ + public function restore(User $user, Game $game) + { + // + } + + /** + * Determine whether the user can permanently delete the model. + * + * @param \App\Models\User $user + * @param \App\Models\Game $game + * @return \Illuminate\Auth\Access\Response|bool + */ + public function forceDelete(User $user, Game $game) + { + // + } +} diff --git a/app/Policies/UserPolicy.php b/app/Policies/UserPolicy.php new file mode 100644 index 0000000..0f85833 --- /dev/null +++ b/app/Policies/UserPolicy.php @@ -0,0 +1,93 @@ +is($model); + } + + /** + * Determine whether the user can restore the model. + * + * @param \App\Models\User $user + * @param \App\Models\User $model + * @return mixed + */ + public function restore(User $user, User $model) + { + // + } + + /** + * Determine whether the user can permanently delete the model. + * + * @param \App\Models\User $user + * @param \App\Models\User $model + * @return mixed + */ + public function forceDelete(User $user, User $model) + { + // + } +} diff --git a/app/Policies/UserSiteSettingPolicy.php b/app/Policies/UserSiteSettingPolicy.php new file mode 100644 index 0000000..48884e3 --- /dev/null +++ b/app/Policies/UserSiteSettingPolicy.php @@ -0,0 +1,94 @@ +app->isLocal()) { + // $this->app->register(\Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class); + // } + } + + /** + * Bootstrap any application services. + * + * @return void + */ + public function boot() + { + $theme = theme(); + + // Share theme adapter class + View::share('theme', $theme); + + // Set demo globally + $theme->setDemo('demo1'); + + $theme->initConfig(); + + bootstrap()->run(); + + if (isRTL()) { + // RTL html attributes + Theme::addHtmlAttribute('html', 'dir', 'rtl'); + Theme::addHtmlAttribute('html', 'direction', 'rtl'); + Theme::addHtmlAttribute('html', 'style', 'direction:rtl;'); + Theme::addHtmlAttribute('body', 'direction', 'rtl'); + } + } +} diff --git a/app/Providers/AuthServiceProvider.php b/app/Providers/AuthServiceProvider.php new file mode 100644 index 0000000..45af7a1 --- /dev/null +++ b/app/Providers/AuthServiceProvider.php @@ -0,0 +1,33 @@ + 'App\Policies\ModelPolicy', + User::class => UserPolicy::class, + ]; + + /** + * Register any authentication / authorization services. + * + * @return void + */ + public function boot() + { + $this->registerPolicies(); + + // + } +} diff --git a/app/Providers/BroadcastServiceProvider.php b/app/Providers/BroadcastServiceProvider.php new file mode 100644 index 0000000..395c518 --- /dev/null +++ b/app/Providers/BroadcastServiceProvider.php @@ -0,0 +1,21 @@ + [ + SendEmailVerificationNotification::class, + ], + ]; + + /** + * Register any events for your application. + * + * @return void + */ + public function boot() + { + // + } +} diff --git a/app/Providers/HelperServiceProvider.php b/app/Providers/HelperServiceProvider.php new file mode 100644 index 0000000..37f294b --- /dev/null +++ b/app/Providers/HelperServiceProvider.php @@ -0,0 +1,30 @@ +configureRateLimiting(); + + $this->routes(function () { + Route::prefix('api') + ->middleware('api') + ->namespace($this->namespace) + ->group(base_path('routes/api.php')); + + Route::middleware('web') + ->namespace($this->namespace) + ->group(base_path('routes/web.php')); + }); + + PaginateRoute::registerMacros(); + + parent::boot(); + } + + /** + * Configure the rate limiters for the application. + * + * @return void + */ + protected function configureRateLimiting() + { + RateLimiter::for('api', function (Request $request) { + return Limit::perMinute(60)->by(optional($request->user())->id ?: $request->ip()); + }); + } +} diff --git a/app/Rules/GameReleaseDate.php b/app/Rules/GameReleaseDate.php new file mode 100644 index 0000000..c980cd1 --- /dev/null +++ b/app/Rules/GameReleaseDate.php @@ -0,0 +1,32 @@ +input('current_email'))->first(); + + return Hash::check($value, $user->password); + } + + /** + * Get the validation error message. + * + * @return string + */ + public function message() + { + return 'The :attribute is not match with old password.'; + } +} diff --git a/app/View/Components/AuthLayout.php b/app/View/Components/AuthLayout.php new file mode 100644 index 0000000..02f1111 --- /dev/null +++ b/app/View/Components/AuthLayout.php @@ -0,0 +1,18 @@ + 'Sign-in', 'wrapperClass' => 'w-lg-500px']); + } +} diff --git a/app/View/Components/BaseLayout.php b/app/View/Components/BaseLayout.php new file mode 100644 index 0000000..4ad9bcb --- /dev/null +++ b/app/View/Components/BaseLayout.php @@ -0,0 +1,20 @@ +getOption('layout', 'base') === 'docs') { + return view('layout.docs.master'); + } + + return theme()->getView('layout.master'); + } +} diff --git a/app/helpers.php b/app/helpers.php new file mode 100644 index 0000000..80e0829 --- /dev/null +++ b/app/helpers.php @@ -0,0 +1,205 @@ +getMediaUrlPath() . $path; + } + + $file_path = public_path($path); + + if (!file_exists($file_path)) { + return ''; + } + + $svg_content = file_get_contents($file_path); + + if (empty($svg_content)) { + return ''; + } + + $dom = new DOMDocument(); + $dom->loadXML($svg_content); + + // remove unwanted comments + $xpath = new DOMXPath($dom); + foreach ($xpath->query('//comment()') as $comment) { + $comment->parentNode->removeChild($comment); + } + + // add class to svg + if (!empty($svgClass)) { + foreach ($dom->getElementsByTagName('svg') as $element) { + $element->setAttribute('class', $svgClass); + } + } + + // remove unwanted tags + $title = $dom->getElementsByTagName('title'); + if ($title['length']) { + $dom->documentElement->removeChild($title[0]); + } + $desc = $dom->getElementsByTagName('desc'); + if ($desc['length']) { + $dom->documentElement->removeChild($desc[0]); + } + $defs = $dom->getElementsByTagName('defs'); + if ($defs['length']) { + $dom->documentElement->removeChild($defs[0]); + } + + // remove unwanted id attribute in g tag + $g = $dom->getElementsByTagName('g'); + foreach ($g as $el) { + $el->removeAttribute('id'); + } + $mask = $dom->getElementsByTagName('mask'); + foreach ($mask as $el) { + $el->removeAttribute('id'); + } + $rect = $dom->getElementsByTagName('rect'); + foreach ($rect as $el) { + $el->removeAttribute('id'); + } + $xpath = $dom->getElementsByTagName('path'); + foreach ($xpath as $el) { + $el->removeAttribute('id'); + } + $circle = $dom->getElementsByTagName('circle'); + foreach ($circle as $el) { + $el->removeAttribute('id'); + } + $use = $dom->getElementsByTagName('use'); + foreach ($use as $el) { + $el->removeAttribute('id'); + } + $polygon = $dom->getElementsByTagName('polygon'); + foreach ($polygon as $el) { + $el->removeAttribute('id'); + } + $ellipse = $dom->getElementsByTagName('ellipse'); + foreach ($ellipse as $el) { + $el->removeAttribute('id'); + } + + $string = $dom->saveXML($dom->documentElement); + + // remove empty lines + $string = preg_replace("/(^[\r\n]*|[\r\n]+)[\s\t]*[\r\n]+/", "\n", $string); + + $cls = array('svg-icon'); + + if (!empty($class)) { + $cls = array_merge($cls, explode(' ', $class)); + } + + $asd = explode('/media/', $path); + if (isset($asd[1])) { + $path = 'assets/media/' . $asd[1]; + } + + $output = "\n"; + $output .= '' . $string . ''; + $output .= "\n"; + + return $output; + } +} + +if (!function_exists('theme')) { + /** + * Get the instance of Theme class core + * + * @return \App\Core\Adapters\Theme|\Illuminate\Contracts\Foundation\Application|mixed + */ + function theme() + { + return app(\App\Core\Adapters\Theme::class); + } +} + +if (!function_exists('util')) { + /** + * Get the instance of Util class core + * + * @return \App\Core\Adapters\Util|\Illuminate\Contracts\Foundation\Application|mixed + */ + function util() + { + return app(\App\Core\Adapters\Util::class); + } +} + +if (!function_exists('bootstrap')) { + /** + * Get the instance of Util class core + * + * @return \App\Core\Adapters\Util|\Illuminate\Contracts\Foundation\Application|mixed + * @throws Throwable + */ + function bootstrap() + { + $demo = ucwords(theme()->getDemo()); + $bootstrap = "\App\Core\Bootstraps\Bootstrap$demo"; + + if (!class_exists($bootstrap)) { + abort(404, 'Demo has not been set or ' . $bootstrap . ' file is not found.'); + } + + return app($bootstrap); + } +} + +if (!function_exists('assetCustom')) { + /** + * Get the asset path of RTL if this is an RTL request + * + * @param $path + * @param null $secure + * + * @return string + */ + function assetCustom($path) + { + // Include rtl css file + if (isRTL()) { + return asset(theme()->getDemo() . '/' . dirname($path) . '/' . basename($path, '.css') . '.rtl.css'); + } + + // Include dark style css file + if (theme()->isDarkModeEnabled() && theme()->getCurrentMode() !== 'light') { + $darkPath = str_replace('.bundle', '.' . theme()->getCurrentMode() . '.bundle', $path); + if (file_exists(public_path(theme()->getDemo() . '/' . $darkPath))) { + return asset(theme()->getDemo() . '/' . $darkPath); + } + } + + // Include default css file + return asset(theme()->getDemo() . '/' . $path); + } +} + +if (!function_exists('isRTL')) { + /** + * Check if the request has RTL param + * + * @return bool + */ + function isRTL() + { + return (bool) request()->input('rtl'); + } +} + +if (!function_exists('preloadCss')) { + /** + * Preload CSS file + * + * @return bool + */ + function preloadCss($url) + { + return ''; + } +} diff --git a/artisan b/artisan new file mode 100644 index 0000000..5c23e2e --- /dev/null +++ b/artisan @@ -0,0 +1,53 @@ +#!/usr/bin/env php +make(Illuminate\Contracts\Console\Kernel::class); + +$status = $kernel->handle( + $input = new Symfony\Component\Console\Input\ArgvInput, + new Symfony\Component\Console\Output\ConsoleOutput +); + +/* +|-------------------------------------------------------------------------- +| Shutdown The Application +|-------------------------------------------------------------------------- +| +| Once Artisan has finished running, we will fire off the shutdown events +| so that any final work may be done by the application before we shut +| down the process. This is the last thing to happen to the request. +| +*/ + +$kernel->terminate($input, $status); + +exit($status); diff --git a/bootstrap/app.php b/bootstrap/app.php new file mode 100644 index 0000000..037e17d --- /dev/null +++ b/bootstrap/app.php @@ -0,0 +1,55 @@ +singleton( + Illuminate\Contracts\Http\Kernel::class, + App\Http\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Console\Kernel::class, + App\Console\Kernel::class +); + +$app->singleton( + Illuminate\Contracts\Debug\ExceptionHandler::class, + App\Exceptions\Handler::class +); + +/* +|-------------------------------------------------------------------------- +| Return The Application +|-------------------------------------------------------------------------- +| +| This script returns the application instance. The instance is given to +| the calling script so we can separate the building of the instances +| from the actual running of the application and sending responses. +| +*/ + +return $app; diff --git a/bootstrap/cache/.gitignore b/bootstrap/cache/.gitignore new file mode 100644 index 0000000..d6b7ef3 --- /dev/null +++ b/bootstrap/cache/.gitignore @@ -0,0 +1,2 @@ +* +!.gitignore diff --git a/composer.json b/composer.json new file mode 100644 index 0000000..9a39b33 --- /dev/null +++ b/composer.json @@ -0,0 +1,90 @@ +{ + "name": "keenthemes/metronic-laravel", + "type": "project", + "description": "The Metronic in the Laravel Framework.", + "keywords": [ + "framework", + "laravel" + ], + "license": "MIT", + "require": { + "alfredo-ramos/parsedown-extra-laravel": "^4.0", + "anlutro/l4-settings": "^1.0", + "fruitcake/laravel-cors": "^3.0", + "guzzlehttp/guzzle": "^7.0.1", + "jackiedo/log-reader": "^2.2", + "joypixels/emoji-toolkit": "^7.0", + "laravel/framework": "^9.0", + "laravel/socialite": "^5.2", + "laravel/tinker": "^2.5", + "league/flysystem-aws-s3-v3": "^3.0", + "maatwebsite/excel": "^3.1", + "michaloravec/laravel-paginateroute": "^1.0", + "sentry/sentry-laravel": "^3.0", + "spatie/laravel-activitylog": "^4.0", + "squizlabs/php_codesniffer": "*", + "yajra/laravel-datatables-buttons": "^4.10", + "yajra/laravel-datatables-oracle": "~9.0" + }, + "require-dev": { + "barryvdh/laravel-debugbar": "^3.6", + "barryvdh/laravel-ide-helper": "^2.9", + "fakerphp/faker": "^1.9.1", + "laravel/breeze": "^1.0", + "laravel/sail": "^1.0.1", + "mockery/mockery": "^1.4.2", + "nunomaduro/collision": "^6.0", + "phpunit/phpunit": "^9.3.3", + "roave/security-advisories": "dev-latest", + "spatie/laravel-ignition": "^1.0" + }, + "config": { + "optimize-autoloader": true, + "preferred-install": "dist", + "sort-packages": true, + "allow-plugins": { + "composer/package-versions-deprecated": true + } + }, + "extra": { + "laravel": { + "dont-discover": [] + } + }, + "autoload": { + "files": [ + "app/helpers.php" + ], + "psr-4": { + "App\\": "app/", + "Database\\Factories\\": "database/factories/", + "Database\\Seeders\\": "database/seeders/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\": "tests/" + } + }, + "minimum-stability": "dev", + "prefer-stable": true, + "scripts": { + "post-autoload-dump": [ + "Illuminate\\Foundation\\ComposerScripts::postAutoloadDump", + "@php artisan package:discover --ansi" + ], + "post-root-package-install": [ + "@php -r \"file_exists('.env') || copy('.env.example', '.env');\"" + ], + "post-create-project-cmd": [ + "@php artisan key:generate --ansi" + ], + "post-update-cmd": [ + "Illuminate\\Foundation\\ComposerScripts::postUpdate", + "@php artisan ide-helper:generate", + "@php artisan ide-helper:meta" + ] + }, + "repositories": [ + ] +} diff --git a/config/activitylog.php b/config/activitylog.php new file mode 100644 index 0000000..a6558ec --- /dev/null +++ b/config/activitylog.php @@ -0,0 +1,52 @@ + env('ACTIVITY_LOGGER_ENABLED', true), + + /* + * When the clean-command is executed, all recording activities older than + * the number of days specified here will be deleted. + */ + 'delete_records_older_than_days' => 365, + + /* + * If no log name is passed to the activity() helper + * we use this default log name. + */ + 'default_log_name' => 'default', + + /* + * You can specify an auth driver here that gets user models. + * If this is null we'll use the default Laravel auth driver. + */ + 'default_auth_driver' => null, + + /* + * If set to true, the subject returns soft deleted models. + */ + 'subject_returns_soft_deleted_models' => false, + + /* + * This model will be used to log activity. + * It should be implements the Spatie\Activitylog\Contracts\Activity interface + * and extend Illuminate\Database\Eloquent\Model. + */ + 'activity_model' => \Spatie\Activitylog\Models\Activity::class, + + /* + * This is the name of the table that will be created by the migration and + * used by the Activity model shipped with this package. + */ + 'table_name' => 'activity_log', + + /* + * This is the database connection that will be used by the migration and + * the Activity model shipped with this package. In case it's not set + * Laravel database.default will be used instead. + */ + 'database_connection' => env('ACTIVITY_LOGGER_DB_CONNECTION'), +]; diff --git a/config/app.php b/config/app.php new file mode 100644 index 0000000..6a21b27 --- /dev/null +++ b/config/app.php @@ -0,0 +1,234 @@ + env('APP_NAME', 'Laravel'), + + /* + |-------------------------------------------------------------------------- + | Application Environment + |-------------------------------------------------------------------------- + | + | This value determines the "environment" your application is currently + | running in. This may determine how you prefer to configure various + | services the application utilizes. Set this in your ".env" file. + | + */ + + 'env' => env('APP_ENV', 'production'), + + /* + |-------------------------------------------------------------------------- + | Application Debug Mode + |-------------------------------------------------------------------------- + | + | When your application is in debug mode, detailed error messages with + | stack traces will be shown on every error that occurs within your + | application. If disabled, a simple generic error page is shown. + | + */ + + 'debug' => (bool) env('APP_DEBUG', false), + + /* + |-------------------------------------------------------------------------- + | Application URL + |-------------------------------------------------------------------------- + | + | This URL is used by the console to properly generate URLs when using + | the Artisan command line tool. You should set this to the root of + | your application so that it is used when running Artisan tasks. + | + */ + + 'url' => env('APP_URL', 'http://localhost'), + + 'asset_url' => env('ASSET_URL', null), + + /* + |-------------------------------------------------------------------------- + | Application Timezone + |-------------------------------------------------------------------------- + | + | Here you may specify the default timezone for your application, which + | will be used by the PHP date and date-time functions. We have gone + | ahead and set this to a sensible default for you out of the box. + | + */ + + 'timezone' => env('APP_TIMEZONE', 'UTC'), + + /* + |-------------------------------------------------------------------------- + | Application Locale Configuration + |-------------------------------------------------------------------------- + | + | The application locale determines the default locale that will be used + | by the translation service provider. You are free to set this value + | to any of the locales which will be supported by the application. + | + */ + + 'locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Application Fallback Locale + |-------------------------------------------------------------------------- + | + | The fallback locale determines the locale to use when the current one + | is not available. You may change the value to correspond to any of + | the language folders that are provided through your application. + | + */ + + 'fallback_locale' => 'en', + + /* + |-------------------------------------------------------------------------- + | Faker Locale + |-------------------------------------------------------------------------- + | + | This locale will be used by the Faker PHP library when generating fake + | data for your database seeds. For example, this will be used to get + | localized telephone numbers, street address information and more. + | + */ + + 'faker_locale' => 'en_US', + + /* + |-------------------------------------------------------------------------- + | Encryption Key + |-------------------------------------------------------------------------- + | + | This key is used by the Illuminate encrypter service and should be set + | to a random, 32 character string, otherwise these encrypted strings + | will not be safe. Please do this before deploying an application! + | + */ + + 'key' => env('APP_KEY'), + + 'cipher' => 'AES-256-CBC', + + /* + |-------------------------------------------------------------------------- + | Autoloaded Service Providers + |-------------------------------------------------------------------------- + | + | The service providers listed here will be automatically loaded on the + | request to your application. Feel free to add your own services to + | this array to grant expanded functionality to your applications. + | + */ + + 'providers' => [ + + /* + * Laravel Framework Service Providers... + */ + Illuminate\Auth\AuthServiceProvider::class, + Illuminate\Broadcasting\BroadcastServiceProvider::class, + Illuminate\Bus\BusServiceProvider::class, + Illuminate\Cache\CacheServiceProvider::class, + Illuminate\Foundation\Providers\ConsoleSupportServiceProvider::class, + Illuminate\Cookie\CookieServiceProvider::class, + Illuminate\Database\DatabaseServiceProvider::class, + Illuminate\Encryption\EncryptionServiceProvider::class, + Illuminate\Filesystem\FilesystemServiceProvider::class, + Illuminate\Foundation\Providers\FoundationServiceProvider::class, + Illuminate\Hashing\HashServiceProvider::class, + Illuminate\Mail\MailServiceProvider::class, + Illuminate\Notifications\NotificationServiceProvider::class, + Illuminate\Pagination\PaginationServiceProvider::class, + Illuminate\Pipeline\PipelineServiceProvider::class, + Illuminate\Queue\QueueServiceProvider::class, + Illuminate\Redis\RedisServiceProvider::class, + Illuminate\Auth\Passwords\PasswordResetServiceProvider::class, + Illuminate\Session\SessionServiceProvider::class, + Illuminate\Translation\TranslationServiceProvider::class, + Illuminate\Validation\ValidationServiceProvider::class, + Illuminate\View\ViewServiceProvider::class, + + /* + * Package Service Providers... + */ + Barryvdh\LaravelIdeHelper\IdeHelperServiceProvider::class, + + /* + * Application Service Providers... + */ + App\Providers\AppServiceProvider::class, + App\Providers\AuthServiceProvider::class, + // App\Providers\BroadcastServiceProvider::class, + App\Providers\EventServiceProvider::class, + App\Providers\HelperServiceProvider::class, + App\Providers\RouteServiceProvider::class, + + ], + + /* + |-------------------------------------------------------------------------- + | Class Aliases + |-------------------------------------------------------------------------- + | + | This array of class aliases will be registered when this application + | is started. However, feel free to register as many as you wish as + | the aliases are "lazy" loaded so they don't hinder performance. + | + */ + + 'aliases' => [ + + 'App' => Illuminate\Support\Facades\App::class, + 'Arr' => Illuminate\Support\Arr::class, + 'Artisan' => Illuminate\Support\Facades\Artisan::class, + 'Auth' => Illuminate\Support\Facades\Auth::class, + 'Blade' => Illuminate\Support\Facades\Blade::class, + 'Broadcast' => Illuminate\Support\Facades\Broadcast::class, + 'Bus' => Illuminate\Support\Facades\Bus::class, + 'Cache' => Illuminate\Support\Facades\Cache::class, + 'Config' => Illuminate\Support\Facades\Config::class, + 'Cookie' => Illuminate\Support\Facades\Cookie::class, + 'Crypt' => Illuminate\Support\Facades\Crypt::class, + 'DB' => Illuminate\Support\Facades\DB::class, + 'Eloquent' => Illuminate\Database\Eloquent\Model::class, + 'Event' => Illuminate\Support\Facades\Event::class, + 'File' => Illuminate\Support\Facades\File::class, + 'Gate' => Illuminate\Support\Facades\Gate::class, + 'Hash' => Illuminate\Support\Facades\Hash::class, + 'Http' => Illuminate\Support\Facades\Http::class, + 'Lang' => Illuminate\Support\Facades\Lang::class, + 'Log' => Illuminate\Support\Facades\Log::class, + 'Mail' => Illuminate\Support\Facades\Mail::class, + 'Notification' => Illuminate\Support\Facades\Notification::class, + 'Password' => Illuminate\Support\Facades\Password::class, + 'Queue' => Illuminate\Support\Facades\Queue::class, + 'Redirect' => Illuminate\Support\Facades\Redirect::class, + // 'Redis' => Illuminate\Support\Facades\Redis::class, + 'Request' => Illuminate\Support\Facades\Request::class, + 'Response' => Illuminate\Support\Facades\Response::class, + 'Route' => Illuminate\Support\Facades\Route::class, + 'Schema' => Illuminate\Support\Facades\Schema::class, + 'Session' => Illuminate\Support\Facades\Session::class, + 'Storage' => Illuminate\Support\Facades\Storage::class, + 'Str' => Illuminate\Support\Str::class, + 'URL' => Illuminate\Support\Facades\URL::class, + 'Validator' => Illuminate\Support\Facades\Validator::class, + 'View' => Illuminate\Support\Facades\View::class, + + ], + +]; diff --git a/config/auth.php b/config/auth.php new file mode 100644 index 0000000..d01bfc3 --- /dev/null +++ b/config/auth.php @@ -0,0 +1,117 @@ + [ + 'guard' => 'web', + 'passwords' => 'users', + ], + + /* + |-------------------------------------------------------------------------- + | Authentication Guards + |-------------------------------------------------------------------------- + | + | Next, you may define every authentication guard for your application. + | Of course, a great default configuration has been defined for you + | here which uses session storage and the Eloquent user provider. + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | Supported: "session", "token" + | + */ + + 'guards' => [ + 'web' => [ + 'driver' => 'session', + 'provider' => 'users', + ], + + 'api' => [ + 'driver' => 'token', + 'provider' => 'users', + 'hash' => true, + ], + ], + + /* + |-------------------------------------------------------------------------- + | User Providers + |-------------------------------------------------------------------------- + | + | All authentication drivers have a user provider. This defines how the + | users are actually retrieved out of your database or other storage + | mechanisms used by this application to persist your user's data. + | + | If you have multiple user tables or models you may configure multiple + | sources which represent each model / table. These sources may then + | be assigned to any extra authentication guards you have defined. + | + | Supported: "database", "eloquent" + | + */ + + 'providers' => [ + 'users' => [ + 'driver' => 'eloquent', + 'model' => App\Models\User::class, + ], + + // 'users' => [ + // 'driver' => 'database', + // 'table' => 'users', + // ], + ], + + /* + |-------------------------------------------------------------------------- + | Resetting Passwords + |-------------------------------------------------------------------------- + | + | You may specify multiple password reset configurations if you have more + | than one user table or model in the application and you want to have + | separate password reset settings based on the specific user types. + | + | The expire time is the number of minutes that the reset token should be + | considered valid. This security feature keeps tokens short-lived so + | they have less time to be guessed. You may change this as needed. + | + */ + + 'passwords' => [ + 'users' => [ + 'provider' => 'users', + 'table' => 'password_resets', + 'expire' => 60, + 'throttle' => 60, + ], + ], + + /* + |-------------------------------------------------------------------------- + | Password Confirmation Timeout + |-------------------------------------------------------------------------- + | + | Here you may define the amount of seconds before a password confirmation + | times out and the user is prompted to re-enter their password via the + | confirmation screen. By default, the timeout lasts for three hours. + | + */ + + 'password_timeout' => 10800, + +]; diff --git a/config/broadcasting.php b/config/broadcasting.php new file mode 100644 index 0000000..ef20859 --- /dev/null +++ b/config/broadcasting.php @@ -0,0 +1,64 @@ + env('BROADCAST_DRIVER', 'null'), + + /* + |-------------------------------------------------------------------------- + | Broadcast Connections + |-------------------------------------------------------------------------- + | + | Here you may define all of the broadcast connections that will be used + | to broadcast events to other systems or over websockets. Samples of + | each available type of connection are provided inside this array. + | + */ + + 'connections' => [ + + 'pusher' => [ + 'driver' => 'pusher', + 'key' => env('PUSHER_APP_KEY'), + 'secret' => env('PUSHER_APP_SECRET'), + 'app_id' => env('PUSHER_APP_ID'), + 'options' => [ + 'cluster' => env('PUSHER_APP_CLUSTER'), + 'useTLS' => true, + ], + ], + + 'ably' => [ + 'driver' => 'ably', + 'key' => env('ABLY_KEY'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + ], + + 'log' => [ + 'driver' => 'log', + ], + + 'null' => [ + 'driver' => 'null', + ], + + ], + +]; diff --git a/config/cache.php b/config/cache.php new file mode 100644 index 0000000..2389425 --- /dev/null +++ b/config/cache.php @@ -0,0 +1,106 @@ + 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. + | + | Supported drivers: "apc", "array", "database", "file", + | "memcached", "redis", "dynamodb", "null" + | + */ + + 'stores' => [ + + 'apc' => [ + 'driver' => 'apc', + ], + + 'array' => [ + 'driver' => 'array', + 'serialize' => false, + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'cache', + 'connection' => null, + 'lock_connection' => null, + ], + + 'file' => [ + 'driver' => 'file', + 'path' => storage_path('framework/cache/data'), + ], + + 'memcached' => [ + 'driver' => 'memcached', + 'persistent_id' => env('MEMCACHED_PERSISTENT_ID'), + 'sasl' => [ + env('MEMCACHED_USERNAME'), + env('MEMCACHED_PASSWORD'), + ], + 'options' => [ + // Memcached::OPT_CONNECT_TIMEOUT => 2000, + ], + 'servers' => [ + [ + 'host' => env('MEMCACHED_HOST', '127.0.0.1'), + 'port' => env('MEMCACHED_PORT', 11211), + 'weight' => 100, + ], + ], + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'cache', + 'lock_connection' => 'default', + ], + + 'dynamodb' => [ + 'driver' => 'dynamodb', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + 'table' => env('DYNAMODB_CACHE_TABLE', 'cache'), + 'endpoint' => env('DYNAMODB_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Cache Key Prefix + |-------------------------------------------------------------------------- + | + | When utilizing a RAM based store such as APC or Memcached, there might + | be other applications utilizing the same cache. So, we'll specify a + | value to get prefixed to all our keys so we can avoid collisions. + | + */ + + 'prefix' => env('CACHE_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_cache'), + +]; diff --git a/config/cors.php b/config/cors.php new file mode 100644 index 0000000..8a39e6d --- /dev/null +++ b/config/cors.php @@ -0,0 +1,34 @@ + ['api/*', 'sanctum/csrf-cookie'], + + 'allowed_methods' => ['*'], + + 'allowed_origins' => ['*'], + + 'allowed_origins_patterns' => [], + + 'allowed_headers' => ['*'], + + 'exposed_headers' => [], + + 'max_age' => 0, + + 'supports_credentials' => false, + +]; diff --git a/config/database.php b/config/database.php new file mode 100644 index 0000000..937779b --- /dev/null +++ b/config/database.php @@ -0,0 +1,147 @@ + env('DB_CONNECTION', 'mysql'), + + /* + |-------------------------------------------------------------------------- + | Database Connections + |-------------------------------------------------------------------------- + | + | Here are each of the database connections setup for your application. + | Of course, examples of configuring each database platform that is + | supported by Laravel is shown below to make development simple. + | + | + | All database work in Laravel is done through the PHP PDO facilities + | so make sure you have the driver for your particular database of + | choice installed on your machine before you begin development. + | + */ + + 'connections' => [ + + 'sqlite' => [ + 'driver' => 'sqlite', + 'url' => env('DATABASE_URL'), + 'database' => env('DB_DATABASE', database_path('database.sqlite')), + 'prefix' => '', + 'foreign_key_constraints' => env('DB_FOREIGN_KEYS', true), + ], + + 'mysql' => [ + 'driver' => 'mysql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '3306'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'unix_socket' => env('DB_SOCKET', ''), + 'charset' => 'utf8mb4', + 'collation' => 'utf8mb4_unicode_ci', + 'prefix' => '', + 'prefix_indexes' => true, + 'strict' => true, + 'engine' => 'InnoDB ROW_FORMAT=DYNAMIC', + 'options' => extension_loaded('pdo_mysql') ? array_filter([ + PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), + ]) : [], + ], + + 'pgsql' => [ + 'driver' => 'pgsql', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', '127.0.0.1'), + 'port' => env('DB_PORT', '5432'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + 'schema' => 'public', + 'sslmode' => 'prefer', + ], + + 'sqlsrv' => [ + 'driver' => 'sqlsrv', + 'url' => env('DATABASE_URL'), + 'host' => env('DB_HOST', 'localhost'), + 'port' => env('DB_PORT', '1433'), + 'database' => env('DB_DATABASE', 'forge'), + 'username' => env('DB_USERNAME', 'forge'), + 'password' => env('DB_PASSWORD', ''), + 'charset' => 'utf8', + 'prefix' => '', + 'prefix_indexes' => true, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Migration Repository Table + |-------------------------------------------------------------------------- + | + | This table keeps track of all the migrations that have already run for + | your application. Using this information, we can determine which of + | the migrations on disk haven't actually been run in the database. + | + */ + + 'migrations' => 'migrations', + + /* + |-------------------------------------------------------------------------- + | Redis Databases + |-------------------------------------------------------------------------- + | + | Redis is an open source, fast, and advanced key-value store that also + | provides a richer body of commands than a typical key-value system + | such as APC or Memcached. Laravel makes it easy to dig right in. + | + */ + + 'redis' => [ + + 'client' => env('REDIS_CLIENT', 'phpredis'), + + 'options' => [ + 'cluster' => env('REDIS_CLUSTER', 'redis'), + 'prefix' => env('REDIS_PREFIX', Str::slug(env('APP_NAME', 'laravel'), '_') . '_database_'), + ], + + 'default' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_DB', '0'), + ], + + 'cache' => [ + 'url' => env('REDIS_URL'), + 'host' => env('REDIS_HOST', '127.0.0.1'), + 'password' => env('REDIS_PASSWORD', null), + 'port' => env('REDIS_PORT', '6379'), + 'database' => env('REDIS_CACHE_DB', '1'), + ], + + ], + +]; diff --git a/config/datatables-buttons.php b/config/datatables-buttons.php new file mode 100644 index 0000000..54bd787 --- /dev/null +++ b/config/datatables-buttons.php @@ -0,0 +1,90 @@ + [ + /* + * Base namespace/directory to create the new file. + * This is appended on default Laravel namespace. + * Usage: php artisan datatables:make User + * Output: App\DataTables\UserDataTable + * With Model: App\User (default model) + * Export filename: users_timestamp + */ + 'base' => 'DataTables', + + /* + * Base namespace/directory where your model's are located. + * This is appended on default Laravel namespace. + * Usage: php artisan datatables:make Post --model + * Output: App\DataTables\PostDataTable + * With Model: App\Post + * Export filename: posts_timestamp + */ + 'model' => '', + ], + + /* + * Set Custom stub folder + */ + //'stub' => '/resources/custom_stub', + + /* + * PDF generator to be used when converting the table to pdf. + * Available generators: excel, snappy + * Snappy package: barryvdh/laravel-snappy + * Excel package: maatwebsite/excel + */ + 'pdf_generator' => 'snappy', + + /* + * Snappy PDF options. + */ + 'snappy' => [ + 'options' => [ + 'no-outline' => true, + 'margin-left' => '0', + 'margin-right' => '0', + 'margin-top' => '10mm', + 'margin-bottom' => '10mm', + ], + 'orientation' => 'landscape', + ], + + /* + * Default html builder parameters. + */ + 'parameters' => [ + 'dom' => 'Bfrtip', + 'order' => [[0, 'desc']], + 'buttons' => [ + 'create', + 'export', + 'print', + 'reset', + 'reload', + ], + ], + + /* + * Generator command default options value. + */ + 'generator' => [ + /* + * Default columns to generate when not set. + */ + 'columns' => 'id,add your columns,created_at,updated_at', + + /* + * Default buttons to generate when not set. + */ + 'buttons' => 'create,export,print,reset,reload', + + /* + * Default DOM to generate when not set. + */ + 'dom' => 'Bfrtip', + ], +]; diff --git a/config/datatables-html.php b/config/datatables-html.php new file mode 100644 index 0000000..516d313 --- /dev/null +++ b/config/datatables-html.php @@ -0,0 +1,33 @@ + 'LaravelDataTables', + + /* + * Default table attributes when generating the table. + */ + 'table' => [ + 'class' => 'table', + 'id' => 'dataTableBuilder', + ], + + /* + * Default condition to determine if a parameter is a callback or not. + * Callbacks needs to start by those terms or they will be casted to string. + */ + 'callback' => ['$', '$.', 'function'], + + /* + * Html builder script template. + */ + 'script' => 'datatables::script', + + /* + * Html builder script template for DataTables Editor integration. + */ + 'editor' => 'datatables::editor', +]; diff --git a/config/datatables.php b/config/datatables.php new file mode 100644 index 0000000..ed2e36f --- /dev/null +++ b/config/datatables.php @@ -0,0 +1,122 @@ + [ + /* + * Smart search will enclose search keyword with wildcard string "%keyword%". + * SQL: column LIKE "%keyword%" + */ + 'smart' => true, + + /* + * Multi-term search will explode search keyword using spaces resulting into multiple term search. + */ + 'multi_term' => true, + + /* + * Case insensitive will search the keyword in lower case format. + * SQL: LOWER(column) LIKE LOWER(keyword) + */ + 'case_insensitive' => true, + + /* + * Wild card will add "%" in between every characters of the keyword. + * SQL: column LIKE "%k%e%y%w%o%r%d%" + */ + 'use_wildcards' => false, + + /* + * Perform a search which starts with the given keyword. + * SQL: column LIKE "keyword%" + */ + 'starts_with' => false, + ], + + /* + * DataTables internal index id response column name. + */ + 'index_column' => 'DT_RowIndex', + + /* + * List of available builders for DataTables. + * This is where you can register your custom dataTables builder. + */ + 'engines' => [ + 'eloquent' => Yajra\DataTables\EloquentDataTable::class, + 'query' => Yajra\DataTables\QueryDataTable::class, + 'collection' => Yajra\DataTables\CollectionDataTable::class, + 'resource' => Yajra\DataTables\ApiResourceDataTable::class, + ], + + /* + * DataTables accepted builder to engine mapping. + * This is where you can override which engine a builder should use + * Note, only change this if you know what you are doing! + */ + 'builders' => [ + //Illuminate\Database\Eloquent\Relations\Relation::class => 'eloquent', + //Illuminate\Database\Eloquent\Builder::class => 'eloquent', + //Illuminate\Database\Query\Builder::class => 'query', + //Illuminate\Support\Collection::class => 'collection', + ], + + /* + * Nulls last sql pattern for PostgreSQL & Oracle. + * For MySQL, use 'CASE WHEN :column IS NULL THEN 1 ELSE 0 END, :column :direction' + */ + 'nulls_last_sql' => ':column :direction NULLS LAST', + + /* + * User friendly message to be displayed on user if error occurs. + * Possible values: + * null - The exception message will be used on error response. + * 'throw' - Throws a \Yajra\DataTables\Exceptions\Exception. Use your custom error handler if needed. + * 'custom message' - Any friendly message to be displayed to the user. You can also use translation key. + */ + 'error' => env('DATATABLES_ERROR', null), + + /* + * Default columns definition of dataTable utility functions. + */ + 'columns' => [ + /* + * List of columns hidden/removed on json response. + */ + 'excess' => ['rn', 'row_num'], + + /* + * List of columns to be escaped. If set to *, all columns are escape. + * Note: You can set the value to empty array to disable XSS protection. + */ + 'escape' => '*', + + /* + * List of columns that are allowed to display html content. + * Note: Adding columns to list will make us available to XSS attacks. + */ + 'raw' => ['action'], + + /* + * List of columns are are forbidden from being searched/sorted. + */ + 'blacklist' => ['password', 'remember_token'], + + /* + * List of columns that are only allowed fo search/sort. + * If set to *, all columns are allowed. + */ + 'whitelist' => '*', + ], + + /* + * JsonResponse header and options config. + */ + 'json' => [ + 'header' => [], + 'options' => 0, + ], + +]; diff --git a/config/debugbar.php b/config/debugbar.php new file mode 100644 index 0000000..f0c97bf --- /dev/null +++ b/config/debugbar.php @@ -0,0 +1,275 @@ + env('DEBUGBAR_ENABLED', null), + 'except' => [ + 'telescope*', + 'horizon*', + ], + + /* + |-------------------------------------------------------------------------- + | Storage settings + |-------------------------------------------------------------------------- + | + | DebugBar stores data for session/ajax requests. + | You can disable this, so the debugbar stores data in headers/session, + | but this can cause problems with large data collectors. + | By default, file storage (in the storage folder) is used. Redis and PDO + | can also be used. For PDO, run the package migrations first. + | + */ + 'storage' => [ + 'enabled' => true, + 'driver' => 'file', // redis, file, pdo, socket, custom + 'path' => storage_path('debugbar'), // For file driver + 'connection' => null, // Leave null for default connection (Redis/PDO) + 'provider' => '', // Instance of StorageInterface for custom driver + 'hostname' => '127.0.0.1', // Hostname to use with the "socket" driver + 'port' => 2304, // Port to use with the "socket" driver + ], + + /* + |-------------------------------------------------------------------------- + | Editor + |-------------------------------------------------------------------------- + | + | Choose your preferred editor to use when clicking file name. + | + | Supported: "phpstorm", "vscode", "vscode-insiders", "vscode-remote", + | "vscode-insiders-remote", "vscodium", "textmate", "emacs", + | "sublime", "atom", "nova", "macvim", "idea", "netbeans", + | "xdebug", "espresso" + | + */ + + 'editor' => env('DEBUGBAR_EDITOR', 'vscode'), + + /* + |-------------------------------------------------------------------------- + | Remote Path Mapping + |-------------------------------------------------------------------------- + | + | If you are using a remote dev server, like Laravel Homestead, Docker, or + | even a remote VPS, it will be necessary to specify your path mapping. + | + | Leaving one, or both of these, empty or null will not trigger the remote + | URL changes and Debugbar will treat your editor links as local files. + | + | "remote_sites_path" is an absolute base path for your sites or projects + | in Homestead, Vagrant, Docker, or another remote development server. + | + | Example value: "/home/vagrant/Code" + | + | "local_sites_path" is an absolute base path for your sites or projects + | on your local computer where your IDE or code editor is running on. + | + | Example values: "/Users//Code", "C:\Users\\Documents\Code" + | + */ + + 'remote_sites_path' => env('DEBUGBAR_REMOTE_SITES_PATH', ''), + 'local_sites_path' => env('DEBUGBAR_LOCAL_SITES_PATH', ''), + + /* + |-------------------------------------------------------------------------- + | Vendors + |-------------------------------------------------------------------------- + | + | Vendor files are included by default, but can be set to false. + | This can also be set to 'js' or 'css', to only include javascript or css vendor files. + | Vendor files are for css: font-awesome (including fonts) and highlight.js (css files) + | and for js: jquery and and highlight.js + | So if you want syntax highlighting, set it to true. + | jQuery is set to not conflict with existing jQuery scripts. + | + */ + + 'include_vendors' => true, + + /* + |-------------------------------------------------------------------------- + | Capture Ajax Requests + |-------------------------------------------------------------------------- + | + | The Debugbar can capture Ajax requests and display them. If you don't want this (ie. because of errors), + | you can use this option to disable sending the data through the headers. + | + | Optionally, you can also send ServerTiming headers on ajax requests for the Chrome DevTools. + | + | Note for your request to be identified as ajax requests they must either send the header + | X-Requested-With with the value XMLHttpRequest (most JS libraries send this), or have application/json as a Accept header. + */ + + 'capture_ajax' => true, + 'add_ajax_timing' => false, + + /* + |-------------------------------------------------------------------------- + | Custom Error Handler for Deprecated warnings + |-------------------------------------------------------------------------- + | + | When enabled, the Debugbar shows deprecated warnings for Symfony components + | in the Messages tab. + | + */ + 'error_handler' => false, + + /* + |-------------------------------------------------------------------------- + | Clockwork integration + |-------------------------------------------------------------------------- + | + | The Debugbar can emulate the Clockwork headers, so you can use the Chrome + | Extension, without the server-side code. It uses Debugbar collectors instead. + | + */ + 'clockwork' => false, + + /* + |-------------------------------------------------------------------------- + | DataCollectors + |-------------------------------------------------------------------------- + | + | Enable/disable DataCollectors + | + */ + + 'collectors' => [ + 'phpinfo' => true, // Php version + 'messages' => true, // Messages + 'time' => true, // Time Datalogger + 'memory' => true, // Memory usage + 'exceptions' => true, // Exception displayer + 'log' => true, // Logs from Monolog (merged in messages if enabled) + 'db' => true, // Show database (PDO) queries and bindings + 'views' => true, // Views with their data + 'route' => true, // Current route information + 'auth' => false, // Display Laravel authentication status + 'gate' => true, // Display Laravel Gate checks + 'session' => true, // Display session data + 'symfony_request' => true, // Only one can be enabled.. + 'mail' => true, // Catch mail messages + 'laravel' => false, // Laravel version and environment + 'events' => false, // All events fired + 'default_request' => false, // Regular or special Symfony request logger + 'logs' => false, // Add the latest log messages + 'files' => false, // Show the included files + 'config' => false, // Display config settings + 'cache' => false, // Display cache events + 'models' => true, // Display models + 'livewire' => true, // Display Livewire (when available) + ], + + /* + |-------------------------------------------------------------------------- + | Extra options + |-------------------------------------------------------------------------- + | + | Configure some DataCollectors + | + */ + + 'options' => [ + 'auth' => [ + 'show_name' => true, // Also show the users name/email in the debugbar + ], + 'db' => [ + 'with_params' => true, // Render SQL with the parameters substituted + 'backtrace' => true, // Use a backtrace to find the origin of the query in your files. + 'backtrace_exclude_paths' => [], // Paths to exclude from backtrace. (in addition to defaults) + 'timeline' => false, // Add the queries to the timeline + 'duration_background' => true, // Show shaded background on each query relative to how long it took to execute. + 'explain' => [ // Show EXPLAIN output on queries + 'enabled' => false, + 'types' => ['SELECT'], // Deprecated setting, is always only SELECT + ], + 'hints' => false, // Show hints for common mistakes + 'show_copy' => false, // Show copy button next to the query + ], + 'mail' => [ + 'full_log' => false, + ], + 'views' => [ + 'timeline' => false, // Add the views to the timeline (Experimental) + 'data' => false, //Note: Can slow down the application, because the data can be quite large.. + ], + 'route' => [ + 'label' => true, // show complete route on bar + ], + 'logs' => [ + 'file' => null, + ], + 'cache' => [ + 'values' => true, // collect cache values + ], + ], + + /* + |-------------------------------------------------------------------------- + | Inject Debugbar in Response + |-------------------------------------------------------------------------- + | + | Usually, the debugbar is added just before , by listening to the + | Response after the App is done. If you disable this, you have to add them + | in your template yourself. See http://phpdebugbar.com/docs/rendering.html + | + */ + + 'inject' => true, + + /* + |-------------------------------------------------------------------------- + | DebugBar route prefix + |-------------------------------------------------------------------------- + | + | Sometimes you want to set route prefix to be used by DebugBar to load + | its resources from. Usually the need comes from misconfigured web server or + | from trying to overcome bugs like this: http://trac.nginx.org/nginx/ticket/97 + | + */ + 'route_prefix' => '_debugbar', + + /* + |-------------------------------------------------------------------------- + | DebugBar route domain + |-------------------------------------------------------------------------- + | + | By default DebugBar route served from the same domain that request served. + | To override default domain, specify it as a non-empty value. + */ + 'route_domain' => null, + + /* + |-------------------------------------------------------------------------- + | DebugBar theme + |-------------------------------------------------------------------------- + | + | Switches between light and dark theme. If set to auto it will respect system preferences + | Possible values: auto, light, dark + */ + 'theme' => env('DEBUGBAR_THEME', 'auto'), + + /* + |-------------------------------------------------------------------------- + | Backtrace stack limit + |-------------------------------------------------------------------------- + | + | By default, the DebugBar limits the number of frames returned by the 'debug_backtrace()' function. + | If you need larger stacktraces, you can increase this number. Setting it to 0 will result in no limit. + */ + 'debug_backtrace_limit' => 50, +]; diff --git a/config/demo1/general.php b/config/demo1/general.php new file mode 100644 index 0000000..654f721 --- /dev/null +++ b/config/demo1/general.php @@ -0,0 +1,127 @@ + array( + 'favicon' => 'media/logos/favicon.ico', + 'fonts' => array( + 'google' => array( + 'Poppins:300,400,500,600,700', + ), + ), + 'css' => array( + 'plugins/global/plugins.bundle.css', + 'plugins/global/plugins-custom.bundle.css', + 'css/style.bundle.css', + ), + 'js' => array( + 'plugins/global/plugins.bundle.js', + 'js/scripts.bundle.js', + 'js/custom/widgets.js', + ), + ), + + // Layout + 'layout' => array( + // Main + 'main' => array( + 'base' => 'default', // Set base layout: default|docs + 'type' => 'default', // Set layout type: default|blank|none + 'dark-mode-enabled' => true, // Enable optional dark mode mode + 'primary-color' => '#009EF7', // Primary color used in email templates + ), + + // Loader + 'loader' => array( + 'display' => true, + 'type' => 'default' // Set default|spinner-message|spinner-logo to hide or show page loader + ), + + // Header + 'header' => array( + 'display' => true, // Display header + 'width' => 'fluid', // Set header width(fixed|fluid) + 'left' => 'menu', // Set left part content(menu|page-title) + 'fixed' => array( + 'desktop' => true, // Set fixed header for desktop + 'tablet-and-mobile' => true // Set fixed header for tablet & mobile + ), + 'menu-icon' => 'font' // Menu icon type(svg|font) + ), + + // Toolbar + 'toolbar' => array( + 'display' => false, // Display toolbar + 'width' => 'fluid', // Set toolbar container width(fluid|fixed) + 'fixed' => array( + 'desktop' => true, // Set fixed header for desktop + 'tablet-and-mobile' => false // Set fixed header for tablet & mobile + ), + 'layout' => 'toolbar-1', // Set toolbar type + 'layouts' => array( + 'toolbar-1' => array( + 'height' => '55px', + 'height-tablet-and-mobile' => '55px', + ), + 'toolbar-2' => array( + 'height' => '75px', + 'height-tablet-and-mobile' => '65px', + ), + 'toolbar-3' => array( + 'height' => '55px', + 'height-tablet-and-mobile' => '55px', + ), + 'toolbar-4' => array( + 'height' => '65px', + 'height-tablet-and-mobile' => '65px', + ), + 'toolbar-5' => array( + 'height' => '75px', + 'height-tablet-and-mobile' => '65px', + ), + ), + ), + + // Page title + 'page-title' => array( + 'display' => true, // Display page title + 'breadcrumb' => true, // Display breadcrumb + 'description' => false, // Display description + 'layout' => 'default', // Set layout(default|select) + 'direction' => 'row', // Flex direction(column|row)) + 'responsive' => true, // Move page title to content on mobile mode + 'responsive-breakpoint' => 'lg', // Responsive breakpoint value(e.g: md, lg, or 300px) + 'responsive-target' => '#kt_toolbar_container' // Responsive target selector + ), + + // Aside + 'aside' => array( + 'display' => true, // Display aside + 'theme' => 'dark', // Set aside theme(dark|light) + 'menu' => 'main', // Set aside menu(main|documentation) + 'fixed' => true, // Enable aside fixed mode + 'minimized' => false, // Set aside minimized by default + 'minimize' => true, // Allow aside minimize toggle + 'hoverable' => true, // Allow aside hovering when minimized + 'menu-icon' => 'font' // Menu icon type(svg|font) + ), + + // Content + 'content' => array( + 'width' => 'fluid', // Set content width(fixed|fluid) + 'layout' => 'default' // Set content layout(default|documentation) + ), + + // Footer + 'footer' => array( + 'width' => 'fluid' // Set fixed|fluid to change width type + ), + + // Scrolltop + 'scrolltop' => array( + 'display' => true // Display scrolltop + ), + ), +); diff --git a/config/demo1/menu.php b/config/demo1/menu.php new file mode 100644 index 0000000..d9ebdc3 --- /dev/null +++ b/config/demo1/menu.php @@ -0,0 +1,5 @@ + array( + // Apply for all documentation pages + '*' => array( + // Layout + 'layout' => array( + // Aside + 'aside' => array( + 'display' => true, // Display aside + 'theme' => 'light', // Set aside theme(dark|light) + 'minimize' => false, // Allow aside minimize toggle + 'menu' => 'documentation' // Set aside menu type(main|documentation) + ), + + 'header' => array( + 'left' => 'page-title', + ), + + 'toolbar' => array( + 'display' => false, + ), + + 'page-title' => array( + 'layout' => 'documentation', + 'description' => false, + 'responsive' => true, + 'responsive-target' => '#kt_header_nav' // Responsive target selector + ), + ), + ), + ), +); diff --git a/config/filesystems.php b/config/filesystems.php new file mode 100644 index 0000000..e77462c --- /dev/null +++ b/config/filesystems.php @@ -0,0 +1,72 @@ + env('FILESYSTEM_DRIVER', 'local'), + + /* + |-------------------------------------------------------------------------- + | Filesystem Disks + |-------------------------------------------------------------------------- + | + | Here you may configure as many filesystem "disks" as you wish, and you + | may even configure multiple disks of the same driver. Defaults have + | been setup for each driver as an example of the required options. + | + | Supported Drivers: "local", "ftp", "sftp", "s3" + | + */ + + 'disks' => [ + + 'local' => [ + 'driver' => 'local', + 'root' => storage_path('app'), + ], + + 'public' => [ + 'driver' => 'local', + 'root' => storage_path('app/public'), + 'url' => env('APP_URL') . '/storage', + 'visibility' => 'public', + ], + + 's3' => [ + 'driver' => 's3', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION'), + 'bucket' => env('AWS_BUCKET'), + 'url' => env('AWS_URL'), + 'endpoint' => env('AWS_ENDPOINT'), + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Symbolic Links + |-------------------------------------------------------------------------- + | + | Here you may configure the symbolic links that will be created when the + | `storage:link` Artisan command is executed. The array keys should be + | the locations of the links and the values should be their targets. + | + */ + + 'links' => [ + public_path('storage') => storage_path('app/public'), + ], + +]; diff --git a/config/global/general.php b/config/global/general.php new file mode 100644 index 0000000..b514e8e --- /dev/null +++ b/config/global/general.php @@ -0,0 +1,66 @@ + array( + 'name' => 'Metronic', + 'description' => 'Metronic - Bootstrap 5 HTML, VueJS, React, Angular & Laravel Admin Dashboard Theme', + 'preview' => 'https://preview.keenthemes.com/metronic8/laravel', + 'home' => 'https://keenthemes.com/metronic', + 'purchase' => 'https://1.envato.market/EA4JP', + 'licenses' => array( + 'terms' => 'https://themeforest.net/licenses/standard', + 'types' => array( + array( + 'title' => 'Regular License', + 'description' => 'For single end product used by you or one client', + 'tooltip' => 'Use, by you or one client in a single end product which end users are not charged for', + 'price' => '39', + ), + array( + 'title' => 'Extended License', + 'description' => 'For single SaaS app with paying users', + 'tooltip' => 'Use, by you or one client, in a single end product which end users can be charged for.', + 'price' => '939', + ), + ), + ), + ), + + // Meta + 'meta' => array( + 'title' => 'MyVideoGameList', + 'description' => 'MyVideoGameList - Track your video games!', + 'keywords' => 'game, videogame, video game, gaming, gamer, organization, hobby, nintendo, xbox, playstation, nintendo switch, gameboy, computer, data, stats', // phpcs:ignore + 'canonical' => 'https://myvideogamelist.com', + ), + + // General + 'general' => array( + 'website' => 'https://myvideogamelist.com', + 'about' => '/about', + 'contact' => '/contact-us', + 'support' => '/support', + 'social-accounts' => array( + array( + 'name' => 'Twitter', + 'url' => 'https://twitter.com/myvideogamelist', + 'logo' => 'svg/social-logos/twitter.svg', + "class" => "h-20px", + ), + array( + 'name' => 'Instagram', + 'url' => 'https://www.instagram.com/myvideogamelist', + 'logo' => 'svg/social-logos/instagram.svg', + "class" => "h-20px", + ), + + array( + 'name' => 'Facebook', + 'url' => 'https://www.facebook.com/myvideogamelist', + 'logo' => 'svg/social-logos/facebook.svg', + "class" => "h-20px", + ), + ), + ), +); diff --git a/config/global/menu.php b/config/global/menu.php new file mode 100644 index 0000000..1fad487 --- /dev/null +++ b/config/global/menu.php @@ -0,0 +1,128 @@ + array( + // Dashboard + array( + 'title' => 'Home', + 'path' => '/', + 'icon' => array( + 'font' => '', + ), + ), + + // Recent Gamer Updates + array( + 'title' => 'Recent Gamer Updates', + 'path' => '/recent-gamer-updates', + 'icon' => array( + 'font' => '', + ), + ), + + // Newly Added Games + array( + 'title' => 'Newly Added Games', + 'path' => '/newly-added-games', + 'icon' => array( + 'font' => '', + ), + ), + + // Game Reviews + array( + 'title' => 'Game Reviews', + 'path' => '/game-reviews', + 'icon' => array( + 'font' => '', + ), + ), + + // Games by Platform + array( + 'classes' => array('content' => 'pt-8 pb-2'), + 'content' => 'Games by Platform', + ), + + // Xbox Series X/S + array( + 'title' => 'Xbox Series X/S', + 'path' => '/platform/Xbox_Series_X_S', + 'bullet' => '', + ), + + // PlayStation 5 + array( + 'title' => 'PlayStation 5', + 'path' => '/platform/PlayStation_5', + 'bullet' => '', + ), + + // Nintendo Switch + array( + 'title' => 'Nintendo Switch', + 'path' => '/platform/Nintendo_Switch', + 'bullet' => '', + ), + + // PC + array( + 'title' => 'PC', + 'path' => '/platform/PC', + 'bullet' => '', + ), + + // Mobile + array( + 'title' => 'Mobile', + 'path' => '/platform/Mobile', + 'bullet' => '', + ), + + // Nintendo 3DS + array( + 'title' => 'Nintendo 3DS', + 'path' => '/platform/Nintendo_3DS', + 'bullet' => '', + ), + + // More... + array( + 'title' => 'More...', + 'path' => '/platforms', + 'bullet' => '', + ), + + // Support + array( + 'classes' => array('content' => 'pt-8 pb-2'), + 'content' => 'Support', + ), + + // Overview + array( + 'title' => 'Overview', + 'path' => '/support', + 'bullet' => '', + ), + + // Knowledgebase + array( + 'title' => 'Knowledgebase', + 'path' => '/support/knowledgebase', + 'bullet' => '', + ), + + // Contact Us + array( + 'title' => 'Contact Us', + 'path' => '/contact-us', + 'bullet' => '', + ), + ), + + // Horizontal menu + 'horizontal' => array( + ), +); diff --git a/config/global/pages.php b/config/global/pages.php new file mode 100644 index 0000000..b44beb0 --- /dev/null +++ b/config/global/pages.php @@ -0,0 +1,119 @@ + array( + 'title' => 'Dashboard', + 'description' => '', + 'view' => 'index', + 'layout' => array( + 'page-title' => array( + 'description' => true, + 'breadcrumb' => false, + ), + ), + 'assets' => array( + 'custom' => array( + 'js' => array(), + ), + ), + ), + + 'login' => array( + 'title' => 'Login', + 'assets' => array( + 'custom' => array( + 'js' => array( + 'js/custom/authentication/sign-in/general.js', + ), + ), + ) + ), + 'register' => array( + 'title' => 'Register', + 'assets' => array( + 'custom' => array( + 'js' => array( + 'js/custom/authentication/sign-up/general.js', + ), + ), + ) + ), + 'forgot-password' => array( + 'title' => 'Forgot Password', + 'assets' => array( + 'custom' => array( + 'js' => array( + 'js/custom/authentication/password-reset/password-reset.js', + ), + ), + ) + ), + + 'log' => array( + 'audit' => array( + 'title' => 'Audit Log', + 'assets' => array( + 'custom' => array( + 'css' => array( + 'plugins/custom/datatables/datatables.bundle.css', + ), + 'js' => array( + 'plugins/custom/datatables/datatables.bundle.js', + ), + ), + ), + ), + 'system' => array( + 'title' => 'System Log', + 'assets' => array( + 'custom' => array( + 'css' => array( + 'plugins/custom/datatables/datatables.bundle.css', + ), + 'js' => array( + 'plugins/custom/datatables/datatables.bundle.js', + ), + ), + ), + ), + ), + + 'account' => array( + 'overview' => array( + 'title' => 'Account Overview', + 'view' => 'account/overview/overview', + 'assets' => array( + 'custom' => array( + 'js' => array( + 'js/custom/widgets.js', + ), + ), + ), + ), + + 'settings' => array( + 'title' => 'Account Settings', + 'assets' => array( + 'custom' => array( + 'js' => array( + 'js/custom/account/settings/profile-details.js', + 'js/custom/account/settings/signin-methods.js', + 'js/custom/modals/two-factor-authentication.js', + ), + ), + ), + ), + ), + + 'users' => array( + 'title' => 'User List', + + '*' => array( + 'title' => 'Show User', + + 'edit' => array( + 'title' => 'Edit User', + ), + ), + ), +); diff --git a/config/hashing.php b/config/hashing.php new file mode 100644 index 0000000..8425770 --- /dev/null +++ b/config/hashing.php @@ -0,0 +1,52 @@ + 'bcrypt', + + /* + |-------------------------------------------------------------------------- + | Bcrypt Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Bcrypt algorithm. This will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'bcrypt' => [ + 'rounds' => env('BCRYPT_ROUNDS', 10), + ], + + /* + |-------------------------------------------------------------------------- + | Argon Options + |-------------------------------------------------------------------------- + | + | Here you may specify the configuration options that should be used when + | passwords are hashed using the Argon algorithm. These will allow you + | to control the amount of time it takes to hash the given password. + | + */ + + 'argon' => [ + 'memory' => 1024, + 'threads' => 2, + 'time' => 2, + ], + +]; diff --git a/config/logging.php b/config/logging.php new file mode 100644 index 0000000..6aa77fe --- /dev/null +++ b/config/logging.php @@ -0,0 +1,104 @@ + env('LOG_CHANNEL', 'stack'), + + /* + |-------------------------------------------------------------------------- + | Log Channels + |-------------------------------------------------------------------------- + | + | Here you may configure the log channels for your application. Out of + | the box, Laravel uses the Monolog PHP logging library. This gives + | you a variety of powerful log handlers / formatters to utilize. + | + | Available Drivers: "single", "daily", "slack", "syslog", + | "errorlog", "monolog", + | "custom", "stack" + | + */ + + 'channels' => [ + 'stack' => [ + 'driver' => 'stack', + 'channels' => ['single'], + 'ignore_exceptions' => false, + ], + + 'single' => [ + 'driver' => 'single', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'daily' => [ + 'driver' => 'daily', + 'path' => storage_path('logs/laravel.log'), + 'level' => env('LOG_LEVEL', 'debug'), + 'days' => 14, + ], + + 'slack' => [ + 'driver' => 'slack', + 'url' => env('LOG_SLACK_WEBHOOK_URL'), + 'username' => 'Laravel Log', + 'emoji' => ':boom:', + 'level' => env('LOG_LEVEL', 'critical'), + ], + + 'papertrail' => [ + 'driver' => 'monolog', + 'level' => env('LOG_LEVEL', 'debug'), + 'handler' => SyslogUdpHandler::class, + 'handler_with' => [ + 'host' => env('PAPERTRAIL_URL'), + 'port' => env('PAPERTRAIL_PORT'), + ], + ], + + 'stderr' => [ + 'driver' => 'monolog', + 'handler' => StreamHandler::class, + 'formatter' => env('LOG_STDERR_FORMATTER'), + 'with' => [ + 'stream' => 'php://stderr', + ], + ], + + 'syslog' => [ + 'driver' => 'syslog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'errorlog' => [ + 'driver' => 'errorlog', + 'level' => env('LOG_LEVEL', 'debug'), + ], + + 'null' => [ + 'driver' => 'monolog', + 'handler' => NullHandler::class, + ], + + 'emergency' => [ + 'path' => storage_path('logs/laravel.log'), + ], + ], + +]; diff --git a/config/mail.php b/config/mail.php new file mode 100644 index 0000000..54299aa --- /dev/null +++ b/config/mail.php @@ -0,0 +1,110 @@ + env('MAIL_MAILER', 'smtp'), + + /* + |-------------------------------------------------------------------------- + | Mailer Configurations + |-------------------------------------------------------------------------- + | + | Here you may configure all of the mailers used by your application plus + | their respective settings. Several examples have been configured for + | you and you are free to add your own as your application requires. + | + | Laravel supports a variety of mail "transport" drivers to be used while + | sending an e-mail. You will specify which one you are using for your + | mailers below. You are free to add additional mailers as required. + | + | Supported: "smtp", "sendmail", "mailgun", "ses", + | "postmark", "log", "array" + | + */ + + 'mailers' => [ + 'smtp' => [ + 'transport' => 'smtp', + 'host' => env('MAIL_HOST', 'smtp.mailgun.org'), + 'port' => env('MAIL_PORT', 587), + 'encryption' => env('MAIL_ENCRYPTION', 'tls'), + 'username' => env('MAIL_USERNAME'), + 'password' => env('MAIL_PASSWORD'), + 'timeout' => null, + 'auth_mode' => null, + ], + + 'ses' => [ + 'transport' => 'ses', + ], + + 'mailgun' => [ + 'transport' => 'mailgun', + ], + + 'postmark' => [ + 'transport' => 'postmark', + ], + + 'sendmail' => [ + 'transport' => 'sendmail', + 'path' => '/usr/sbin/sendmail -bs', + ], + + 'log' => [ + 'transport' => 'log', + 'channel' => env('MAIL_LOG_CHANNEL'), + ], + + 'array' => [ + 'transport' => 'array', + ], + ], + + /* + |-------------------------------------------------------------------------- + | Global "From" Address + |-------------------------------------------------------------------------- + | + | You may wish for all e-mails sent by your application to be sent from + | the same address. Here, you may specify a name and address that is + | used globally for all e-mails that are sent by your application. + | + */ + + 'from' => [ + 'address' => env('MAIL_FROM_ADDRESS', 'hello@example.com'), + 'name' => env('MAIL_FROM_NAME', 'Example'), + ], + + /* + |-------------------------------------------------------------------------- + | Markdown Mail Settings + |-------------------------------------------------------------------------- + | + | If you are using Markdown based email rendering, you may configure your + | theme and component paths here, allowing you to customize the design + | of the emails. Or, you may simply stick with the Laravel defaults! + | + */ + + 'markdown' => [ + 'theme' => 'default', + + 'paths' => [ + resource_path('views/vendor/mail'), + ], + ], + +]; diff --git a/config/paginateroute.php b/config/paginateroute.php new file mode 100644 index 0000000..f4f81a8 --- /dev/null +++ b/config/paginateroute.php @@ -0,0 +1,20 @@ + 'normal', + +]; diff --git a/config/queue.php b/config/queue.php new file mode 100644 index 0000000..1222296 --- /dev/null +++ b/config/queue.php @@ -0,0 +1,89 @@ + env('QUEUE_CONNECTION', '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. + | + | Drivers: "sync", "database", "beanstalkd", "sqs", "redis", "null" + | + */ + + 'connections' => [ + + 'sync' => [ + 'driver' => 'sync', + ], + + 'database' => [ + 'driver' => 'database', + 'table' => 'jobs', + 'queue' => 'default', + 'retry_after' => 90, + ], + + 'beanstalkd' => [ + 'driver' => 'beanstalkd', + 'host' => 'localhost', + 'queue' => 'default', + 'retry_after' => 90, + 'block_for' => 0, + ], + + 'sqs' => [ + 'driver' => 'sqs', + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'prefix' => env('SQS_PREFIX', 'https://sqs.us-east-1.amazonaws.com/your-account-id'), + 'queue' => env('SQS_QUEUE', 'your-queue-name'), + 'suffix' => env('SQS_SUFFIX'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'redis' => [ + 'driver' => 'redis', + 'connection' => 'default', + 'queue' => env('REDIS_QUEUE', 'default'), + 'retry_after' => 90, + 'block_for' => null, + ], + + ], + + /* + |-------------------------------------------------------------------------- + | Failed Queue Jobs + |-------------------------------------------------------------------------- + | + | These options configure the behavior of failed queue job logging so you + | can control which database and table are used to store the jobs that + | have failed. You may change them to any database / table you wish. + | + */ + + 'failed' => [ + 'driver' => env('QUEUE_FAILED_DRIVER', 'database-uuids'), + 'database' => env('DB_CONNECTION', 'mysql'), + 'table' => 'failed_jobs', + ], + +]; diff --git a/config/sentry.php b/config/sentry.php new file mode 100644 index 0000000..b0e4b70 --- /dev/null +++ b/config/sentry.php @@ -0,0 +1,57 @@ + env('SENTRY_LARAVEL_DSN', env('SENTRY_DSN')), + + // capture release as git sha + // 'release' => trim(exec('git --git-dir ' . base_path('.git') . ' log --pretty="%h" -n1 HEAD')), + + // When left empty or `null` the Laravel environment will be used + 'environment' => env('SENTRY_ENVIRONMENT'), + + 'breadcrumbs' => [ + // Capture Laravel logs in breadcrumbs + 'logs' => true, + + // Capture SQL queries in breadcrumbs + 'sql_queries' => true, + + // Capture bindings on SQL queries logged in breadcrumbs + 'sql_bindings' => true, + + // Capture queue job information in breadcrumbs + 'queue_info' => true, + + // Capture command information in breadcrumbs + 'command_info' => true, + ], + + 'tracing' => [ + // Trace queue jobs as their own transactions + 'queue_job_transactions' => env('SENTRY_TRACE_QUEUE_ENABLED', false), + + // Capture queue jobs as spans when executed on the sync driver + 'queue_jobs' => true, + + // Capture SQL queries as spans + 'sql_queries' => true, + + // Try to find out where the SQL query originated from and add it to the query spans + 'sql_origin' => true, + + // Capture views as spans + 'views' => true, + + // Indicates if the tracing integrations supplied by Sentry should be loaded + 'default_integrations' => true, + ], + + // @see: https://docs.sentry.io/platforms/php/configuration/options/#send-default-pii + 'send_default_pii' => env('SENTRY_SEND_DEFAULT_PII', false), + + 'traces_sample_rate' => (float)(env('SENTRY_TRACES_SAMPLE_RATE', 0.0)), + + 'controllers_base_namespace' => env('SENTRY_CONTROLLERS_BASE_NAMESPACE', 'App\\Http\\Controllers'), + +]; diff --git a/config/services.php b/config/services.php new file mode 100644 index 0000000..043f7df --- /dev/null +++ b/config/services.php @@ -0,0 +1,44 @@ + [ + 'domain' => env('MAILGUN_DOMAIN'), + 'secret' => env('MAILGUN_SECRET'), + 'endpoint' => env('MAILGUN_ENDPOINT', 'api.mailgun.net'), + ], + + 'postmark' => [ + 'token' => env('POSTMARK_TOKEN'), + ], + + 'ses' => [ + 'key' => env('AWS_ACCESS_KEY_ID'), + 'secret' => env('AWS_SECRET_ACCESS_KEY'), + 'region' => env('AWS_DEFAULT_REGION', 'us-east-1'), + ], + + 'google' => [ + 'client_id' => env('GOOGLE_CLIENT_ID'), + 'client_secret' => env('GOOGLE_CLIENT_SECRET'), + 'redirect' => '/auth/redirect/google', + ], + + 'facebook' => [ + 'client_id' => env('FACEBOOK_CLIENT_ID'), + 'client_secret' => env('FACEBOOK_CLIENT_SECRET'), + 'redirect' => '/auth/redirect/facebook', + ], +]; diff --git a/config/session.php b/config/session.php new file mode 100644 index 0000000..c0e798b --- /dev/null +++ b/config/session.php @@ -0,0 +1,201 @@ + env('SESSION_DRIVER', 'file'), + + /* + |-------------------------------------------------------------------------- + | Session Lifetime + |-------------------------------------------------------------------------- + | + | Here you may specify the number of minutes that you wish the session + | to be allowed to remain idle before it expires. If you want them + | to immediately expire on the browser closing, set that option. + | + */ + + 'lifetime' => env('SESSION_LIFETIME', 120), + + 'expire_on_close' => false, + + /* + |-------------------------------------------------------------------------- + | Session Encryption + |-------------------------------------------------------------------------- + | + | This option allows you to easily specify that all of your session data + | should be encrypted before it is stored. All encryption will be run + | automatically by Laravel and you can use the Session like normal. + | + */ + + 'encrypt' => false, + + /* + |-------------------------------------------------------------------------- + | Session File Location + |-------------------------------------------------------------------------- + | + | When using the native session driver, we need a location where session + | files may be stored. A default has been set for you but a different + | location may be specified. This is only needed for file sessions. + | + */ + + 'files' => storage_path('framework/sessions'), + + /* + |-------------------------------------------------------------------------- + | Session Database Connection + |-------------------------------------------------------------------------- + | + | When using the "database" or "redis" session drivers, you may specify a + | connection that should be used to manage these sessions. This should + | correspond to a connection in your database configuration options. + | + */ + + 'connection' => env('SESSION_CONNECTION', null), + + /* + |-------------------------------------------------------------------------- + | Session Database Table + |-------------------------------------------------------------------------- + | + | When using the "database" session driver, you may specify the table we + | should use to manage the sessions. Of course, a sensible default is + | provided for you; however, you are free to change this as needed. + | + */ + + 'table' => 'sessions', + + /* + |-------------------------------------------------------------------------- + | Session Cache Store + |-------------------------------------------------------------------------- + | + | While using one of the framework's cache driven session backends you may + | list a cache store that should be used for these sessions. This value + | must match with one of the application's configured cache "stores". + | + | Affects: "apc", "dynamodb", "memcached", "redis" + | + */ + + 'store' => env('SESSION_STORE', null), + + /* + |-------------------------------------------------------------------------- + | Session Sweeping Lottery + |-------------------------------------------------------------------------- + | + | Some session drivers must manually sweep their storage location to get + | rid of old sessions from storage. Here are the chances that it will + | happen on a given request. By default, the odds are 2 out of 100. + | + */ + + 'lottery' => [2, 100], + + /* + |-------------------------------------------------------------------------- + | Session Cookie Name + |-------------------------------------------------------------------------- + | + | Here you may change the name of the cookie used to identify a session + | instance by ID. The name specified here will get used every time a + | new session cookie is created by the framework for every driver. + | + */ + + 'cookie' => env( + 'SESSION_COOKIE', + Str::slug(env('APP_NAME', 'laravel'), '_') . '_session' + ), + + /* + |-------------------------------------------------------------------------- + | Session Cookie Path + |-------------------------------------------------------------------------- + | + | The session cookie path determines the path for which the cookie will + | be regarded as available. Typically, this will be the root path of + | your application but you are free to change this when necessary. + | + */ + + 'path' => '/', + + /* + |-------------------------------------------------------------------------- + | Session Cookie Domain + |-------------------------------------------------------------------------- + | + | Here you may change the domain of the cookie used to identify a session + | in your application. This will determine which domains the cookie is + | available to in your application. A sensible default has been set. + | + */ + + 'domain' => env('SESSION_DOMAIN', null), + + /* + |-------------------------------------------------------------------------- + | HTTPS Only Cookies + |-------------------------------------------------------------------------- + | + | By setting this option to true, session cookies will only be sent back + | to the server if the browser has a HTTPS connection. This will keep + | the cookie from being sent to you if it can not be done securely. + | + */ + + 'secure' => env('SESSION_SECURE_COOKIE'), + + /* + |-------------------------------------------------------------------------- + | HTTP Access Only + |-------------------------------------------------------------------------- + | + | Setting this value to true will prevent JavaScript from accessing the + | value of the cookie and the cookie will only be accessible through + | the HTTP protocol. You are free to modify this option if needed. + | + */ + + 'http_only' => true, + + /* + |-------------------------------------------------------------------------- + | Same-Site Cookies + |-------------------------------------------------------------------------- + | + | This option determines how your cookies behave when cross-site requests + | take place, and can be used to mitigate CSRF attacks. By default, we + | will set this value to "lax" since this is a secure default value. + | + | Supported: "lax", "strict", "none", null + | + */ + + 'same_site' => 'lax', + +]; diff --git a/config/settings.php b/config/settings.php new file mode 100644 index 0000000..5f0b06b --- /dev/null +++ b/config/settings.php @@ -0,0 +1,73 @@ + 'database', + + /* + |-------------------------------------------------------------------------- + | JSON Store + |-------------------------------------------------------------------------- + | + | If the store is set to "json", settings are stored in the defined + | file path in JSON format. Use full path to file. + | + */ + 'path' => storage_path() . '/settings.json', + + /* + |-------------------------------------------------------------------------- + | Database Store + |-------------------------------------------------------------------------- + | + | The settings are stored in the defined file path in JSON format. + | Use full path to JSON file. + | + */ + // If set to null, the default connection will be used. + 'connection' => null, + // Name of the table used. + 'table' => 'settings', + // If you want to use custom column names in database store you could + // set them in this configuration + 'keyColumn' => 'key', + 'valueColumn' => 'value', + + /* + |-------------------------------------------------------------------------- + | Cache settings + |-------------------------------------------------------------------------- + | + | If you want all setting calls to go through Laravel's cache system. + | + */ + 'enableCache' => false, + // Whether to reset the cache when changing a setting. + 'forgetCacheByWrite' => true, + // TTL in seconds. + 'cacheTtl' => 15, + + /* + |-------------------------------------------------------------------------- + | Default Settings + |-------------------------------------------------------------------------- + | + | Define all default settings that will be used before any settings are set, + | this avoids all settings being set to false to begin with and avoids + | hardcoding the same defaults in all 'Settings::get()' calls + | + */ + 'defaults' => [ + 'demo' => 'demo1', + ] +]; diff --git a/config/view.php b/config/view.php new file mode 100644 index 0000000..22b8a18 --- /dev/null +++ b/config/view.php @@ -0,0 +1,36 @@ + [ + 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' => env( + 'VIEW_COMPILED_PATH', + realpath(storage_path('framework/views')) + ), + +]; diff --git a/database/.gitignore b/database/.gitignore new file mode 100644 index 0000000..97fc976 --- /dev/null +++ b/database/.gitignore @@ -0,0 +1,2 @@ +*.sqlite +*.sqlite-journal diff --git a/database/factories/UserFactory.php b/database/factories/UserFactory.php new file mode 100644 index 0000000..a8ba245 --- /dev/null +++ b/database/factories/UserFactory.php @@ -0,0 +1,34 @@ + $this->faker->firstName, + 'last_name' => $this->faker->lastName, + 'email' => $this->faker->unique()->safeEmail, + 'email_verified_at' => now(), + 'password' => '$2y$10$92IXUNpkjO0rOQ5byMi.Ye4oKoEa3Ro9llC/.og/at2.uheWG/igi', // password + 'remember_token' => Str::random(10), + ]; + } +} diff --git a/database/migrations/2014_10_12_000000_create_users_table.php b/database/migrations/2014_10_12_000000_create_users_table.php new file mode 100644 index 0000000..5938bf9 --- /dev/null +++ b/database/migrations/2014_10_12_000000_create_users_table.php @@ -0,0 +1,50 @@ +id(); + $table->string('username')->unique()->index(); + $table->string('password'); + $table->string('email')->unique()->index(); + $table->integer('role_id')->default(6)->index(); + $table->string('avatar')->default('default.png'); + $table->string('coverpic')->default('default.png'); + $table->text('bio')->nullable()->default(null); + $table->string('status')->nullable()->default(null); + $table->string('api_token')->nullable()->default(null); + $table->string('stripe_id')->nullable()->default(null); + $table->integer('profile_views')->default(0); + $table->integer('blog_views')->default(0); + $table->enum('banned', ['Y', 'N'])->default('N'); + $table->enum('user_deleted', ['Y', 'N'])->default('N'); + $table->timestamp('email_verified_at')->nullable(); + $table->rememberToken(); + $table->ipAddress(); + $table->timestamps(); + $table->timestamp('last_activity')->nullable()->default(null); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('users'); + } +}; diff --git a/database/migrations/2014_10_12_100000_create_password_resets_table.php b/database/migrations/2014_10_12_100000_create_password_resets_table.php new file mode 100644 index 0000000..fcacb80 --- /dev/null +++ b/database/migrations/2014_10_12_100000_create_password_resets_table.php @@ -0,0 +1,32 @@ +string('email')->index(); + $table->string('token'); + $table->timestamp('created_at')->nullable(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('password_resets'); + } +}; diff --git a/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php new file mode 100644 index 0000000..1719198 --- /dev/null +++ b/database/migrations/2019_08_19_000000_create_failed_jobs_table.php @@ -0,0 +1,36 @@ +id(); + $table->string('uuid')->unique(); + $table->text('connection'); + $table->text('queue'); + $table->longText('payload'); + $table->longText('exception'); + $table->timestamp('failed_at')->useCurrent(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('failed_jobs'); + } +}; diff --git a/database/migrations/2022_04_20_215729_create_user_gamer_tags_table.php b/database/migrations/2022_04_20_215729_create_user_gamer_tags_table.php new file mode 100644 index 0000000..356a591 --- /dev/null +++ b/database/migrations/2022_04_20_215729_create_user_gamer_tags_table.php @@ -0,0 +1,42 @@ +id(); + $table->integer('user_id')->index()->unique()->unsigned(); + $table->string('xbox_live')->nullable()->default(null); + $table->string('wii')->nullable()->default(null); + $table->string('wii_u')->nullable()->default(null); + $table->string('3ds')->nullable()->default(null); + $table->string('nintendo_id')->nullable()->default(null); + $table->string('nintendo_switch_id')->nullable()->default(null); + $table->string('psn')->nullable()->default(null); + $table->string('steam')->nullable()->default(null); + $table->string('battle_net')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_gamer_tags'); + } +}; diff --git a/database/migrations/2022_04_20_220228_create_user_infos_table.php b/database/migrations/2022_04_20_220228_create_user_infos_table.php new file mode 100644 index 0000000..7696efc --- /dev/null +++ b/database/migrations/2022_04_20_220228_create_user_infos_table.php @@ -0,0 +1,42 @@ +id(); + $table->integer('user_id')->unique()->index()->unsigned(); + $table->string('location')->nullable()->default(null); + $table->string('website')->nullable()->default(null); + $table->string('facebook')->nullable()->default(null); + $table->string('twitter')->nullable()->default(null); + $table->string('instagram')->nullable()->default(null); + $table->string('myanimelist')->nullable()->default(null); + $table->string('true_achievements')->nullable()->default(null); + $table->string('true_trophies')->nullable()->default(null); + $table->string('twitch')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_infos'); + } +}; diff --git a/database/migrations/2022_04_22_161837_create_user_notification_settings_table.php b/database/migrations/2022_04_22_161837_create_user_notification_settings_table.php new file mode 100644 index 0000000..b5cb6d2 --- /dev/null +++ b/database/migrations/2022_04_22_161837_create_user_notification_settings_table.php @@ -0,0 +1,39 @@ +id(); + $table->integer('user_id')->unique()->index()->unsigned(); + $table->enum('comment_on_your_profile', ['Y', 'N'])->default('N'); + $table->enum('previously_left_comment_on_game', ['Y', 'N'])->default('N'); + $table->enum('comment_for_game_on_list', ['Y', 'N'])->default('N'); + $table->enum('comment_on_your_review', ['Y', 'N'])->default('N'); + $table->enum('previously_left_comment_on_review', ['Y', 'N'])->default('N'); + $table->enum('friend_added_you', ['Y', 'N'])->default('N'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_notification_settings'); + } +}; diff --git a/database/migrations/2022_04_22_165321_create_roles_table.php b/database/migrations/2022_04_22_165321_create_roles_table.php new file mode 100644 index 0000000..d135d51 --- /dev/null +++ b/database/migrations/2022_04_22_165321_create_roles_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('name'); + $table->string('slug'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('roles'); + } +}; diff --git a/database/migrations/2022_04_25_160814_create_games_table.php b/database/migrations/2022_04_25_160814_create_games_table.php new file mode 100644 index 0000000..af44b91 --- /dev/null +++ b/database/migrations/2022_04_25_160814_create_games_table.php @@ -0,0 +1,53 @@ +id(); + $table->string('name'); + $table->string('alt_titles')->nullable()->default(null); + $table->integer('platform_id')->index()->unsigned(); + $table->text('description')->nullable()->default(null); + $table->string('source')->nullable()->default(null); + $table->string('boxart')->nullable()->default(null); + $table->string('genre_ids')->nullable()->default(null); + $table->string('developers')->nullable()->default(null); + $table->string('publishers')->nullable()->default(null); + $table->string('composers')->nullable()->default(null); + $table->string('website')->nullable()->default(null); + $table->timestamp('na_release_date')->nullable()->default(null); + $table->timestamp('jp_release_date')->nullable()->default(null); + $table->timestamp('eu_release_date')->nullable()->default(null); + $table->timestamp('aus_release_date')->nullable()->default(null); + $table->enum('esrb_rating', ['Everyone', 'Everyone 10+', 'Teen', 'Mature 17+', 'Adults Only 18+', 'Rating Pending', 'Rating Pending - Likely Mature 17+'])->nullable()->default(null); // phpcs:ignore + $table->enum('pegi_rating', ['PEGI 3', 'PEGI 7', 'PEGI 12', 'PEGI 16', 'PEGI 18'])->nullable()->default(null); // phpcs:ignore + $table->enum('cero_rating', ['CERO A', 'CERO B', 'CERO C', 'CERO D', 'CERO Z'])->nullable()->default(null); // phpcs:ignore + $table->enum('acb_rating', ['E', 'G', 'PG', 'M', 'MA 15+', 'R 18+', 'X 18+'])->nullable()->default(null); + $table->integer('requested_by')->index()->unsigned(); + $table->integer('added_by')->index()->unsigned(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('games'); + } +}; diff --git a/database/migrations/2022_04_25_160900_create_game_lists_table.php b/database/migrations/2022_04_25_160900_create_game_lists_table.php new file mode 100644 index 0000000..6366e44 --- /dev/null +++ b/database/migrations/2022_04_25_160900_create_game_lists_table.php @@ -0,0 +1,46 @@ +id(); + $table->integer('user_id')->index()->unsigned(); + $table->integer('game_id')->index()->unsigned(); + $table->enum('ownership', [1, 2, 3, 4])->nullable()->default(null); + $table->enum('status', [1, 2, 3, 4, 5, 6])->index()->default(1); + $table->enum('rating', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])->index()->nullable()->default(null); + $table->enum('priority', ['Low', 'Medium', 'High'])->nullable()->default(null); + $table->enum('difficulty', ['Easy', 'Medium', 'Hard', 'Extremely Hard'])->nullable()->default(null); + $table->enum('hours_played', [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13])->nullable()->default(null); + $table->enum('replay_value', [1, 2, 3, 4, 5])->nullable()->default(null); + $table->timestamp('start_date')->nullable()->default(null); + $table->timestamp('finish_date')->nullable()->default(null); + $table->enum('is_replaying', ['Y', 'N'])->nullable()->default('N'); + $table->text('notes')->nullable()->default(null); + $table->ipAddress('ip_address')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('game_lists'); + } +}; diff --git a/database/migrations/2022_04_25_165235_create_console_lists_table.php b/database/migrations/2022_04_25_165235_create_console_lists_table.php new file mode 100644 index 0000000..8814b75 --- /dev/null +++ b/database/migrations/2022_04_25_165235_create_console_lists_table.php @@ -0,0 +1,34 @@ +id(); + $table->integer('user_id')->index()->unsigned(); + $table->string('consoles')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('consoles'); + } +}; diff --git a/database/migrations/2022_04_25_165247_create_platforms_table.php b/database/migrations/2022_04_25_165247_create_platforms_table.php new file mode 100644 index 0000000..b8d9052 --- /dev/null +++ b/database/migrations/2022_04_25_165247_create_platforms_table.php @@ -0,0 +1,33 @@ +id(); + $table->string('name')->unique(); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('platforms'); + } +}; diff --git a/database/migrations/2022_04_25_165730_create_profile_comments_table.php b/database/migrations/2022_04_25_165730_create_profile_comments_table.php new file mode 100644 index 0000000..bda031f --- /dev/null +++ b/database/migrations/2022_04_25_165730_create_profile_comments_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('recipient_id')->index()->unsigned(); + $table->integer('sender_id')->index()->unsigned(); + $table->text('comment'); + $table->ipAddress('ip_address')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('profile_comments'); + } +}; diff --git a/database/migrations/2022_04_25_165743_create_game_comments_table.php b/database/migrations/2022_04_25_165743_create_game_comments_table.php new file mode 100644 index 0000000..a858411 --- /dev/null +++ b/database/migrations/2022_04_25_165743_create_game_comments_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('game_id')->index()->unsigned(); + $table->integer('user_id')->index()->unsigned(); + $table->text('comment'); + $table->ipAddress('ip_address')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('game_comments'); + } +}; diff --git a/database/migrations/2022_04_25_170219_create_genres_table.php b/database/migrations/2022_04_25_170219_create_genres_table.php new file mode 100644 index 0000000..6e1e315 --- /dev/null +++ b/database/migrations/2022_04_25_170219_create_genres_table.php @@ -0,0 +1,34 @@ +id(); + $table->string('name')->unique(); + $table->ipAddress('ip_address')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('genres'); + } +}; diff --git a/database/migrations/2022_05_03_184358_add_list_views_column_to_users_table.php b/database/migrations/2022_05_03_184358_add_list_views_column_to_users_table.php new file mode 100644 index 0000000..9a9a9e6 --- /dev/null +++ b/database/migrations/2022_05_03_184358_add_list_views_column_to_users_table.php @@ -0,0 +1,32 @@ +integer('list_views')->after('profile_views')->default(0); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('users', function (Blueprint $table) { + $table->dropColumn('list_views'); + }); + } +}; diff --git a/database/migrations/2022_05_04_180713_add_name_and_platform_id_columns_to_game_lists_table.php b/database/migrations/2022_05_04_180713_add_name_and_platform_id_columns_to_game_lists_table.php new file mode 100644 index 0000000..235e2e6 --- /dev/null +++ b/database/migrations/2022_05_04_180713_add_name_and_platform_id_columns_to_game_lists_table.php @@ -0,0 +1,34 @@ +string('name')->after('game_id'); + $table->integer('platform_id')->after('name')->index(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('game_lists', function (Blueprint $table) { + $table->dropColumn('name'); + $table->dropColumn('platform_id'); + }); + } +}; diff --git a/database/migrations/2022_05_07_150203_create_activity_log_table.php b/database/migrations/2022_05_07_150203_create_activity_log_table.php new file mode 100644 index 0000000..a9c979c --- /dev/null +++ b/database/migrations/2022_05_07_150203_create_activity_log_table.php @@ -0,0 +1,27 @@ +create(config('activitylog.table_name'), function (Blueprint $table) { // phpcs:ignore + $table->bigIncrements('id'); + $table->string('log_name')->nullable(); + $table->text('description'); + $table->nullableMorphs('subject', 'subject'); + $table->nullableMorphs('causer', 'causer'); + $table->json('properties')->nullable(); + $table->timestamps(); + $table->index('log_name'); + }); + } + + public function down() + { + Schema::connection(config('activitylog.database_connection'))->dropIfExists(config('activitylog.table_name')); + } +}; diff --git a/database/migrations/2022_05_07_150204_add_event_column_to_activity_log_table.php b/database/migrations/2022_05_07_150204_add_event_column_to_activity_log_table.php new file mode 100644 index 0000000..16b7964 --- /dev/null +++ b/database/migrations/2022_05_07_150204_add_event_column_to_activity_log_table.php @@ -0,0 +1,22 @@ +table(config('activitylog.table_name'), function (Blueprint $table) { + $table->string('event')->nullable()->after('subject_type'); + }); + } + + public function down() + { + Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) { + $table->dropColumn('event'); + }); + } +}; diff --git a/database/migrations/2022_05_07_150205_add_batch_uuid_column_to_activity_log_table.php b/database/migrations/2022_05_07_150205_add_batch_uuid_column_to_activity_log_table.php new file mode 100644 index 0000000..85d4025 --- /dev/null +++ b/database/migrations/2022_05_07_150205_add_batch_uuid_column_to_activity_log_table.php @@ -0,0 +1,22 @@ +table(config('activitylog.table_name'), function (Blueprint $table) { + $table->uuid('batch_uuid')->nullable()->after('properties'); + }); + } + + public function down() + { + Schema::connection(config('activitylog.database_connection'))->table(config('activitylog.table_name'), function (Blueprint $table) { + $table->dropColumn('batch_uuid'); + }); + } +}; diff --git a/database/migrations/2022_06_21_193217_create_user_site_settings_table.php b/database/migrations/2022_06_21_193217_create_user_site_settings_table.php new file mode 100644 index 0000000..2040c55 --- /dev/null +++ b/database/migrations/2022_06_21_193217_create_user_site_settings_table.php @@ -0,0 +1,35 @@ +id(); + $table->integer('user_id')->index()->unsigned(); + $table->string('setting_name'); + $table->string('setting_value'); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('user_site_settings'); + } +}; diff --git a/database/migrations/2023_01_04_183036_create_wishlists_table.php b/database/migrations/2023_01_04_183036_create_wishlists_table.php new file mode 100644 index 0000000..f1b3174 --- /dev/null +++ b/database/migrations/2023_01_04_183036_create_wishlists_table.php @@ -0,0 +1,36 @@ +id(); + $table->integer('user_id')->unsigned()->index(); + $table->integer('game_id')->unsigned()->index(); + $table->integer('sort_order')->unsigned()->index(); + $table->ipAddress('ip_address')->nullable()->default(null); + $table->timestamps(); + $table->softDeletes(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('wishlists'); + } +}; diff --git a/database/seeders/DatabaseSeeder.php b/database/seeders/DatabaseSeeder.php new file mode 100644 index 0000000..3202211 --- /dev/null +++ b/database/seeders/DatabaseSeeder.php @@ -0,0 +1,22 @@ +call([ + UsersSeeder::class, + // PermissionsSeeder::class, + // RolesSeeder::class, + ]); + } +} diff --git a/database/seeders/PermissionsSeeder.php b/database/seeders/PermissionsSeeder.php new file mode 100644 index 0000000..eb71a1f --- /dev/null +++ b/database/seeders/PermissionsSeeder.php @@ -0,0 +1,55 @@ +forgetCachedPermissions(); + + $data = $this->data(); + + foreach ($data as $value) { + Permission::create([ + 'name' => $value['name'], + ]); + } + } + + public function data() + { + $data = []; + // list of model permission + $model = ['content', 'user', 'role', 'permission']; + + foreach ($model as $value) { + foreach ($this->crudActions($value) as $action) { + $data[] = ['name' => $action]; + } + } + + return $data; + } + + public function crudActions($name) + { + $actions = []; + // list of permission actions + $crud = ['create', 'read', 'update', 'delete']; + + foreach ($crud as $value) { + $actions[] = $value . ' ' . $name; + } + + return $actions; + } +} diff --git a/database/seeders/RolesSeeder.php b/database/seeders/RolesSeeder.php new file mode 100644 index 0000000..b9f9e56 --- /dev/null +++ b/database/seeders/RolesSeeder.php @@ -0,0 +1,33 @@ +data(); + + foreach ($data as $value) { + Role::create([ + 'name' => $value['name'], + ]); + } + } + + public function data() + { + return [ + ['name' => 'admin'], + ['name' => 'editor'], + ]; + } +} diff --git a/database/seeders/UsersSeeder.php b/database/seeders/UsersSeeder.php new file mode 100644 index 0000000..e0bc569 --- /dev/null +++ b/database/seeders/UsersSeeder.php @@ -0,0 +1,62 @@ + $faker->firstName, + 'last_name' => $faker->lastName, + 'email' => 'demo@demo.com', + 'password' => Hash::make('demo'), + 'email_verified_at' => now(), + ]); + + $this->addDummyInfo($faker, $demoUser); + + $demoUser2 = User::create([ + 'first_name' => $faker->firstName, + 'last_name' => $faker->lastName, + 'email' => 'admin@demo.com', + 'password' => Hash::make('demo'), + 'email_verified_at' => now(), + ]); + + $this->addDummyInfo($faker, $demoUser2); + + User::factory(100)->create()->each(function (User $user) use ($faker) { + $this->addDummyInfo($faker, $user); + }); + } + + private function addDummyInfo(Generator $faker, User $user) + { + $dummyInfo = [ + 'company' => $faker->company, + 'phone' => $faker->phoneNumber, + 'website' => $faker->url, + 'language' => $faker->languageCode, + 'country' => $faker->countryCode, + ]; + + $info = new UserInfo(); + foreach ($dummyInfo as $key => $value) { + $info->$key = $value; + } + $info->user()->associate($user); + $info->save(); + } +} diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..5ba8e62 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,74 @@ +# For more information: https://laravel.com/docs/sail +version: '3' +services: + laravel.test: + build: + context: ./vendor/laravel/sail/runtimes/8.0 + dockerfile: Dockerfile + args: + WWWGROUP: '${WWWGROUP}' + image: sail-8.0/app + ports: + - '${APP_PORT:-80}:80' + environment: + WWWUSER: '${WWWUSER}' + LARAVEL_SAIL: 1 + volumes: + - '.:/var/www/html' + networks: + - sail + depends_on: + - mysql + - redis + # - selenium + # selenium: + # image: 'selenium/standalone-chrome' + # volumes: + # - '/dev/shm:/dev/shm' + # networks: + # - sail + # depends_on: + # - laravel.test + mysql: + image: 'mysql:8.0' + ports: + - '${FORWARD_DB_PORT:-3306}:3306' + environment: + MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}' + MYSQL_DATABASE: '${DB_DATABASE}' + MYSQL_USER: '${DB_USERNAME}' + MYSQL_PASSWORD: '${DB_PASSWORD}' + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + volumes: + - 'sailmysql:/var/lib/mysql' + networks: + - sail + redis: + image: 'redis:alpine' + ports: + - '${FORWARD_REDIS_PORT:-6379}:6379' + volumes: + - 'sailredis:/data' + networks: + - sail + # memcached: + # image: 'memcached:alpine' + # ports: + # - '11211:11211' + # networks: + # - sail + mailhog: + image: 'mailhog/mailhog:latest' + ports: + - 1025:1025 + - 8025:8025 + networks: + - sail +networks: + sail: + driver: bridge +volumes: + sailmysql: + driver: local + sailredis: + driver: local diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..2ca2ac9 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,29114 @@ +{ + "name": "myvideogamelist.com", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "dependencies": { + "@ckeditor/ckeditor5-alignment": "^31.1.0", + "@ckeditor/ckeditor5-build-balloon": "^23.1.0", + "@ckeditor/ckeditor5-build-balloon-block": "^23.1.0", + "@ckeditor/ckeditor5-build-classic": "^23.1.0", + "@ckeditor/ckeditor5-build-decoupled-document": "^23.1.0", + "@ckeditor/ckeditor5-build-inline": "^23.1.0", + "@fortawesome/fontawesome-free": "^5.15.3", + "@popperjs/core": "~2.10.1", + "@shopify/draggable": "^1.0.0-beta.12", + "@yaireo/tagify": "^4.9.2", + "acorn": "^8.0.4", + "apexcharts": "^3.30.0", + "autosize": "^5.0.1", + "axios": "^0.21.1", + "bootstrap": "5.1.3", + "bootstrap-cookie-alert": "^1.2.1", + "bootstrap-daterangepicker": "^3.1.0", + "bootstrap-icons": "^1.5.0", + "bootstrap-maxlength": "^1.10.1", + "bootstrap-multiselectsplitter": "^1.0.4", + "chalk": "^4.1.0", + "chart.js": "^3.6.0", + "clipboard": "^2.0.8", + "countup.js": "^2.0.7", + "cropperjs": "^1.5.12", + "datatables.net": "^1.10.25", + "datatables.net-bs5": "^1.10.25", + "datatables.net-buttons": "^1.7.1", + "datatables.net-buttons-bs5": "^1.7.1", + "datatables.net-colreorder": "^1.5.4", + "datatables.net-colreorder-bs5": "^1.5.4", + "datatables.net-datetime": "^1.1.0", + "datatables.net-fixedcolumns": "^3.3.3", + "datatables.net-fixedcolumns-bs5": "^3.3.3", + "datatables.net-fixedheader": "^3.1.9", + "datatables.net-fixedheader-bs5": "^3.1.9", + "datatables.net-plugins": "^1.10.24", + "datatables.net-responsive": "^2.2.9", + "datatables.net-responsive-bs5": "^2.2.9", + "datatables.net-rowgroup": "^1.1.3", + "datatables.net-rowgroup-bs5": "^1.1.3", + "datatables.net-rowreorder": "^1.2.8", + "datatables.net-rowreorder-bs5": "^1.2.8", + "datatables.net-scroller": "^2.0.4", + "datatables.net-scroller-bs5": "^2.0.4", + "datatables.net-select": "^1.3.3", + "datatables.net-select-bs5": "^1.3.3", + "del": "^6.0.0", + "dropzone": "^5.9.2", + "es6-promise": "^4.2.8", + "es6-promise-polyfill": "^1.2.0", + "es6-shim": "^0.35.5", + "esri-leaflet": "^3.0.2", + "esri-leaflet-geocoder": "^3.0.0", + "flatpickr": "^4.6.9", + "flot": "^4.2.2", + "fslightbox": "^3.3.0-2", + "fullcalendar": "^5.8.0", + "handlebars": "^4.7.7", + "inputmask": "^5.0.6", + "jkanban": "^1.3.1", + "jquery": "3.6.0", + "jquery.repeater": "^1.2.1", + "jstree": "^3.3.11", + "jszip": "^3.6.0", + "leaflet": "^1.7.1", + "line-awesome": "^1.3.0", + "moment": "^2.29.1", + "nouislider": "^15.2.0", + "npm": "^7.19.1", + "pdfmake": "^0.2.0", + "prism-themes": "^1.7.0", + "prismjs": "^1.24.1", + "quill": "^1.3.7", + "select2": "^4.1.0-rc.0", + "smooth-scroll": "^16.1.3", + "sweetalert2": "^11.0.18", + "tiny-slider": "^2.9.3", + "tinymce": "^5.8.2", + "typed.js": "^2.0.12", + "vis-timeline": "^7.4.9", + "wnumb": "^1.2.0" + }, + "devDependencies": { + "alpinejs": "^3.7.1", + "autoprefixer": "^10.4.2", + "axios": "^0.24.0", + "laravel-mix": "^6.0.39", + "lodash": "^4.17.19", + "postcss": "^8.4.5", + "postcss-import": "^14.0.2", + "replace-in-file-webpack-plugin": "^1.0.6", + "resolve-url-loader": "^4.0.0", + "rtlcss": "^3.5.0", + "sass": "^1.47.0", + "sass-loader": "^12.4.0", + "webpack-rtl-plugin": "^2.0.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "peerDependencies": { + "@babel/core": "^7.4.0-0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.12.0" + } + }, + "node_modules/@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "dependencies": { + "regenerator-transform": "^0.15.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@ckeditor/ckeditor5-alignment": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-31.1.0.tgz", + "integrity": "sha512-G5H8hWUMpjctlxaJKUa5HVbavEukghSOfOJjKL47MFSlp46fDgdotmGYnW8BLqFJItsccO8PJJy20KaO6Gj9BQ==", + "dependencies": { + "ckeditor5": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-build-balloon": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-balloon/-/ckeditor5-build-balloon-23.1.0.tgz", + "integrity": "sha512-JjiB+ps7r7XkWq1KK757QwQXdm/MjRCaTDlgEnJigEuRgdIr1/UirYH33CIQGNKsRoeU6iaSz+VuFCf9OziR0A==", + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-build-balloon-block": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-balloon-block/-/ckeditor5-build-balloon-block-23.1.0.tgz", + "integrity": "sha512-VAiUfMxxU7jG6StuHeyUt4mcCZRolD6cHhWJACCmcah6ODmENIGtPZJ3fYi+RFpIAFXdlVznfAbYImbvr1UCYg==", + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-build-classic": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-23.1.0.tgz", + "integrity": "sha512-wqJZ6yuqm48NoiciRcfs+t73YOfIKovJIiLSHf0yB2I3Mc+bL6iNhwwyJ3b6D/22IgYEXTpc6PiwsYFbGFnq2Q==", + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-build-decoupled-document": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-decoupled-document/-/ckeditor5-build-decoupled-document-23.1.0.tgz", + "integrity": "sha512-dn8/Cw3wf75ZybMLfmPy1ZtitObi6YTHPeavkyu0TVDbJhefpBL+gKWRrTptpvNk3Txw40zWU5MYq0225FpPkA==", + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-build-inline": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-inline/-/ckeditor5-build-inline-23.1.0.tgz", + "integrity": "sha512-SrboOm2cjhbsRkqf6fT0asiG65CCPMko680qIyMPgepKIfsCENfkZf3mLL1vOlOiDk/JtvciWrjq2fzNK9LhNA==", + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-clipboard": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-31.1.0.tgz", + "integrity": "sha512-rHvswGs4Q/ZiKPGk0J7+Nrb3mqNugKQFOXA7SSecOI9ZRt6hIxr4fgj4ccb8ceuHNr2vJNmTGC8jjKX7wGHPbw==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "@ckeditor/ckeditor5-widget": "^31.1.0", + "lodash-es": "^4.17.11" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-core": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-31.1.0.tgz", + "integrity": "sha512-5BUosLrUliV2NZ9DAW48Za/4P3QWmwKMoHohCvq7Jq9Us6TQCnEKauUNexJFDAWqUAdN2WlqaVdSL+FmfhmzSA==", + "dependencies": { + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-engine": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-31.1.0.tgz", + "integrity": "sha512-lHZjdKKeBWR4N2rk4rdnxDtdE3F1Q7Z2Ag2RgHG8GT3J6s2BNx/z++9GxhlCKPR3TQ70XWCLBLGXuFHXIvU0Kg==", + "dependencies": { + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-enter": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-31.1.0.tgz", + "integrity": "sha512-9K5d12lCfvnUGESwxpu2UJCLsAaa40QR4JgVHKV0CZpERfcsvcF3XdM8cggS/Ovin2TBq1w+tXhOKbop5Why9Q==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-paragraph": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-31.1.0.tgz", + "integrity": "sha512-rltzxwcKwR6mxZqomKLkrdLuVkkeKiESv7bweVY9VcPb7hk0BiLZcYkLqsOlfkZHWHWCiQ+5UDR8ctuaVmiUjg==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-select-all": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-31.1.0.tgz", + "integrity": "sha512-d6bTtuZLoBN61jPjbY562awfRYy+xhnCEIilsoRLb04mFNa6HnFs/mZtNIFqrm7dYZWSkJz9+1XwQouYW+kGqQ==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-typing": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-31.1.0.tgz", + "integrity": "sha512-juskFEb1YrXLS+wcLEnc3GZtqkq95Q13sNAAyvKaEXzNphy4PBv+odLAwP7KCrxifVf278bgVxGDV5GPPAenOA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-ui": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-31.1.0.tgz", + "integrity": "sha512-fHBLsRK7XRxeewm1NH9idU4zUguhysQPEmEhqWOi+GRt2I0pYrc22GYNJF3yKMqp1LfiLi7GAT66X2RL9rCEaQ==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-undo": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-31.1.0.tgz", + "integrity": "sha512-eNWEP9E5Ji2W7NU6vCKOqjYW0+/xwXGkiExboTApudJDT1IWu2hqoaVQ+3eEWHWJbqCxIRSHif6+uYEBIoInXg==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-upload": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-31.1.0.tgz", + "integrity": "sha512-j+FNllYawZgTWCVOUSce/34SMfwgqNa2F7yvdmw4pmPSl8mlSZxSEYA9mLqbKpXwsuFY0iY14JQEB2bngNgTbA==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-utils": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-31.1.0.tgz", + "integrity": "sha512-l2C2m8uLxKTblXX6SY+k40tK9U4pFZ2WCYP1dc3B0qz5an+h7e5EqRz3kFs+MVw0HM6VCYWDFql/JZDAFonOmQ==", + "dependencies": { + "lodash-es": "^4.17.15" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@ckeditor/ckeditor5-widget": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-31.1.0.tgz", + "integrity": "sha512-e/B2qjgwXHuj/Qo+cGAM7j3NTPXvTikL+wjEF5sh5a0w5el9Sv97tzew5rojkZ6ypQykE+1ue+F579b74n7QiQ==", + "dependencies": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-enter": "^31.1.0", + "@ckeditor/ckeditor5-typing": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "peer": true, + "dependencies": { + "@types/hammerjs": "^2.0.36" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@foliojs-fork/fontkit": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.1.tgz", + "integrity": "sha512-U589voc2/ROnvx1CyH9aNzOQWJp127JGU1QAylXGQ7LoEAF6hMmahZLQ4eqAcgHUw+uyW4PjtCItq9qudPkK3A==", + "dependencies": { + "@foliojs-fork/restructure": "^2.0.2", + "brfs": "^2.0.0", + "brotli": "^1.2.0", + "browserify-optional": "^1.0.1", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.2.2", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/linebreak": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.1.tgz", + "integrity": "sha512-pgY/+53GqGQI+mvDiyprvPWgkTlVBS8cxqee03ejm6gKAQNsR1tCYCIvN9FHy7otZajzMqCgPOgC4cHdt4JPig==", + "dependencies": { + "base64-js": "1.3.1", + "brfs": "^2.0.2", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/@foliojs-fork/linebreak/node_modules/base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + }, + "node_modules/@foliojs-fork/pdfkit": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.13.0.tgz", + "integrity": "sha512-YXeG1fml9k97YNC9K8e292Pj2JzGt9uOIiBFuQFxHsdQ45BlxW+JU3RQK6JAvXU7kjhjP8rCcYvpk36JLD33sQ==", + "dependencies": { + "@foliojs-fork/fontkit": "^1.9.1", + "@foliojs-fork/linebreak": "^1.1.1", + "crypto-js": "^4.0.0", + "png-js": "^1.0.0" + } + }, + "node_modules/@foliojs-fork/restructure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", + "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==" + }, + "node_modules/@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==", + "hasInstallScript": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/@romainberger/css-diff": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@romainberger/css-diff/-/css-diff-1.0.3.tgz", + "integrity": "sha1-ztOHU11PQqQqwf4TwJ3pf1rhNEw=", + "dev": true, + "dependencies": { + "lodash.merge": "^4.4.0", + "postcss": "^5.0.21" + } + }, + "node_modules/@romainberger/css-diff/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "dev": true, + "dependencies": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/chalk/node_modules/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, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/@romainberger/css-diff/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/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, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@romainberger/css-diff/node_modules/supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha1-ZawFBLOVQXHYpklGsq48u4pfVPY=", + "dev": true, + "dependencies": { + "has-flag": "^1.0.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@shopify/draggable": { + "version": "1.0.0-beta.12", + "resolved": "https://registry.npmjs.org/@shopify/draggable/-/draggable-1.0.0-beta.12.tgz", + "integrity": "sha512-Un/Dn61sv2er9yjDXLGWMauCOWBb0BMbm0yzmmrD+oUX2/x50yhNJASTsCRdndUCpWlqYfZH8jEfaOgTPsKc/g==" + }, + "node_modules/@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "dependencies": { + "defer-to-connect": "^1.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@terraformer/arcgis": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.1.0.tgz", + "integrity": "sha512-eKTvNXze2Fo7vAEjvJFIGn5QdU0OP4aD9DuT/uTBLRM1QS+ju7KtPITbVW+xgCviHLnOVeFQ1UsIs9kjkakD4g==", + "dependencies": { + "@terraformer/common": "^2.0.7" + } + }, + "node_modules/@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.0.tgz", + "integrity": "sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.3.0" + } + }, + "node_modules/@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "dependencies": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "node_modules/@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, + "node_modules/@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "dependencies": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "node_modules/@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "node_modules/@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "dependencies": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "peer": true + }, + "node_modules/@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/imagemin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", + "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "dev": true, + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "dev": true, + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "dev": true, + "dependencies": { + "@types/imagemin": "*" + } + }, + "node_modules/@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "dev": true, + "dependencies": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "node_modules/@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "node_modules/@types/node": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", + "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", + "dev": true + }, + "node_modules/@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "node_modules/@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "node_modules/@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "node_modules/@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "node_modules/@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "node_modules/@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "dependencies": { + "@types/express": "*" + } + }, + "node_modules/@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "dependencies": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "node_modules/@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true + }, + "node_modules/@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "dev": true, + "dependencies": { + "@vue/shared": "3.1.5" + } + }, + "node_modules/@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "dev": true + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x", + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "dependencies": { + "envinfo": "^7.7.3" + }, + "peerDependencies": { + "webpack-cli": "4.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "peerDependencies": { + "webpack-cli": "4.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/@yaireo/tagify": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.11.0.tgz", + "integrity": "sha512-J70gWNNlgHw+60azyJTsu0YHPsH7qXowQIi7PGMuhDQAfjTGNUH/Tx2TCzruTDocOTcoD6ol/iZXpNm8+VOg7g==", + "peerDependencies": { + "prop-types": "^15.7.2" + } + }, + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "dependencies": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + } + }, + "node_modules/acorn-node/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "node_modules/alpinejs": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.10.1.tgz", + "integrity": "sha512-1iwVW1flJfPKFyQqGn9f/CPlPHyMKyGHolUtCkwP0G0/AXZmkyVB5/808+77jvWD/S3clVNgA0MLUTsfaJiqzw==", + "dev": true, + "dependencies": { + "@vue/reactivity": "~3.1.1" + } + }, + "node_modules/amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "optional": true, + "engines": { + "node": ">=0.4.2" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true, + "engines": [ + "node >= 0.8.0" + ], + "bin": { + "ansi-html": "bin/ansi-html" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/apexcharts": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.35.0.tgz", + "integrity": "sha512-oipJRkaxt8DPGRmn1kur6aPzML1JSpf2M3ecu+gyw+8xiNmT2C0p1uuuqPZrk+Lr2hmDxzNBPR7TvxwRl3ozgw==", + "dependencies": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "node_modules/array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "dependencies": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/asn1.js/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "dependencies": { + "object-assign": "^4.1.1", + "util": "0.10.3" + } + }, + "node_modules/assert/node_modules/inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "node_modules/assert/node_modules/util": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", + "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", + "dev": true, + "dependencies": { + "inherits": "2.0.1" + } + }, + "node_modules/ast-transform": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", + "integrity": "sha1-dJRAWIh9goPhidlUYAlHvJj+AGI=", + "dependencies": { + "escodegen": "~1.2.0", + "esprima": "~1.0.4", + "through": "~2.3.4" + } + }, + "node_modules/ast-types": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "dependencies": { + "lodash": "^4.17.14" + } + }, + "node_modules/atoa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", + "integrity": "sha1-DMDpGkgOc4+SPrwQNnZHF3mzSkk=" + }, + "node_modules/autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/autosize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.1.tgz", + "integrity": "sha512-UIWUlE4TOVPNNj2jjrU39wI4hEYbneUypEqcyRmRFIx5CC2gNdg3rQr+Zh7/3h6egbBvm33TDQjNQKtj9Tk1HA==" + }, + "node_modules/axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.14.4" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "dependencies": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "engines": { + "node": ">= 8.9" + }, + "peerDependencies": { + "@babel/core": "^7.0.0", + "webpack": ">=2" + } + }, + "node_modules/babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "dependencies": { + "object.assign": "^4.1.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "node_modules/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "node_modules/bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "@popperjs/core": "^2.10.2" + } + }, + "node_modules/bootstrap-cookie-alert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bootstrap-cookie-alert/-/bootstrap-cookie-alert-1.2.1.tgz", + "integrity": "sha512-T4nzcJkrCJCfxbw9eRM93EwO3/seSL/wbjsDLLOdLIhhksb07zhj4NOgNJUwtLc7dkI28ef1KZU9yYzHZMUXvQ==" + }, + "node_modules/bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "dependencies": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "node_modules/bootstrap-icons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.8.1.tgz", + "integrity": "sha512-IXUqislddPJfwq6H+2nTkHyr9epO9h6u1AG0OZCx616w+TgzeoCjfmI3qJMQqt1J586gN2IxzB4M99Ip4sTZ1w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/bootstrap-maxlength": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/bootstrap-maxlength/-/bootstrap-maxlength-1.10.1.tgz", + "integrity": "sha512-VYQosg0ojUNq05PlZcTwETm0E0Aoe/cclRmCC27QrHk/sY0Q75PUvgHYujN0gb2CD3n2olJfPeqx3EGAqpKjww==", + "dependencies": { + "bootstrap": "^4.4.1", + "jquery": "^3.5.1", + "qunit": "^2.10.0" + } + }, + "node_modules/bootstrap-maxlength/node_modules/bootstrap": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/bootstrap" + }, + "peerDependencies": { + "jquery": "1.9.1 - 3", + "popper.js": "^1.16.1" + } + }, + "node_modules/bootstrap-multiselectsplitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bootstrap-multiselectsplitter/-/bootstrap-multiselectsplitter-1.0.4.tgz", + "integrity": "sha512-G1TyuzRUOdcf9iuSoTcYPKVr1waMm6rwoBbDi8/nXM7GX5eF3qZGZXLMeT8tGoaYwuQIsZXGerMtq5VTFQgcHQ==" + }, + "node_modules/boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "dependencies": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/brfs": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", + "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==", + "dependencies": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^3.0.2", + "through2": "^2.0.0" + }, + "bin": { + "brfs": "bin/cmd.js" + } + }, + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "node_modules/brotli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", + "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", + "dependencies": { + "base64-js": "^1.1.2" + } + }, + "node_modules/browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dependencies": { + "resolve": "1.1.7" + } + }, + "node_modules/browser-resolve/node_modules/resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "dependencies": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "node_modules/browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/browserify-optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", + "integrity": "sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk=", + "dependencies": { + "ast-transform": "0.0.0", + "ast-types": "^0.7.0", + "browser-resolve": "^1.8.1" + } + }, + "node_modules/browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "dependencies": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "node_modules/browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "dependencies": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + } + }, + "node_modules/browserify-sign/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/browserify-sign/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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, + "dependencies": { + "pako": "~1.0.5" + } + }, + "node_modules/browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "dependencies": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "node_modules/buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", + "dev": true + }, + "node_modules/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 + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "dependencies": { + "callsites": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-callsite/node_modules/callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "dependencies": { + "caller-callsite": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "dependencies": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/chart.js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==" + }, + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "node_modules/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, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/ckeditor5": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-31.1.0.tgz", + "integrity": "sha512-uuU5JNeiLFIv6oMtSmHdKOmgO8ZjqoSqV/rJWSpc9yxXbhjjs3Gdb6lbF9f0V5OCvQSIBCTtYVYllzfXAXMyqA==", + "dependencies": { + "@ckeditor/ckeditor5-clipboard": "^31.1.0", + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-enter": "^31.1.0", + "@ckeditor/ckeditor5-paragraph": "^31.1.0", + "@ckeditor/ckeditor5-select-all": "^31.1.0", + "@ckeditor/ckeditor5-typing": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-undo": "^31.1.0", + "@ckeditor/ckeditor5-upload": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "@ckeditor/ckeditor5-widget": "^31.1.0" + }, + "engines": { + "node": ">=12.0.0", + "npm": ">=5.7.1" + } + }, + "node_modules/clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 10.0" + } + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "@colors/colors": "1.5.0" + } + }, + "node_modules/clipboard": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", + "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==", + "dependencies": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "dependencies": { + "mimic-response": "^1.0.0" + } + }, + "node_modules/coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "dependencies": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/coa/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/coa/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/coa/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/coa/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/collect.js": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.32.0.tgz", + "integrity": "sha512-Ro0fspulC0J325cgFdkzFEkRDs6MmclMy2Fy5adhdFKg5QqMv1nn1zLpCdAxiehlur6Ep08Wr1f7ldNv+fB6+Q==", + "dev": true + }, + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/color-string": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", + "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", + "dev": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "node_modules/colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", + "dev": true + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "peer": true + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/compression/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/compression/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", + "dev": true, + "dependencies": { + "commander": "^2.9.0" + }, + "bin": { + "concat": "bin/concat" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "engines": [ + "node >= 0.8" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/concat/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "dependencies": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "node_modules/console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/contra": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", + "integrity": "sha1-9TveQtfltZhcrk2ZqNYQUm3o8o0=", + "dependencies": { + "atoa": "1.0.0", + "ticky": "1.0.1" + } + }, + "node_modules/convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "dependencies": { + "safe-buffer": "~5.1.1" + } + }, + "node_modules/cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", + "dev": true + }, + "node_modules/core-js-compat": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.0.tgz", + "integrity": "sha512-WwA7xbfRGrk8BGaaHlakauVXrlYmAIkk8PNGb1FDQS+Rbrewc3pgFfwJFRw6psmJVAll7Px9UHRYE16oRQnwAQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.20.2", + "semver": "7.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-js-compat/node_modules/semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/countup.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.1.0.tgz", + "integrity": "sha512-VanMzLEjkt3Hp/ty5BXikM8s4wE3OH4m1AnFro7THR86nYGRvGfGCoV+zrRJcqTbZi7X1egkLSIeUKDz7+4XLA==" + }, + "node_modules/create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + } + }, + "node_modules/create-ecdh/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "dependencies": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "node_modules/cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crossvent": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/crossvent/-/crossvent-1.5.5.tgz", + "integrity": "sha1-rSCHjkkh6b5z2daXb4suzQ9xoLE=", + "dependencies": { + "custom-event": "^1.0.0" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/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, + "dependencies": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + }, + "engines": { + "node": "*" + } + }, + "node_modules/crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "node_modules/crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/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, + "engines": { + "node": "*" + } + }, + "node_modules/css-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.27.0 || ^5.0.0" + } + }, + "node_modules/css-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "node_modules/css-select/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", + "peer": true + }, + "node_modules/cssnano": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", + "dev": true, + "dependencies": { + "cssnano-preset-default": "^5.2.7", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/cssnano" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-preset-default": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.4", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-util-raw-cache/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/cssnano-util-raw-cache/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "dependencies": { + "css-tree": "^1.1.2" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=" + }, + "node_modules/d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/dash-ast": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", + "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==" + }, + "node_modules/datatables.net": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.11.5.tgz", + "integrity": "sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-bs5": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.11.5.tgz", + "integrity": "sha512-1zyh972GtuK1uAb9h8nP3jJ7f/3UgCDq69LAaZS2bVd4mEHECJ6vrZLacxrkOHOs/q/H3v5sEMeZ46vXz8ox4w==", + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-buttons": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-1.7.1.tgz", + "integrity": "sha512-D2OxZeR18jhSx+l0xcfAJzfUH7l3LHCu0e606fV7+v3hMhphOfljjZYLaiRmGiR9lqO/f5xE/w2a+OtG/QMavw==", + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-buttons-bs5": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-1.7.1.tgz", + "integrity": "sha512-T/TqOrB03tK1ENsjYgGZGMKhVAjzk3F8LXC57j4pEjAq77exknI7KL/kgKpXahZnU5T5mABfNxIOcK2ZxolFRA==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-colreorder": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder/-/datatables.net-colreorder-1.5.5.tgz", + "integrity": "sha512-AUwv5A/87I4hg7GY/WbhRrDhqng9b019jLvvKutHibSPCEtMDWqyNtuP0q8zYoquqU9UQ1/nqXLW/ld8TzIDYQ==", + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-colreorder-bs5": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder-bs5/-/datatables.net-colreorder-bs5-1.5.5.tgz", + "integrity": "sha512-WoOV8deN4E12MrCUtAPhV8rYVrX0xHXzVcvJ79Cf3Lvabt6nf9FD9sxJ7SMjfEVIP0A9lUuEdWinftyodcuPAA==", + "dependencies": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-colreorder": ">=1.5.4", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-datetime": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/datatables.net-datetime/-/datatables.net-datetime-1.1.2.tgz", + "integrity": "sha512-UpmtpQ7oVtMgG0lt0nnwNfYH0YRWOk/SKv4Z+5RI8JX/rJHUQXyt9Li+7U0znmIv+4Vkw8yuUV9n9WRAEOviJQ==" + }, + "node_modules/datatables.net-fixedcolumns": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns/-/datatables.net-fixedcolumns-3.3.3.tgz", + "integrity": "sha512-xo6MeI2xc/Ufk4ffrpao+OiPo8/GPB8cO80gA6NFgYBVw6eP9pPa2NsV+gSWRVr7d3A8iZC7mUZT5WdtliNHEA==", + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedcolumns-bs5": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns-bs5/-/datatables.net-fixedcolumns-bs5-3.3.3.tgz", + "integrity": "sha512-4dDV0ZL5qLd6tfY9ALL/KDgOO2JUFIq+Yp6yaOf+5LkYxRBiTq3EcXwg2IArwtqFRLsGnMjbuFbpDcIFXPVeUg==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedheader": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader/-/datatables.net-fixedheader-3.2.2.tgz", + "integrity": "sha512-2bA4HXaL+vA/HesknSQcvDcSMzzDJx11lrLCy8Om4YpZBNtpvETFTqcqRgUmPYrSN8Eq5+OhmPpYkbzy5Nu11Q==", + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-fixedheader-bs5": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-3.2.2.tgz", + "integrity": "sha512-6CftSIMWv5p2gzeEWKdsbEFHkU6/egS2svNxzqCOdgKSNfx4Mx7jkrCDKrCehh8CWlFi6WtWo7qg//GIAReQ+g==", + "dependencies": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-fixedheader": ">=3.2.0", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-plugins": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/datatables.net-plugins/-/datatables.net-plugins-1.11.5.tgz", + "integrity": "sha512-+Rsf/fyLG8GyFqp7Bvd1ElqWGQO3NPsx2VADn9X8QaZbctshGVW0sqvR5V7iHHgY6OY1LR0+t6qIMhan9BM4gA==" + }, + "node_modules/datatables.net-responsive": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.2.9.tgz", + "integrity": "sha512-C+mOY/mG17zzaYPtgqAOsC4JlGddGkKmO/ADNEtNZ41bcPV1/3jJzkOWT3DCZ400NmkXLDz4WObWlPT8WCgfzg==", + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-responsive-bs5": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/datatables.net-responsive-bs5/-/datatables.net-responsive-bs5-2.2.9.tgz", + "integrity": "sha512-2g+gFyQCek/OR1RQTVPVq42NUQ+cGGeGKV6+qALyO6MCGYqJ4oKNb368EmvyHGCCRdEngiaC/1eesmupF0q20w==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowgroup": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup/-/datatables.net-rowgroup-1.1.4.tgz", + "integrity": "sha512-Oe9mL3X8RXLOQZblJVWTYD0melyw3xoPeQ3T2x1k2guTFxob8/2caKuzn95oFJau6tvbhsvY/QneTaCzHRKnnQ==", + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowgroup-bs5": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup-bs5/-/datatables.net-rowgroup-bs5-1.1.4.tgz", + "integrity": "sha512-74A5jKJrZ6FoSNo1fCGyI0xCUyEQVyMEBLhUWgsLC5L8haKOE2eA94fyPAXShcyWg4/iATwpwgJDv6rZSzCQ4g==", + "dependencies": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-rowgroup": ">=1.1.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowreorder": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder/-/datatables.net-rowreorder-1.2.8.tgz", + "integrity": "sha512-gFNKMa5DtigbjhSs96ZKT3uICC1z87EuLUIYLVPEXHc7v/WVOiQ3AaRvIQtExORPi/jQzxEoO5wO9UGZ0ldsUQ==", + "dependencies": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-rowreorder-bs5": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder-bs5/-/datatables.net-rowreorder-bs5-1.2.8.tgz", + "integrity": "sha512-5aiTtKokn+dHGcVEfUR9Mp6yCj39KiSddZKEJFrWqXxbZSeigE7X7ac82BUw9Cw+9Vpn59GhmUeguQ5XS2HUrg==", + "dependencies": { + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-scroller": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/datatables.net-scroller/-/datatables.net-scroller-2.0.5.tgz", + "integrity": "sha512-gXxQcbUgDURcxGUCIj+5YBepJJcWWGJgFlewGy/odaAi+H1Ol8TKcXoQD20y2zcO7l5DWEbzNwHwN0bciBONPw==", + "dependencies": { + "datatables.net": ">=1.10.25", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-scroller-bs5": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/datatables.net-scroller-bs5/-/datatables.net-scroller-bs5-2.0.5.tgz", + "integrity": "sha512-hnF/q81WGwAmwVHxlSupkrxJD0UJ1rythh/+fUKkisFMS/BwXA06DxnldbMu9pZGqN0IsaJlaEHDojnSpBhu2w==", + "dependencies": { + "datatables.net-bs5": ">=1.10.25", + "datatables.net-scroller": ">=2.0.4", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-select": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/datatables.net-select/-/datatables.net-select-1.3.4.tgz", + "integrity": "sha512-iQ/dBHIWkhfCBxzNdtef79seCNO1ZsA5zU0Uiw3R2mlwmjcJM1xn6pFNajke6SX7VnlzndGDHGqzzEljSqz4pA==", + "dependencies": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "node_modules/datatables.net-select-bs5": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/datatables.net-select-bs5/-/datatables.net-select-bs5-1.3.4.tgz", + "integrity": "sha512-fJyFVtDzo4P4oIOUU2vSvYLuegDdSoqJrqPbFaI0DX2O/MYg2H9hXo09UZ7No/pxBJ1NBRCm8Q3U9uyoCBK7RQ==", + "dependencies": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-select": ">=1.3.3", + "jquery": ">=1.7" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "dependencies": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "dependencies": { + "execa": "^5.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dependencies": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "dependencies": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/del/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=", + "dev": true + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "node_modules/dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, + "node_modules/diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + } + }, + "node_modules/diffie-hellman/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/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 + }, + "node_modules/dns-packet": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/dom-serializer/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.4", + "npm": ">=1.2" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "dependencies": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/domutils/node_modules/domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "node_modules/dragula": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/dragula/-/dragula-3.7.3.tgz", + "integrity": "sha512-/rRg4zRhcpf81TyDhaHLtXt6sEywdfpv1cRUMeFFy7DuypH2U0WUL0GTdyAQvXegviT4PJK4KuMmOaIDpICseQ==", + "dependencies": { + "contra": "1.9.4", + "crossvent": "1.5.5" + } + }, + "node_modules/dropzone": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz", + "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA==" + }, + "node_modules/duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "dependencies": { + "readable-stream": "^2.0.2" + } + }, + "node_modules/duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", + "dev": true + }, + "node_modules/electron-to-chromium": { + "version": "1.4.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", + "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "dev": true + }, + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true, + "bin": { + "envinfo": "dist/cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", + "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es5-ext": { + "version": "0.10.60", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.60.tgz", + "integrity": "sha512-jpKNXIt60htYG59/9FGf2PYT3pwMpnEbNKysU+k/4FGwyGtMotOvcZOuW+EmXXYASRqYSXQfGL5cVIthOTgbkg==", + "hasInstallScript": true, + "dependencies": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-map/-/es6-map-0.1.5.tgz", + "integrity": "sha1-kTbgUD3MBqMBaQ8LsU/042TpSfA=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "node_modules/es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha1-84kl8jyz4+jObNqP93T867sJDN4=" + }, + "node_modules/es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + } + }, + "node_modules/es6-set/node_modules/es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/es6-shim": { + "version": "0.35.6", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.6.tgz", + "integrity": "sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==" + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", + "dev": true + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz", + "integrity": "sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E=", + "dependencies": { + "esprima": "~1.0.4", + "estraverse": "~1.5.0", + "esutils": "~1.0.0" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=0.4.0" + }, + "optionalDependencies": { + "source-map": "~0.1.30" + } + }, + "node_modules/escodegen/node_modules/esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "optional": true, + "dependencies": { + "amdefine": ">=0.0.4" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-scope/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esri-leaflet": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.8.tgz", + "integrity": "sha512-mLb4pRfDAbkG1YhuajD22erLXIAtrF1R32hmgmlJNI3t47n6KjTppCb8lViia0O7+GDORXFuJ9Lj9RkpsaKhSA==", + "dependencies": { + "@terraformer/arcgis": "^2.1.0", + "tiny-binary-search": "^1.0.3" + }, + "peerDependencies": { + "leaflet": "^1.0.0" + } + }, + "node_modules/esri-leaflet-geocoder": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esri-leaflet-geocoder/-/esri-leaflet-geocoder-3.1.3.tgz", + "integrity": "sha512-XuorBaPKOq2XBswyWS3fX4I0EyGamdQsao/NQbn+9wlCZtpDrpIn2iKLY7x4uOaPC4wCjE/rskli8UMCVwlZrg==", + "dependencies": { + "esri-leaflet": "^3.0.2", + "leaflet": "^1.0.0" + } + }, + "node_modules/estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/estree-is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", + "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha1-34xp7vFkeSPHFXuc6DhAYQsCzDk=", + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "node_modules/eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/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, + "dependencies": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/execa/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/express/node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha1-ml9pkFGx5wczKPKgCJaLZOopVdI=", + "dev": true + }, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "dependencies": { + "type": "^2.5.0" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "node_modules/fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/file-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/findup": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", + "dev": true, + "dependencies": { + "colors": "~0.6.0-1", + "commander": "~2.1.0" + }, + "bin": { + "findup": "bin/findup.js" + }, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/findup/node_modules/commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true, + "engines": { + "node": ">= 0.6.x" + } + }, + "node_modules/flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" + }, + "node_modules/flot": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/flot/-/flot-4.2.2.tgz", + "integrity": "sha512-Strct/A27o0TA25X7Z0pxKhwK4djiP1Kjeqj0tkiqrkRu1qYPqfbp5BYuxEL8CWDNtj85Uc0PnG2E2plo1+VMg==" + }, + "node_modules/follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://www.patreon.com/infusion" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/fslightbox": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fslightbox/-/fslightbox-3.3.1.tgz", + "integrity": "sha512-r8mS2lnqw+4F7fQmIXZ4Y+tulxqGsZyG7wzMhWKl8MHvVZRJnclUyt+n+hfTkUa+e1bvlzpw4tY/X9mwqC4wCg==" + }, + "node_modules/fullcalendar": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.0.tgz", + "integrity": "sha512-R3yQMKJtP6jWZ3o9fNB0WUOl6Oi+vus3ciLtt3eva7ISutkMm6nE4lA+xhfTS3OIevxVQOv0O646R6G8o7sMXA==" + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "dependencies": { + "ini": "2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "node_modules/globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "dependencies": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "node_modules/good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "dependencies": { + "delegate": "^3.1.2" + } + }, + "node_modules/got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "dependencies": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "node_modules/handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/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, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/hash-sum": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/hash-sum/-/hash-sum-1.0.2.tgz", + "integrity": "sha1-M7QHd3VMZDJXPBIMw4CLvRDUfwQ=", + "dev": true + }, + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "dev": true + }, + "node_modules/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, + "dependencies": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "node_modules/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, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "node_modules/hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "node_modules/html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "node_modules/html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "dev": true, + "dependencies": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/html-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "dependencies": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "bin": { + "html-minifier-terser": "cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/html-minifier-terser/node_modules/clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "dependencies": { + "source-map": "~0.6.0" + }, + "engines": { + "node": ">= 4.0" + } + }, + "node_modules/html-minifier-terser/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/html-minifier-terser/node_modules/terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "dependencies": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/html-minifier-terser/node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", + "dev": true + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.5.tgz", + "integrity": "sha512-ORErEaxkjyrhifofwCuQttHPUSestLtiPDwV0qQOFB0ww6695H953wIGRnkakw1K+GAP+t8/RPbfDB75RFL4Fg==", + "dev": true, + "dependencies": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "@types/express": "^4.17.13" + }, + "peerDependenciesMeta": { + "@types/express": { + "optional": true + } + } + }, + "node_modules/http-proxy/node_modules/eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "node_modules/imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "dev": true, + "dependencies": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "dev": true, + "dependencies": { + "loader-utils": "^1.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "imagemin": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/img-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/img-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "node_modules/immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=", + "engines": { + "node": ">=4" + } + }, + "node_modules/import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/inputmask": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/inputmask/-/inputmask-5.0.7.tgz", + "integrity": "sha512-rUxbRDS25KEib+c/Ow+K01oprU/+EK9t9SOPC8ov94/ftULGDqj1zOgRU/Hko6uzoKRMdwCfuhAafJ/Wk2wffQ==" + }, + "node_modules/internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "node_modules/is-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dependencies": { + "ci-info": "^2.0.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "dependencies": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "dependencies": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/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, + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/jkanban": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jkanban/-/jkanban-1.3.1.tgz", + "integrity": "sha512-5M2nQuLnYTW8ZWAj0Gzes0BVYKE2BmpvJ+wc4Kv5/WZ4A+NYH/Njw3UJbW8hnClgrRVyHbeVNe3Q4gvZzoNjaw==", + "dependencies": { + "dragula": "^3.7.3", + "npm-watch": "^0.7.0" + } + }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/jquery.repeater": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jquery.repeater/-/jquery.repeater-1.2.1.tgz", + "integrity": "sha1-6ihKaTdL9EeNwuYK9ecFsWnLFRQ=" + }, + "node_modules/js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/js-yaml/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jstree": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/jstree/-/jstree-3.3.12.tgz", + "integrity": "sha512-vHNLWkUr02ZYH7RcIckvhtLUtneWCVEtIKpIp2G9WtRh01ITv18EoNtNQcFG3ozM+oK6wp1Z300gSLXNQWCqGA==", + "dependencies": { + "jquery": ">=1.9.1" + } + }, + "node_modules/jszip": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.1.tgz", + "integrity": "sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "node_modules/junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/keycharm": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.4.0.tgz", + "integrity": "sha512-TyQTtsabOVv3MeOpR92sIKk/br9wxS+zGj4BG7CR8YbK4jM3tyIBaF0zhzeBUMx36/Q/iQLOKKOT+3jOQtemRQ==", + "peer": true + }, + "node_modules/keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "dependencies": { + "json-buffer": "3.0.0" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/laravel-mix": { + "version": "6.0.43", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.43.tgz", + "integrity": "sha512-SOO+C1aOpVSAUs30DYc6k/e0QJxfyD42aav4IKJtE5UZKw9ROWcVzkVoek2J475jNeNnl7GkoLAC27gejZsQ8g==", + "dev": true, + "dependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" + }, + "bin": { + "laravel-mix": "bin/cli.js", + "mix": "bin/cli.js" + }, + "engines": { + "node": ">=12.14.0" + }, + "peerDependencies": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "postcss": "^8.3.11", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1" + } + }, + "node_modules/latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "dependencies": { + "package-json": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/leaflet": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.8.0.tgz", + "integrity": "sha512-gwhMjFCQiYs3x/Sf+d49f10ERXaEFCPr+nVTryhAW8DWbMGqJqt9G4XuIaHmFW08zYvhgdzqXGr8AlW8v8dQkA==" + }, + "node_modules/levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/line-awesome": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/line-awesome/-/line-awesome-1.3.0.tgz", + "integrity": "sha512-Y0YHksL37ixDsHz+ihCwOtF5jwJgCDxQ3q+zOVgaSW8VugHGTsZZXMacPYZB1/JULBi6BAuTCTek+4ZY/UIwcw==" + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "node_modules/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 + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "dependencies": { + "tslib": "^2.0.3" + } + }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "dependencies": { + "sourcemap-codec": "^1.4.1" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "dependencies": { + "fs-monkey": "1.0.3" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/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 + }, + "node_modules/merge-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/merge-source-map/node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/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, + "dependencies": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "bin": { + "miller-rabin": "bin/miller-rabin" + } + }, + "node_modules/miller-rabin/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.4.0 || ^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/moment": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "node_modules/no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "dependencies": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node_modules/node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true, + "engines": { + "node": ">= 6.13.0" + } + }, + "node_modules/node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "dependencies": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node_modules/node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dev": true, + "dependencies": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node_modules/node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "node_modules/node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "hasInstallScript": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=8.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/nodemon/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "engines": { + "node": ">=4" + } + }, + "node_modules/nodemon/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/nodemon/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/nouislider": { + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-15.5.1.tgz", + "integrity": "sha512-V8LNPhLPXLNjkgXLfyzDRGDeKvzZeaiIx5YagMiHnOMqgcRzT75jqvEZYXbSrEffXouwcEShSd8Vllm2Nkwqew==" + }, + "node_modules/npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "bundleDependencies": [ + "@isaacs/string-locale-compare", + "@npmcli/arborist", + "@npmcli/ci-detect", + "@npmcli/config", + "@npmcli/map-workspaces", + "@npmcli/package-json", + "@npmcli/run-script", + "abbrev", + "ansicolors", + "ansistyles", + "archy", + "cacache", + "chalk", + "chownr", + "cli-columns", + "cli-table3", + "columnify", + "fastest-levenshtein", + "glob", + "graceful-fs", + "hosted-git-info", + "ini", + "init-package-json", + "is-cidr", + "json-parse-even-better-errors", + "libnpmaccess", + "libnpmdiff", + "libnpmexec", + "libnpmfund", + "libnpmhook", + "libnpmorg", + "libnpmpack", + "libnpmpublish", + "libnpmsearch", + "libnpmteam", + "libnpmversion", + "make-fetch-happen", + "minipass", + "minipass-pipeline", + "mkdirp", + "mkdirp-infer-owner", + "ms", + "node-gyp", + "nopt", + "npm-audit-report", + "npm-install-checks", + "npm-package-arg", + "npm-pick-manifest", + "npm-profile", + "npm-registry-fetch", + "npm-user-validate", + "npmlog", + "opener", + "pacote", + "parse-conflict-json", + "qrcode-terminal", + "read", + "read-package-json", + "read-package-json-fast", + "readdir-scoped-modules", + "rimraf", + "semver", + "ssri", + "tar", + "text-table", + "tiny-relative-date", + "treeverse", + "validate-npm-package-name", + "which", + "write-file-atomic" + ], + "dependencies": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "bin": { + "npm": "bin/npm-cli.js", + "npx": "bin/npx-cli.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm-watch": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.7.0.tgz", + "integrity": "sha512-AN2scNyMljMGkn0mIkaRRk19I7Vx0qTK6GmsIcDblX5YRbSsoJORTAtrceICSx7Om9q48NWcwm/R0t6E7F4Ocg==", + "dependencies": { + "nodemon": "^2.0.3", + "through2": "^2.0.0" + }, + "bin": { + "npm-watch": "cli.js" + } + }, + "node_modules/npm/node_modules/@gar/promisify": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/@isaacs/string-locale-compare": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/arborist": { + "version": "2.9.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + }, + "bin": { + "arborist": "bin/index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/ci-detect": { + "version": "1.3.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/config": { + "version": "2.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/disparity-colors": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "ansi-styles": "^4.3.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/fs": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "node_modules/npm/node_modules/@npmcli/git": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "node_modules/npm/node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/@npmcli/map-workspaces": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "node_modules/npm/node_modules/@npmcli/move-file": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/@npmcli/name-from-folder": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/node-gyp": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/@npmcli/package-json": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "node_modules/npm/node_modules/@npmcli/promise-spawn": { + "version": "1.3.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "infer-owner": "^1.0.4" + } + }, + "node_modules/npm/node_modules/@npmcli/run-script": { + "version": "1.8.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "node_modules/npm/node_modules/@tootallnate/once": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/abbrev": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/agent-base": { + "version": "6.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/npm/node_modules/agentkeepalive": { + "version": "4.1.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/npm/node_modules/aggregate-error": { + "version": "3.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/ajv": { + "version": "6.12.6", + "inBundle": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/npm/node_modules/ansi-regex": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ansi-styles": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/npm/node_modules/ansicolors": { + "version": "0.3.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ansistyles": { + "version": "0.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aproba": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/archy": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/are-we-there-yet": { + "version": "1.1.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/asap": { + "version": "2.0.6", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/asn1": { + "version": "0.2.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/npm/node_modules/assert-plus": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/asynckit": { + "version": "0.4.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/aws-sign2": { + "version": "0.7.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/aws4": { + "version": "1.11.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/balanced-match": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/npm/node_modules/bin-links": { + "version": "2.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/binary-extensions": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/brace-expansion": { + "version": "1.1.11", + "inBundle": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/npm/node_modules/builtins": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/cacache": { + "version": "15.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/caseless": { + "version": "0.12.0", + "inBundle": true, + "license": "Apache-2.0" + }, + "node_modules/npm/node_modules/chalk": { + "version": "4.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/npm/node_modules/chownr": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/cidr-regex": { + "version": "3.1.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "ip-regex": "^4.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/clean-stack": { + "version": "2.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/cli-columns": { + "version": "3.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/cli-table3": { + "version": "0.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "engines": { + "node": "10.* || >= 12.*" + }, + "optionalDependencies": { + "colors": "^1.1.2" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/ansi-regex": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/string-width": { + "version": "4.2.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/cli-table3/node_modules/strip-ansi": { + "version": "6.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/clone": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/cmd-shim": { + "version": "4.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mkdirp-infer-owner": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/code-point-at": { + "version": "1.1.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/color-convert": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/npm/node_modules/color-name": { + "version": "1.1.4", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/color-support": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/npm/node_modules/colors": { + "version": "1.4.0", + "inBundle": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/npm/node_modules/columnify": { + "version": "1.5.4", + "inBundle": true, + "license": "MIT", + "dependencies": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "node_modules/npm/node_modules/combined-stream": { + "version": "1.0.8", + "inBundle": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/npm/node_modules/common-ancestor-path": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/concat-map": { + "version": "0.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/console-control-strings": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/core-util-is": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/dashdash": { + "version": "1.14.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm/node_modules/debug": { + "version": "4.3.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/npm/node_modules/debug/node_modules/ms": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/debuglog": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/defaults": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + } + }, + "node_modules/npm/node_modules/delayed-stream": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/npm/node_modules/delegates": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/depd": { + "version": "1.1.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/dezalgo": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/diff": { + "version": "5.0.0", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/npm/node_modules/ecc-jsbn": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/npm/node_modules/emoji-regex": { + "version": "8.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/encoding": { + "version": "0.1.13", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/npm/node_modules/env-paths": { + "version": "2.2.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/err-code": { + "version": "2.0.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extend": { + "version": "3.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/extsprintf": { + "version": "1.3.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-deep-equal": { + "version": "3.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/fastest-levenshtein": { + "version": "1.0.12", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/forever-agent": { + "version": "0.6.1", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/fs-minipass": { + "version": "2.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/fs.realpath": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/function-bind": { + "version": "1.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/gauge": { + "version": "3.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/getpass": { + "version": "0.1.7", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/npm/node_modules/glob": { + "version": "7.2.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/graceful-fs": { + "version": "4.2.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/har-schema": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/har-validator": { + "version": "5.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/has": { + "version": "1.0.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/npm/node_modules/has-flag": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/has-unicode": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/hosted-git-info": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/http-cache-semantics": { + "version": "4.1.0", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/http-proxy-agent": { + "version": "4.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/http-signature": { + "version": "1.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + }, + "engines": { + "node": ">=0.8", + "npm": ">=1.3.7" + } + }, + "node_modules/npm/node_modules/https-proxy-agent": { + "version": "5.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/humanize-ms": { + "version": "1.2.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/npm/node_modules/iconv-lite": { + "version": "0.6.3", + "inBundle": true, + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ignore-walk": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minimatch": "^3.0.4" + } + }, + "node_modules/npm/node_modules/imurmurhash": { + "version": "0.1.4", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/npm/node_modules/indent-string": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/infer-owner": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/inflight": { + "version": "1.0.6", + "inBundle": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/inherits": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/ini": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/init-package-json": { + "version": "2.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ip": { + "version": "1.1.5", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/ip-regex": { + "version": "4.3.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/is-cidr": { + "version": "4.0.2", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "cidr-regex": "^3.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/is-core-module": { + "version": "2.7.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/npm/node_modules/is-fullwidth-code-point": { + "version": "2.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/is-lambda": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/is-typedarray": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/isexe": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/isstream": { + "version": "0.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsbn": { + "version": "0.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-schema": { + "version": "0.2.3", + "inBundle": true + }, + "node_modules/npm/node_modules/json-schema-traverse": { + "version": "0.4.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/json-stringify-nice": { + "version": "1.1.4", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/json-stringify-safe": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/jsonparse": { + "version": "1.3.1", + "engines": [ + "node >= 0.2.0" + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/jsprim": { + "version": "1.4.1", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "node_modules/npm/node_modules/just-diff": { + "version": "3.1.1", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/just-diff-apply": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/libnpmaccess": { + "version": "4.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmdiff": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmexec": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmfund": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/arborist": "^2.5.0" + } + }, + "node_modules/npm/node_modules/libnpmhook": { + "version": "6.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmorg": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpack": { + "version": "2.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmpublish": { + "version": "4.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmsearch": { + "version": "3.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmteam": { + "version": "2.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/libnpmversion": { + "version": "1.2.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "node_modules/npm/node_modules/lru-cache": { + "version": "6.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/make-fetch-happen": { + "version": "9.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/mime-db": { + "version": "1.49.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/mime-types": { + "version": "2.1.32", + "inBundle": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.49.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/minimatch": { + "version": "3.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/minipass": { + "version": "3.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-collect": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-fetch": { + "version": "1.4.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "optionalDependencies": { + "encoding": "^0.1.12" + } + }, + "node_modules/npm/node_modules/minipass-flush": { + "version": "1.0.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/minipass-json-stream": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/npm/node_modules/minipass-pipeline": { + "version": "1.2.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minipass-sized": { + "version": "1.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/minizlib": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/mkdirp": { + "version": "1.0.4", + "inBundle": true, + "license": "MIT", + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/mkdirp-infer-owner": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/ms": { + "version": "2.1.3", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/mute-stream": { + "version": "0.0.8", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/negotiator": { + "version": "0.6.2", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/npm/node_modules/node-gyp": { + "version": "7.1.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": ">= 10.12.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/aproba": { + "version": "1.2.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/node-gyp/node_modules/gauge": { + "version": "2.7.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "number-is-nan": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/npmlog": { + "version": "4.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "node_modules/npm/node_modules/node-gyp/node_modules/string-width": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT", + "dependencies": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/nopt": { + "version": "5.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "abbrev": "1" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/normalize-package-data": { + "version": "3.0.3", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-audit-report": { + "version": "2.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chalk": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-bundled": { + "version": "1.1.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm/node_modules/npm-install-checks": { + "version": "4.0.0", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/npm-package-arg": { + "version": "8.1.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-packlist": { + "version": "2.2.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-pick-manifest": { + "version": "6.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "node_modules/npm/node_modules/npm-profile": { + "version": "5.0.4", + "inBundle": true, + "license": "ISC", + "dependencies": { + "npm-registry-fetch": "^11.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-registry-fetch": { + "version": "11.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/npm-user-validate": { + "version": "1.0.1", + "inBundle": true, + "license": "BSD-2-Clause" + }, + "node_modules/npm/node_modules/npmlog": { + "version": "5.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + } + }, + "node_modules/npm/node_modules/npmlog/node_modules/are-we-there-yet": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/number-is-nan": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/oauth-sign": { + "version": "0.9.0", + "inBundle": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/object-assign": { + "version": "4.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/once": { + "version": "1.4.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/npm/node_modules/opener": { + "version": "1.5.2", + "inBundle": true, + "license": "(WTFPL OR MIT)", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/npm/node_modules/p-map": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm/node_modules/pacote": { + "version": "11.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/parse-conflict-json": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "node_modules/npm/node_modules/path-is-absolute": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/performance-now": { + "version": "2.1.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/proc-log": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-all-reject-late": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-call-limit": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC", + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/promise-inflight": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/promise-retry": { + "version": "2.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/promzard": { + "version": "0.3.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "read": "1" + } + }, + "node_modules/npm/node_modules/psl": { + "version": "1.8.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/punycode": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/npm/node_modules/qrcode-terminal": { + "version": "0.12.0", + "inBundle": true, + "bin": { + "qrcode-terminal": "bin/qrcode-terminal.js" + } + }, + "node_modules/npm/node_modules/qs": { + "version": "6.5.2", + "inBundle": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/npm/node_modules/read": { + "version": "1.0.7", + "inBundle": true, + "license": "ISC", + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/read-cmd-shim": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/read-package-json": { + "version": "4.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/read-package-json-fast": { + "version": "2.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/readable-stream": { + "version": "3.6.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/readdir-scoped-modules": { + "version": "1.1.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "node_modules/npm/node_modules/request": { + "version": "2.88.2", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/npm/node_modules/request/node_modules/form-data": { + "version": "2.3.3", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/npm/node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "inBundle": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/npm/node_modules/retry": { + "version": "0.12.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm/node_modules/rimraf": { + "version": "3.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm/node_modules/safe-buffer": { + "version": "5.2.1", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/safer-buffer": { + "version": "2.1.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/semver": { + "version": "7.3.5", + "inBundle": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm/node_modules/set-blocking": { + "version": "2.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/signal-exit": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/smart-buffer": { + "version": "4.2.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks": { + "version": "2.6.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/npm/node_modules/socks-proxy-agent": { + "version": "6.1.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/spdx-correct": { + "version": "3.1.1", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-exceptions": { + "version": "2.3.0", + "inBundle": true, + "license": "CC-BY-3.0" + }, + "node_modules/npm/node_modules/spdx-expression-parse": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/npm/node_modules/spdx-license-ids": { + "version": "3.0.10", + "inBundle": true, + "license": "CC0-1.0" + }, + "node_modules/npm/node_modules/sshpk": { + "version": "1.16.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + }, + "bin": { + "sshpk-conv": "bin/sshpk-conv", + "sshpk-sign": "bin/sshpk-sign", + "sshpk-verify": "bin/sshpk-verify" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/ssri": { + "version": "8.0.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/string_decoder": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/npm/node_modules/string-width": { + "version": "2.1.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/ansi-regex": { + "version": "3.0.0", + "inBundle": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/string-width/node_modules/strip-ansi": { + "version": "4.0.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm/node_modules/stringify-package": { + "version": "1.0.1", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/strip-ansi": { + "version": "3.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm/node_modules/supports-color": { + "version": "7.2.0", + "inBundle": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npm/node_modules/tar": { + "version": "6.1.11", + "inBundle": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/npm/node_modules/text-table": { + "version": "0.2.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/tiny-relative-date": { + "version": "1.3.0", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/treeverse": { + "version": "1.0.4", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/tunnel-agent": { + "version": "0.6.0", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm/node_modules/tweetnacl": { + "version": "0.14.5", + "inBundle": true, + "license": "Unlicense" + }, + "node_modules/npm/node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "inBundle": true, + "license": "MIT", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/npm/node_modules/unique-filename": { + "version": "1.1.1", + "inBundle": true, + "license": "ISC", + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/npm/node_modules/unique-slug": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/npm/node_modules/uri-js": { + "version": "4.4.1", + "inBundle": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/npm/node_modules/util-deprecate": { + "version": "1.0.2", + "inBundle": true, + "license": "MIT" + }, + "node_modules/npm/node_modules/uuid": { + "version": "3.4.0", + "inBundle": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/npm/node_modules/validate-npm-package-license": { + "version": "3.0.4", + "inBundle": true, + "license": "Apache-2.0", + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/npm/node_modules/validate-npm-package-name": { + "version": "3.0.0", + "inBundle": true, + "license": "ISC", + "dependencies": { + "builtins": "^1.0.3" + } + }, + "node_modules/npm/node_modules/verror": { + "version": "1.10.0", + "engines": [ + "node >=0.6.0" + ], + "inBundle": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/npm/node_modules/walk-up-path": { + "version": "1.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/wcwidth": { + "version": "1.0.1", + "inBundle": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/npm/node_modules/which": { + "version": "2.0.2", + "inBundle": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/npm/node_modules/wide-align": { + "version": "1.1.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "string-width": "^1.0.2 || 2" + } + }, + "node_modules/npm/node_modules/wrappy": { + "version": "1.0.2", + "inBundle": true, + "license": "ISC" + }, + "node_modules/npm/node_modules/write-file-atomic": { + "version": "3.0.3", + "inBundle": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/npm/node_modules/yallist": { + "version": "4.0.0", + "inBundle": true, + "license": "ISC" + }, + "node_modules/nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dev": true, + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dependencies": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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 + }, + "node_modules/p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "dependencies": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "dependencies": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/package-json/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "node_modules/param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "dependencies": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "dependencies": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "dependencies": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "node_modules/path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/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 + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "engines": { + "node": ">=8" + } + }, + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "dependencies": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + }, + "engines": { + "node": ">=0.12" + } + }, + "node_modules/pdfmake": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.5.tgz", + "integrity": "sha512-NlayjehMtuZEdw2Lyipf/MxOCR2vATZQ7jn8cH0/dHwsNb+mqof9/6SW4jZT5p+So4qz+0mD21KG81+dDQSEhA==", + "dependencies": { + "@foliojs-fork/linebreak": "^1.1.1", + "@foliojs-fork/pdfkit": "^0.13.0", + "iconv-lite": "^0.6.3", + "xmldoc": "^1.1.2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, + "node_modules/popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "deprecated": "You can find the new Popper v2 at @popperjs/core, this package is dedicated to the legacy v1", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, + "node_modules/portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "dependencies": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "engines": { + "node": ">= 0.12.0" + } + }, + "node_modules/portfinder/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" + } + }, + "node_modules/postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "dependencies": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + }, + "engines": { + "node": ">= 10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-merge-longhand": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "dependencies": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, + "engines": { + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "dependencies": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "dependencies": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=", + "engines": { + "node": ">=4" + } + }, + "node_modules/pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prism-themes": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/prism-themes/-/prism-themes-1.9.0.tgz", + "integrity": "sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==" + }, + "node_modules/prismjs": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", + "dev": true, + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/propagating-hammerjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-2.0.1.tgz", + "integrity": "sha512-PH3zG5whbSxMocphXJzVtvKr+vWAgfkqVvtuwjSJ/apmEACUoiw6auBAT5HYXpZOR0eGcTAfYG5Yl8h91O5Elg==", + "peer": true, + "peerDependencies": { + "@egjs/hammerjs": "^2.0.17" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "node_modules/public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "dependencies": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "node_modules/public-encrypt/node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "node_modules/pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "dependencies": { + "escape-goat": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/querystring-es3": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", + "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", + "dev": true, + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "dependencies": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + } + }, + "node_modules/quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "dependencies": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/quill/node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/qunit": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.18.2.tgz", + "integrity": "sha512-Ux+x9pIU38/F+r3jOl35QzGHPPupMifUvhczCqHgzYWX76fCjPg6VqM84ox1D57fhAXHtpS4Jl91EV8gDoCHPg==", + "dependencies": { + "commander": "7.2.0", + "node-watch": "0.7.3", + "tiny-glob": "0.2.9" + }, + "bin": { + "qunit": "bin/qunit.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "dependencies": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + }, + "bin": { + "quote-stream": "bin/cmd.js" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/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, + "dependencies": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "dependencies": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/raw-body/node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "node_modules/rc/node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "dependencies": { + "resolve": "^1.9.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "node_modules/regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "node_modules/regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "dependencies": { + "rc": "^1.2.8" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "dev": true, + "dependencies": { + "jsesc": "~0.5.0" + }, + "bin": { + "regjsparser": "bin/parser" + } + }, + "node_modules/regjsparser/node_modules/jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/relateurl": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha1-VNvzd+UUQKypCkzSdGANP/LYiKk=", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/replace-in-file-webpack-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/replace-in-file-webpack-plugin/-/replace-in-file-webpack-plugin-1.0.6.tgz", + "integrity": "sha512-+KRgNYL2nbc6nza6SeF+wTBNkovuHFTfJF8QIEqZg5MbwkYpU9no0kH2YU354wvY/BK8mAC2UKoJ7q+sJTvciw==", + "dev": true + }, + "node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", + "dev": true + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dependencies": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dev": true, + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=8.9" + }, + "peerDependencies": { + "rework": "1.0.1", + "rework-visit": "1.0.0" + }, + "peerDependenciesMeta": { + "rework": { + "optional": true + }, + "rework-visit": { + "optional": true + } + } + }, + "node_modules/resolve-url-loader/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/resolve-url-loader/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "dependencies": { + "lowercase-keys": "^1.0.0" + } + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "node_modules/rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "node_modules/rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dev": true, + "dependencies": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/rtlcss/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rtlcss/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/sass": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.1.tgz", + "integrity": "sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw==", + "dev": true, + "dependencies": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + }, + "bin": { + "sass": "sass.js" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "fibers": ">= 3.1.0", + "node-sass": "^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0", + "sass": "^1.3.0", + "sass-embedded": "*", + "webpack": "^5.0.0" + }, + "peerDependenciesMeta": { + "fibers": { + "optional": true + }, + "node-sass": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + } + } + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 8.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/scope-analyzer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", + "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", + "dependencies": { + "array-from": "^2.1.1", + "dash-ast": "^2.0.1", + "es6-map": "^0.1.5", + "es6-set": "^0.1.5", + "es6-symbol": "^3.1.1", + "estree-is-function": "^1.0.0", + "get-assigned-identifiers": "^1.1.0" + } + }, + "node_modules/select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "node_modules/select2": { + "version": "4.1.0-rc.0", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.1.0-rc.0.tgz", + "integrity": "sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A==" + }, + "node_modules/selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "dependencies": { + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/semver-diff/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/send/node_modules/debug/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/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, + "dependencies": { + "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.17", + "parseurl": "~1.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-index/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/serve-index/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-index/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/serve-index/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "node_modules/serve-index/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/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=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "node_modules/sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + }, + "bin": { + "sha.js": "bin.js" + } + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/simple-swizzle/node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/smooth-scroll": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/smooth-scroll/-/smooth-scroll-16.1.3.tgz", + "integrity": "sha512-ca9U+neJS/cbdScTBuUTCZvUWNF2EuMCk7oAx3ImdeRK5FPm+xRo9XsVHIkeEVkn7MBRx+ufVEhyveM4ZhaTGA==" + }, + "node_modules/sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "dependencies": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "node_modules/source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "dev": true + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "node_modules/spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + } + }, + "node_modules/spdy-transport/node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "node_modules/stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "node_modules/static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "dependencies": { + "escodegen": "^1.11.1" + } + }, + "node_modules/static-eval/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-eval/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/static-eval/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/static-module": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz", + "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==", + "dependencies": { + "acorn-node": "^1.3.0", + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "^1.11.1", + "has": "^1.0.1", + "magic-string": "0.25.1", + "merge-source-map": "1.0.4", + "object-inspect": "^1.6.0", + "readable-stream": "~2.3.3", + "scope-analyzer": "^2.0.1", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.5", + "through2": "~2.0.3" + } + }, + "node_modules/static-module/node_modules/escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=4.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/static-module/node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/static-module/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/std-env": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", + "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", + "dev": true + }, + "node_modules/stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "dependencies": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "node_modules/stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "dependencies": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "dependencies": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/style-loader/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "dependencies": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^10 || ^12 || >=14.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "dependencies": { + "svg.js": "^2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=", + "dependencies": { + "svg.js": ">=2.3.x" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "node_modules/svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "dependencies": { + "svg.js": "^2.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "dependencies": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.resize.js/node_modules/svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "dependencies": { + "svg.js": "^2.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "dependencies": { + "svg.js": "^2.6.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "dependencies": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/sweetalert2": { + "version": "11.4.8", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.8.tgz", + "integrity": "sha512-BDS/+E8RwaekGSxCPUbPnsRAyQ439gtXkTF/s98vY2l9DaVEOMjGj1FaQSorfGREKsbbxGSP7UXboibL5vgTMA==", + "funding": { + "type": "individual", + "url": "https://sweetalert2.github.io/#donations" + } + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "dependencies": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "dependencies": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/terser/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/terser/node_modules/source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "node_modules/ticky": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", + "integrity": "sha1-t8+nHnaPHJAAxJe5FRswlHxQ5G0=" + }, + "node_modules/timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "dependencies": { + "setimmediate": "^1.0.4" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "node_modules/tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, + "node_modules/tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "node_modules/tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "dependencies": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "node_modules/tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "node_modules/tiny-slider": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/tiny-slider/-/tiny-slider-2.9.4.tgz", + "integrity": "sha512-LAs2kldWcY+BqCKw4kxd4CMx2RhWrHyEePEsymlOIISTlOVkjfK40sSD7ay73eKXBLg/UkluAZpcfCstimHXew==" + }, + "node_modules/tinymce": { + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.3.tgz", + "integrity": "sha512-O59ssHNnujWvSk5Gt8hIGrdNCMKVWVQv9F8siAgLTRgTh0t3NDHrP1UlLtCxArUi9DPWZvlBeUz8D5fJTu7vnA==" + }, + "node_modules/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 + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "dependencies": { + "nopt": "~1.0.10" + }, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "node_modules/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 + }, + "node_modules/type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "node_modules/type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed.js": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/typed.js/-/typed.js-2.0.12.tgz", + "integrity": "sha512-lyACZh1cu+vpfYY3DG/bvsGLXXbdoDDpWxmqta10IQUdMXisMXOEyl+jos+YT9uBbzK4QaKYBjT3R0kTJO0Slw==" + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/uglify-js": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", + "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "node_modules/unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "dependencies": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-properties": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz", + "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==", + "dependencies": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "dependencies": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + } + }, + "node_modules/unicode-trie/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + }, + "node_modules/uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "node_modules/uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "node_modules/unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "dependencies": { + "crypto-random-string": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/unquote": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", + "dev": true + }, + "node_modules/update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "dependencies": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/uri-js/node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/url": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", + "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", + "dev": true, + "dependencies": { + "punycode": "1.3.2", + "querystring": "0.2.0" + } + }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url/node_modules/punycode": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", + "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", + "dev": true + }, + "node_modules/util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "dependencies": { + "inherits": "2.0.3" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "node_modules/util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/util/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/vis-data": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/vis-data/-/vis-data-7.1.4.tgz", + "integrity": "sha512-usy+ePX1XnArNvJ5BavQod7YRuGQE1pjFl+pu7IS6rCom2EBoG0o1ZzCqf3l5US6MW51kYkLR+efxRbnjxNl7w==", + "hasInstallScript": true, + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "uuid": "^7.0.0 || ^8.0.0", + "vis-util": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/vis-timeline": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/vis-timeline/-/vis-timeline-7.5.1.tgz", + "integrity": "sha512-XZMHHbA8xm9/Y/iu3mE9MT7J5tfWgbdsW+PmqrgINU2QRX24AiqifNHZHV4YYzeJstiTSOg9Gs5qRkxQ0BvZJw==", + "hasInstallScript": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "@egjs/hammerjs": "^2.0.0", + "component-emitter": "^1.3.0", + "keycharm": "^0.3.0 || ^0.4.0", + "moment": "^2.24.0", + "propagating-hammerjs": "^1.4.0 || ^2.0.0", + "uuid": "^3.4.0 || ^7.0.0 || ^8.0.0", + "vis-data": "^6.3.0 || ^7.0.0", + "vis-util": "^3.0.0 || ^4.0.0 || ^5.0.0", + "xss": "^1.0.0" + } + }, + "node_modules/vis-util": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vis-util/-/vis-util-5.0.3.tgz", + "integrity": "sha512-Wf9STUcFrDzK4/Zr7B6epW2Kvm3ORNWF+WiwEz2dpf5RdWkLUXFSbLcuB88n1W6tCdFwVN+v3V4/Xmn9PeL39g==", + "peer": true, + "engines": { + "node": ">=8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/visjs" + }, + "peerDependencies": { + "@egjs/hammerjs": "^2.0.0", + "component-emitter": "^1.3.0" + } + }, + "node_modules/vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "node_modules/vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "dependencies": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + } + }, + "node_modules/vue-style-loader/node_modules/json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/vue-style-loader/node_modules/loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "dependencies": { + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/webpack": { + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", + "dev": true, + "dependencies": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "bin": { + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "dependencies": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + }, + "bin": { + "webpack-cli": "bin/cli.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "peerDependencies": { + "webpack": "4.x.x || 5.x.x" + }, + "peerDependenciesMeta": { + "@webpack-cli/generators": { + "optional": true + }, + "@webpack-cli/migrate": { + "optional": true + }, + "webpack-bundle-analyzer": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.0.0 || ^5.0.0" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-middleware/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-middleware/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-dev-server": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", + "dev": true, + "dependencies": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "bin": { + "webpack-dev-server": "bin/webpack-dev-server.js" + }, + "engines": { + "node": ">= 12.13.0" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } + } + }, + "node_modules/webpack-dev-server/node_modules/ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/webpack-dev-server/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/webpack-dev-server/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "dev": true, + "dependencies": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + }, + "peerDependencies": { + "@types/webpack": ">4.41.31" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + } + } + }, + "node_modules/webpack-rtl-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-rtl-plugin/-/webpack-rtl-plugin-2.0.0.tgz", + "integrity": "sha512-lROgFkiPjapg9tcZ8FiLWeP5pJoG00018aEjLTxSrVldPD1ON+LPlhKPHjb7eE8Bc0+KL23pxcAjWDGOv9+UAw==", + "dev": true, + "dependencies": { + "@romainberger/css-diff": "^1.0.3", + "async": "^2.0.0", + "cssnano": "4.1.10", + "rtlcss": "2.4.0", + "webpack-sources": "1.3.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "dependencies": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + }, + "engines": { + "node": ">4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "dependencies": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "dependencies": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "dependencies": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "dependencies": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/domutils/node_modules/domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "dependencies": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "dependencies": { + "boolbase": "~1.0.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "dependencies": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-colormin/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-convert-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "dependencies": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-merge-longhand/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-merge-rules/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-font-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-gradients/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-params/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-minify-selectors/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-display-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-positions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-repeat-style/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "dependencies": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-string/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-timing-functions/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-unicode/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "dependencies": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-url/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-normalize-whitespace/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "dependencies": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-ordered-values/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "dependencies": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-reduce-transforms/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "dependencies": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-svgo/node_modules/postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "node_modules/webpack-rtl-plugin/node_modules/postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "dependencies": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/rtlcss": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.4.0.tgz", + "integrity": "sha512-hdjFhZ5FCI0ABOfyXOMOhBtwPWtANLCG7rOiOcRf+yi5eDdxmDjqBruWouEnwVdzfh/TWF6NNncIEsigOCFZOA==", + "dev": true, + "dependencies": { + "chalk": "^2.3.0", + "findup": "^0.1.5", + "mkdirp": "^0.5.1", + "postcss": "^6.0.14", + "strip-json-comments": "^2.0.0" + }, + "bin": { + "rtlcss": "bin/rtlcss.js" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/rtlcss/node_modules/postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/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, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/stylehacks/node_modules/postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "dependencies": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "deprecated": "This SVGO version is no longer supported. Upgrade to v2.x.x.", + "dev": true, + "dependencies": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/webpack-rtl-plugin/node_modules/webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "dependencies": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/webpack/node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "webpack": "3 || 4 || 5" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "dependencies": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "dependencies": { + "string-width": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "node_modules/wnumb": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/wnumb/-/wnumb-1.2.0.tgz", + "integrity": "sha512-eYut5K/dW7usfk/Mwm6nxBNoTPp/uP7PlXld+hhg7lDtHLdHFnNclywGYM9BRC7Ohd4JhwuHg+vmOUGfd3NhVA==" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "dependencies": { + "sax": "^1.2.1" + } + }, + "node_modules/xss": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", + "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", + "peer": true, + "dependencies": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "bin": { + "xss": "bin/xss" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/xss/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "peer": true + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/yargs": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", + "dev": true, + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + }, + "dependencies": { + "@ampproject/remapping": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", + "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.0" + } + }, + "@babel/code-frame": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", + "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.16.7" + } + }, + "@babel/compat-data": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", + "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", + "dev": true + }, + "@babel/core": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.9.tgz", + "integrity": "sha512-5ug+SfZCpDAkVp9SFIZAzlW18rlzsOcJGaetCjkySnrXXDUw9AR8cDUm1iByTmdWM6yxX6/zycaV76w3YTF2gw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helpers": "^7.17.9", + "@babel/parser": "^7.17.9", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.9.tgz", + "integrity": "sha512-rAdDousTwxbIxbz5I7GEQ3lUip+xVCXooZNbsydCWs3xA7ZsYOv+CFRdzGxRX78BmQHu9B1Eso59AOZQOJDEdQ==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + }, + "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-annotate-as-pure": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", + "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.16.7.tgz", + "integrity": "sha512-C6FdbRaxYjwVu/geKW4ZeQ0Q31AftgRcdSnZ5/jsH6BzCJbtvXvhpfkbkThYSuutZA7nCXpPR6AD9zd1dprMkA==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", + "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-validator-option": "^7.16.7", + "browserslist": "^4.17.5", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.17.9.tgz", + "integrity": "sha512-kUjip3gruz6AJKOq5i3nC6CoCEEF/oHH3cp6tOZhB+IyyyPyW0g1Gfsxn3mkk6S08pIA2y8GQh609v9G/5sHVQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-member-expression-to-functions": "^7.17.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.17.0.tgz", + "integrity": "sha512-awO2So99wG6KnlE+TPs6rn83gCz5WlEePJDTnLEqbchMVrBeAujURVphRdigsk094VhvZehFoNOihSlcBjwsXA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "regexpu-core": "^5.0.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", + "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.13.0", + "@babel/helper-module-imports": "^7.12.13", + "@babel/helper-plugin-utils": "^7.13.0", + "@babel/traverse": "^7.13.0", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", + "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz", + "integrity": "sha512-KyUenhWMC8VrxzkGP0Jizjo4/Zx+1nNZhgocs+gLzyZyB8SHidhoq9KK/8Ato4anhwsivfkBLftky7gvzbZMtQ==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-function-name": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.17.9.tgz", + "integrity": "sha512-7cRisGlVtiVqZ0MW0/yFB4atgpGLWEHUVYnb448hZK4x+vih0YO5UoS11XIYtZYqHd0dIPMdUSv8q5K4LdMnIg==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", + "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz", + "integrity": "sha512-thxXgnQ8qQ11W2wVUObIqDL4p148VMxkt5T/qpN5k2fboRyzFGFmKsTGViquyM5QHKUy48OZoca8kw4ajaDPyw==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-module-imports": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", + "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-module-transforms": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", + "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.3", + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.16.7.tgz", + "integrity": "sha512-EtgBhg7rd/JcnpZFXpBy0ze1YRfdm7BnBX4uKMBd3ixa3RGAE002JZB66FJyNH7g0F38U05pXmA5P8cBh7z+1w==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", + "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.16.8.tgz", + "integrity": "sha512-fm0gH7Flb8H51LqJHy3HJ3wnE1+qtYR2A99K06ahwrawLdOFsCEWjZOrYricXJHoPSudNKxrMBUPEIPxiIIvBw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-wrap-function": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helper-replace-supers": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.16.7.tgz", + "integrity": "sha512-y9vsWilTNaVnVh6xiJfABzsNpgDPKev9HnAgz6Gb1p6UUwf9NepdlsV7VXGCftJM+jqD5f7JIEubcpLjZj5dBw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-member-expression-to-functions": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/traverse": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", + "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", + "dev": true, + "requires": { + "@babel/types": "^7.17.0" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.16.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.16.0.tgz", + "integrity": "sha512-+il1gTy0oHwUsBQZyJvukbB4vPMdcYBrFHa0Uc4AizLxbq6BOYC51Rv4tWocX9BLBDLZ4kc6qUFpQ6HRgL+3zw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", + "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", + "dev": true, + "requires": { + "@babel/types": "^7.16.7" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", + "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", + "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.16.8.tgz", + "integrity": "sha512-8RpyRVIAW1RcDDGTA+GpPAwV22wXCfKOoM9bet6TLkGIFTkRQSkH1nMQ5Yet4MpoXe1ZwHPVtNasc2w0uZMqnw==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.16.7", + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.16.8", + "@babel/types": "^7.16.8" + } + }, + "@babel/helpers": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.9.tgz", + "integrity": "sha512-cPCt915ShDWUEzEp3+UNRktO2n6v49l5RSnG9M5pS24hA+2FAc5si+Pn1i4VVbQQ+jh+bIZhPFQOJOzbrOYY1Q==", + "dev": true, + "requires": { + "@babel/template": "^7.16.7", + "@babel/traverse": "^7.17.9", + "@babel/types": "^7.17.0" + } + }, + "@babel/highlight": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.17.9.tgz", + "integrity": "sha512-J9PfEKCbFIv2X5bjTMiZu6Vf341N05QIY+d6FvVKynkG1S7G0j3I0QoRtWIrXhZ+/Nlb5Q0MzqL7TokEJ5BNHg==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@babel/parser": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.9.tgz", + "integrity": "sha512-vqUSBLP8dQHFPdPi9bc5GK9vRkYHJ49fsZdtoJ8EQ8ibpwk5rPKfvNIwChB0KVXcIjcepEBBd2VHC5r9Gy8ueg==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz", + "integrity": "sha512-anv/DObl7waiGEnC24O9zqL0pSuI9hljihqiDuFHC8d7/bjr/4RLGPWuc8rYOff/QPzbEPSkzG8wGG9aDuhHRg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.16.7.tgz", + "integrity": "sha512-di8vUHRdf+4aJ7ltXhaDbPoszdkh59AQtJM5soLsuHpQJdFQZOA4uGj0V2u/CZ8bJ/u8ULDL5yq6FO/bCXnKHw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-proposal-optional-chaining": "^7.16.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.16.8.tgz", + "integrity": "sha512-71YHIvMuiuqWJQkebWJtdhQTfd4Q4mF76q2IX37uZPkG9+olBxsX+rH1vkhFto4UeJZ9dPY2s+mDvhDm1u2BGQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.16.7.tgz", + "integrity": "sha512-IobU0Xme31ewjYOShSIqd/ZGM/r/cuOz2z0MDbNrhF5FW+ZVgi0f2lyeoj9KFPDOAqsYxmLWZte1WOwlvY9aww==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.17.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.17.6.tgz", + "integrity": "sha512-X/tididvL2zbs7jZCeeRJ8167U/+Ac135AM6jCAx6gYXDUviZV5Ku9UDvWS2NCuWlFjIRXklYhwo6HhAC7ETnA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.17.6", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.16.7.tgz", + "integrity": "sha512-I8SW9Ho3/8DRSdmDdH3gORdyUuYnk1m4cMxUAdu5oy4n3OfN8flDEH+d60iG7dUfi0KkYwSvoalHzzdRzpWHTg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.16.7.tgz", + "integrity": "sha512-ZxdtqDXLRGBL64ocZcs7ovt71L3jhC1RGSyR996svrCi3PYqHNkb3SwPJCs8RIzD86s+WPpt2S73+EHCGO+NUA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.16.7.tgz", + "integrity": "sha512-lNZ3EEggsGY78JavgbHsK9u5P3pQaW7k4axlgFLYkMd7UBsiNahCITShLjNQschPyjtO6dADrL24757IdhBrsQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.16.7.tgz", + "integrity": "sha512-K3XzyZJGQCr00+EtYtrDjmwX7o7PLK6U9bi1nCwkQioRFVUv6dJoxbQjtWVtP+bCPy82bONBKG8NPyQ4+i6yjg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.16.7.tgz", + "integrity": "sha512-aUOrYU3EVtjf62jQrCj63pYZ7k6vns2h/DQvHPWGmsJRYzWXZ6/AsfgpiRy6XiuIDADhJzP2Q9MwSMKauBQ+UQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.16.7.tgz", + "integrity": "sha512-vQgPMknOIgiuVqbokToyXbkY/OmmjAzr/0lhSIbG/KmnzXPGwW/AdhdKpi+O4X/VkWiWjnkKOBiqJrTaC98VKw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.17.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.17.3.tgz", + "integrity": "sha512-yuL5iQA/TbZn+RGAfxQXfi7CNLmKi1f8zInn4IgobuCWcAb7i+zj4TYzQ9l8cEzVyJ89PDGuqxK1xZpUDISesw==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.0", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.16.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.16.7.tgz", + "integrity": "sha512-eMOH/L4OvWSZAE1VkHbr1vckLG1WUcHGJSLqqQwl2GaUqG6QjddvrOaTUMNYiv77H5IKPMZ9U9P7EaHwvAShfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.16.7.tgz", + "integrity": "sha512-eC3xy+ZrUcBtP7x+sq62Q/HYd674pPTb/77XZMb5wbDPGWIdUbSr4Agr052+zaUPSb+gGRnjxXfKFvx5iMJ+DA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.16.11.tgz", + "integrity": "sha512-F/2uAkPlXDr8+BHpZvo19w3hLFKge+k75XUprE6jaqKxjGkSYcK+4c+bup5PdW/7W/Rpjwql7FTVEDW+fRAQsw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.16.10", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.16.7.tgz", + "integrity": "sha512-rMQkjcOFbm+ufe3bTZLyOfsOUOxyvLXZJCTARhJr+8UMSoZmqTe1K1BgkFcrW37rAchWg57yI69ORxiWvUINuQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-create-class-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.16.7.tgz", + "integrity": "sha512-QRK0YI/40VLhNVGIjRNAAQkEHws0cswSdFFjpFyt943YmJIU1da9uW63Iu6NFV6CxTZW5eTDCrwZUstBWgp/Rg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.16.7.tgz", + "integrity": "sha512-9ffkFFMbvzTvv+7dTp/66xvZAWASuPD5Tl9LK3Z9vhOmANo6j94rik+5YMBt4CwHVMWLWpMsriIc2zsa3WW3xQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.16.8.tgz", + "integrity": "sha512-MtmUmTJQHCnyJVrScNzNlofQJ3dLFuobYn3mwOTKHnSCMtbNsqvF71GQmJfFjdrXSsAA7iysFmYWw4bXZ20hOg==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-remap-async-to-generator": "^7.16.8" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.16.7.tgz", + "integrity": "sha512-JUuzlzmF40Z9cXyytcbZEZKckgrQzChbQJw/5PuEHYeqzCsvebDx0K0jWnIIVcmmDOAVctCgnYs0pMcrYj2zJg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.16.7.tgz", + "integrity": "sha512-ObZev2nxVAYA4bhyusELdo9hb3H+A56bxH3FZMbEImZFiEDYVHXQSJ1hQKFlDnlt8G9bBrCZ5ZpURZUrV4G5qQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.16.7.tgz", + "integrity": "sha512-WY7og38SFAGYRe64BrjKf8OrE6ulEHtr5jEYaZMwox9KebgqPi67Zqz8K53EKk1fFEJgm96r32rkKZ3qA2nCWQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.16.7", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-optimise-call-expression": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.16.7.tgz", + "integrity": "sha512-gN72G9bcmenVILj//sv1zLNaPyYcOzUho2lIJBMh/iakJ9ygCo/hEF9cpGb61SCMEDxbbyBoVQxrt+bWKu5KGw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.17.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.17.7.tgz", + "integrity": "sha512-XVh0r5yq9sLR4vZ6eVZe8FKfIcSgaTBxVBRSYokRj2qksf6QerYnTxz9/GTuKTH/n/HwLP7t6gtlybHetJ/6hQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.16.7.tgz", + "integrity": "sha512-Lyttaao2SjZF6Pf4vk1dVKv8YypMpomAbygW+mU5cYP3S5cWTfCJjG8xV6CFdzGFlfWK81IjL9viiTvpb6G7gQ==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.16.7.tgz", + "integrity": "sha512-03DvpbRfvWIXyK0/6QiR1KMTWeT6OcQ7tbhjrXyFS02kjuX/mu5Bvnh5SDSWHxyawit2g5aWhKwI86EE7GUnTw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.16.7.tgz", + "integrity": "sha512-8UYLSlyLgRixQvlYH3J2ekXFHDFLQutdy7FfFAMm3CPZ6q9wHCwnUyiXpQCe3gVVnQlHc5nsuiEVziteRNTXEA==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.16.7.tgz", + "integrity": "sha512-/QZm9W92Ptpw7sjI9Nx1mbcsWz33+l8kuMIQnDwgQBG5s3fAfQvkRjQ7NqXhtNcKOnPkdICmUHyCaWW06HCsqg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.16.7.tgz", + "integrity": "sha512-SU/C68YVwTRxqWj5kgsbKINakGag0KTgq9f2iZEXdStoAbOzLHEBRYzImmA6yFo8YZhJVflvXmIHUO7GWHmxxA==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-function-name": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.16.7.tgz", + "integrity": "sha512-6tH8RTpTWI0s2sV6uq3e/C9wPo4PTqqZps4uF0kzQ9/xPLFQtipynvmT1g/dOfEJ+0EQsHhkQ/zyRId8J2b8zQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.16.7.tgz", + "integrity": "sha512-mBruRMbktKQwbxaJof32LT9KLy2f3gH+27a5XSuXo6h7R3vqltl0PgZ80C8ZMKw98Bf8bqt6BEVi3svOh2PzMw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.16.7.tgz", + "integrity": "sha512-KaaEtgBL7FKYwjJ/teH63oAmE3lP34N3kshz8mm4VMAw7U3PxjVwwUmxEFksbgsNUaO3wId9R2AVQYSEGRa2+g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.17.9.tgz", + "integrity": "sha512-2TBFd/r2I6VlYn0YRTz2JdazS+FoUuQ2rIFHoAxtyP/0G3D82SBLaRq9rnUkpqlLg03Byfl/+M32mpxjO6KaPw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-simple-access": "^7.17.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.17.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.17.8.tgz", + "integrity": "sha512-39reIkMTUVagzgA5x88zDYXPCMT6lcaRKs1+S9K6NKBPErbgO/w/kP8GlNQTC87b412ZTlmNgr3k2JrWgHH+Bw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-module-transforms": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-identifier": "^7.16.7", + "babel-plugin-dynamic-import-node": "^2.3.3" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.16.7.tgz", + "integrity": "sha512-EMh7uolsC8O4xhudF2F6wedbSHm1HHZ0C6aJ7K67zcDNidMzVcxWdGr+htW9n21klm+bOn+Rx4CBsAntZd3rEQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.16.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.16.8.tgz", + "integrity": "sha512-j3Jw+n5PvpmhRR+mrgIh04puSANCk/T/UA3m3P1MjJkhlK906+ApHhDIqBQDdOgL/r1UYpz4GNclTXxyZrYGSw==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.16.7.tgz", + "integrity": "sha512-xiLDzWNMfKoGOpc6t3U+etCE2yRnn3SM09BXqWPIZOBpL2gvVrBWUKnsJx0K/ADi5F5YC5f8APFfWrz25TdlGg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.16.7.tgz", + "integrity": "sha512-14J1feiQVWaGvRxj2WjyMuXS2jsBkgB3MdSN5HuC2G5nRspa5RK9COcs82Pwy5BuGcjb+fYaUj94mYcOj7rCvw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-replace-supers": "^7.16.7" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.16.7.tgz", + "integrity": "sha512-AT3MufQ7zZEhU2hwOA11axBnExW0Lszu4RL/tAlUJBuNoRak+wehQW8h6KcXOcgjY42fHtDxswuMhMjFEuv/aw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.16.7.tgz", + "integrity": "sha512-z4FGr9NMGdoIl1RqavCqGG+ZuYjfZ/hkCIeuH6Do7tXmSm0ls11nYVSJqFEUOSJbDab5wC6lRE/w6YjVcr6Hqw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.17.9.tgz", + "integrity": "sha512-Lc2TfbxR1HOyn/c6b4Y/b6NHoTb67n/IoWLxTu4kC7h4KQnWlhCq2S8Tx0t2SVvv5Uu87Hs+6JEJ5kt2tYGylQ==", + "dev": true, + "requires": { + "regenerator-transform": "^0.15.0" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.16.7.tgz", + "integrity": "sha512-KQzzDnZ9hWQBjwi5lpY5v9shmm6IVG0U9pB18zvMu2i4H90xpT4gmqwPYsn8rObiadYe2M0gmgsiOIF5A/2rtg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.17.0.tgz", + "integrity": "sha512-fr7zPWnKXNc1xoHfrIU9mN/4XKX4VLZ45Q+oMhfsYIaHvg7mHgmhfOy/ckRWqDK7XF3QDigRpkh5DKq6+clE8A==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.16.7.tgz", + "integrity": "sha512-hah2+FEnoRoATdIb05IOXf+4GzXYTq75TVhIn1PewihbpyrNWUt2JbudKQOETWw6QpLe+AIUpJ5MVLYTQbeeUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.16.7.tgz", + "integrity": "sha512-+pjJpgAngb53L0iaA5gU/1MLXJIfXcYepLgXB3esVRf4fqmj8f2cxM3/FKaHsZms08hFQJkFccEWuIpm429TXg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.16.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.16.7.tgz", + "integrity": "sha512-NJa0Bd/87QV5NZZzTuZG5BPJjLYadeSZ9fO6oOUoL4iQx+9EEuw/eEM92SrsT19Yc2jgB1u1hsjqDtH02c3Drw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.16.7.tgz", + "integrity": "sha512-VwbkDDUeenlIjmfNeDX/V0aWrQH2QiVyJtwymVQSzItFDTpxfyJh3EVaQiS0rIN/CqbLGr0VcGmuwyTdZtdIsA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.16.7.tgz", + "integrity": "sha512-p2rOixCKRJzpg9JB4gjnG4gjWkWa89ZoYUnl9snJ1cWIcTH/hvxZqfO+WjG6T8DRBpctEol5jw1O5rA8gkCokQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.16.7.tgz", + "integrity": "sha512-TAV5IGahIz3yZ9/Hfv35TV2xEm+kaBDaZQCn2S/hG9/CZ0DktxJv9eKfPc7yYCvOYR4JGx1h8C+jcSOvgaaI/Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.16.7.tgz", + "integrity": "sha512-oC5tYYKw56HO75KZVLQ+R/Nl3Hro9kf8iG0hXoaHP7tjAyCpvqBiSNe6vGrZni1Z6MggmUOC6A7VP7AVmw225Q==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7" + } + }, + "@babel/preset-env": { + "version": "7.16.11", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.16.11.tgz", + "integrity": "sha512-qcmWG8R7ZW6WBRPZK//y+E3Cli151B20W1Rv7ln27vuPaXU/8TKms6jFdiJtF7UDTxcrb7mZd88tAeK9LjdT8g==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.16.8", + "@babel/helper-compilation-targets": "^7.16.7", + "@babel/helper-plugin-utils": "^7.16.7", + "@babel/helper-validator-option": "^7.16.7", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.16.7", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-async-generator-functions": "^7.16.8", + "@babel/plugin-proposal-class-properties": "^7.16.7", + "@babel/plugin-proposal-class-static-block": "^7.16.7", + "@babel/plugin-proposal-dynamic-import": "^7.16.7", + "@babel/plugin-proposal-export-namespace-from": "^7.16.7", + "@babel/plugin-proposal-json-strings": "^7.16.7", + "@babel/plugin-proposal-logical-assignment-operators": "^7.16.7", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.7", + "@babel/plugin-proposal-numeric-separator": "^7.16.7", + "@babel/plugin-proposal-object-rest-spread": "^7.16.7", + "@babel/plugin-proposal-optional-catch-binding": "^7.16.7", + "@babel/plugin-proposal-optional-chaining": "^7.16.7", + "@babel/plugin-proposal-private-methods": "^7.16.11", + "@babel/plugin-proposal-private-property-in-object": "^7.16.7", + "@babel/plugin-proposal-unicode-property-regex": "^7.16.7", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.16.7", + "@babel/plugin-transform-async-to-generator": "^7.16.8", + "@babel/plugin-transform-block-scoped-functions": "^7.16.7", + "@babel/plugin-transform-block-scoping": "^7.16.7", + "@babel/plugin-transform-classes": "^7.16.7", + "@babel/plugin-transform-computed-properties": "^7.16.7", + "@babel/plugin-transform-destructuring": "^7.16.7", + "@babel/plugin-transform-dotall-regex": "^7.16.7", + "@babel/plugin-transform-duplicate-keys": "^7.16.7", + "@babel/plugin-transform-exponentiation-operator": "^7.16.7", + "@babel/plugin-transform-for-of": "^7.16.7", + "@babel/plugin-transform-function-name": "^7.16.7", + "@babel/plugin-transform-literals": "^7.16.7", + "@babel/plugin-transform-member-expression-literals": "^7.16.7", + "@babel/plugin-transform-modules-amd": "^7.16.7", + "@babel/plugin-transform-modules-commonjs": "^7.16.8", + "@babel/plugin-transform-modules-systemjs": "^7.16.7", + "@babel/plugin-transform-modules-umd": "^7.16.7", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.16.8", + "@babel/plugin-transform-new-target": "^7.16.7", + "@babel/plugin-transform-object-super": "^7.16.7", + "@babel/plugin-transform-parameters": "^7.16.7", + "@babel/plugin-transform-property-literals": "^7.16.7", + "@babel/plugin-transform-regenerator": "^7.16.7", + "@babel/plugin-transform-reserved-words": "^7.16.7", + "@babel/plugin-transform-shorthand-properties": "^7.16.7", + "@babel/plugin-transform-spread": "^7.16.7", + "@babel/plugin-transform-sticky-regex": "^7.16.7", + "@babel/plugin-transform-template-literals": "^7.16.7", + "@babel/plugin-transform-typeof-symbol": "^7.16.7", + "@babel/plugin-transform-unicode-escapes": "^7.16.7", + "@babel/plugin-transform-unicode-regex": "^7.16.7", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.16.8", + "babel-plugin-polyfill-corejs2": "^0.3.0", + "babel-plugin-polyfill-corejs3": "^0.5.0", + "babel-plugin-polyfill-regenerator": "^0.3.0", + "core-js-compat": "^3.20.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/runtime": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.17.9.tgz", + "integrity": "sha512-lSiBBvodq29uShpWGNbgFdKYNiFDo5/HIYsaCEY9ff4sb10x9jizo2+pRrSyF4jKZCXqgzuqBOQKbUm90gQwJg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.16.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", + "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/parser": "^7.16.7", + "@babel/types": "^7.16.7" + } + }, + "@babel/traverse": { + "version": "7.17.9", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.9.tgz", + "integrity": "sha512-PQO8sDIJ8SIwipTPiR71kJQCKQYB5NGImbOviK8K+kg5xkNSYXLBupuX9QhatFowrsvo9Hj8WgArg3W7ijNAQw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.16.7", + "@babel/generator": "^7.17.9", + "@babel/helper-environment-visitor": "^7.16.7", + "@babel/helper-function-name": "^7.17.9", + "@babel/helper-hoist-variables": "^7.16.7", + "@babel/helper-split-export-declaration": "^7.16.7", + "@babel/parser": "^7.17.9", + "@babel/types": "^7.17.0", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", + "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.16.7", + "to-fast-properties": "^2.0.0" + } + }, + "@ckeditor/ckeditor5-alignment": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-31.1.0.tgz", + "integrity": "sha512-G5H8hWUMpjctlxaJKUa5HVbavEukghSOfOJjKL47MFSlp46fDgdotmGYnW8BLqFJItsccO8PJJy20KaO6Gj9BQ==", + "requires": { + "ckeditor5": "^31.1.0" + } + }, + "@ckeditor/ckeditor5-build-balloon": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-balloon/-/ckeditor5-build-balloon-23.1.0.tgz", + "integrity": "sha512-JjiB+ps7r7XkWq1KK757QwQXdm/MjRCaTDlgEnJigEuRgdIr1/UirYH33CIQGNKsRoeU6iaSz+VuFCf9OziR0A==" + }, + "@ckeditor/ckeditor5-build-balloon-block": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-balloon-block/-/ckeditor5-build-balloon-block-23.1.0.tgz", + "integrity": "sha512-VAiUfMxxU7jG6StuHeyUt4mcCZRolD6cHhWJACCmcah6ODmENIGtPZJ3fYi+RFpIAFXdlVznfAbYImbvr1UCYg==" + }, + "@ckeditor/ckeditor5-build-classic": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-classic/-/ckeditor5-build-classic-23.1.0.tgz", + "integrity": "sha512-wqJZ6yuqm48NoiciRcfs+t73YOfIKovJIiLSHf0yB2I3Mc+bL6iNhwwyJ3b6D/22IgYEXTpc6PiwsYFbGFnq2Q==" + }, + "@ckeditor/ckeditor5-build-decoupled-document": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-decoupled-document/-/ckeditor5-build-decoupled-document-23.1.0.tgz", + "integrity": "sha512-dn8/Cw3wf75ZybMLfmPy1ZtitObi6YTHPeavkyu0TVDbJhefpBL+gKWRrTptpvNk3Txw40zWU5MYq0225FpPkA==" + }, + "@ckeditor/ckeditor5-build-inline": { + "version": "23.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-build-inline/-/ckeditor5-build-inline-23.1.0.tgz", + "integrity": "sha512-SrboOm2cjhbsRkqf6fT0asiG65CCPMko680qIyMPgepKIfsCENfkZf3mLL1vOlOiDk/JtvciWrjq2fzNK9LhNA==" + }, + "@ckeditor/ckeditor5-clipboard": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-31.1.0.tgz", + "integrity": "sha512-rHvswGs4Q/ZiKPGk0J7+Nrb3mqNugKQFOXA7SSecOI9ZRt6hIxr4fgj4ccb8ceuHNr2vJNmTGC8jjKX7wGHPbw==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "@ckeditor/ckeditor5-widget": "^31.1.0", + "lodash-es": "^4.17.11" + } + }, + "@ckeditor/ckeditor5-core": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-core/-/ckeditor5-core-31.1.0.tgz", + "integrity": "sha512-5BUosLrUliV2NZ9DAW48Za/4P3QWmwKMoHohCvq7Jq9Us6TQCnEKauUNexJFDAWqUAdN2WlqaVdSL+FmfhmzSA==", + "requires": { + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-engine": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-31.1.0.tgz", + "integrity": "sha512-lHZjdKKeBWR4N2rk4rdnxDtdE3F1Q7Z2Ag2RgHG8GT3J6s2BNx/z++9GxhlCKPR3TQ70XWCLBLGXuFHXIvU0Kg==", + "requires": { + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-enter": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-31.1.0.tgz", + "integrity": "sha512-9K5d12lCfvnUGESwxpu2UJCLsAaa40QR4JgVHKV0CZpERfcsvcF3XdM8cggS/Ovin2TBq1w+tXhOKbop5Why9Q==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + } + }, + "@ckeditor/ckeditor5-paragraph": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-31.1.0.tgz", + "integrity": "sha512-rltzxwcKwR6mxZqomKLkrdLuVkkeKiESv7bweVY9VcPb7hk0BiLZcYkLqsOlfkZHWHWCiQ+5UDR8ctuaVmiUjg==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + } + }, + "@ckeditor/ckeditor5-select-all": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-31.1.0.tgz", + "integrity": "sha512-d6bTtuZLoBN61jPjbY562awfRYy+xhnCEIilsoRLb04mFNa6HnFs/mZtNIFqrm7dYZWSkJz9+1XwQouYW+kGqQ==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + } + }, + "@ckeditor/ckeditor5-typing": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-31.1.0.tgz", + "integrity": "sha512-juskFEb1YrXLS+wcLEnc3GZtqkq95Q13sNAAyvKaEXzNphy4PBv+odLAwP7KCrxifVf278bgVxGDV5GPPAenOA==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-ui": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-31.1.0.tgz", + "integrity": "sha512-fHBLsRK7XRxeewm1NH9idU4zUguhysQPEmEhqWOi+GRt2I0pYrc22GYNJF3yKMqp1LfiLi7GAT66X2RL9rCEaQ==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-undo": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-31.1.0.tgz", + "integrity": "sha512-eNWEP9E5Ji2W7NU6vCKOqjYW0+/xwXGkiExboTApudJDT1IWu2hqoaVQ+3eEWHWJbqCxIRSHif6+uYEBIoInXg==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0" + } + }, + "@ckeditor/ckeditor5-upload": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-31.1.0.tgz", + "integrity": "sha512-j+FNllYawZgTWCVOUSce/34SMfwgqNa2F7yvdmw4pmPSl8mlSZxSEYA9mLqbKpXwsuFY0iY14JQEB2bngNgTbA==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0" + } + }, + "@ckeditor/ckeditor5-utils": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-31.1.0.tgz", + "integrity": "sha512-l2C2m8uLxKTblXX6SY+k40tK9U4pFZ2WCYP1dc3B0qz5an+h7e5EqRz3kFs+MVw0HM6VCYWDFql/JZDAFonOmQ==", + "requires": { + "lodash-es": "^4.17.15" + } + }, + "@ckeditor/ckeditor5-widget": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-31.1.0.tgz", + "integrity": "sha512-e/B2qjgwXHuj/Qo+cGAM7j3NTPXvTikL+wjEF5sh5a0w5el9Sv97tzew5rojkZ6ypQykE+1ue+F579b74n7QiQ==", + "requires": { + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-enter": "^31.1.0", + "@ckeditor/ckeditor5-typing": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "lodash-es": "^4.17.15" + } + }, + "@colors/colors": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", + "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", + "dev": true, + "optional": true + }, + "@discoveryjs/json-ext": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", + "dev": true + }, + "@egjs/hammerjs": { + "version": "2.0.17", + "resolved": "https://registry.npmjs.org/@egjs/hammerjs/-/hammerjs-2.0.17.tgz", + "integrity": "sha512-XQsZgjm2EcVUiZQf11UBJQfmZeEmOW8DpI1gsFeln6w0ae0ii4dMQEQ0kjl6DspdWX1aGY1/loyXnP0JS06e/A==", + "peer": true, + "requires": { + "@types/hammerjs": "^2.0.36" + } + }, + "@foliojs-fork/fontkit": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/fontkit/-/fontkit-1.9.1.tgz", + "integrity": "sha512-U589voc2/ROnvx1CyH9aNzOQWJp127JGU1QAylXGQ7LoEAF6hMmahZLQ4eqAcgHUw+uyW4PjtCItq9qudPkK3A==", + "requires": { + "@foliojs-fork/restructure": "^2.0.2", + "brfs": "^2.0.0", + "brotli": "^1.2.0", + "browserify-optional": "^1.0.1", + "clone": "^1.0.4", + "deep-equal": "^1.0.0", + "dfa": "^1.2.0", + "tiny-inflate": "^1.0.2", + "unicode-properties": "^1.2.2", + "unicode-trie": "^2.0.0" + } + }, + "@foliojs-fork/linebreak": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@foliojs-fork/linebreak/-/linebreak-1.1.1.tgz", + "integrity": "sha512-pgY/+53GqGQI+mvDiyprvPWgkTlVBS8cxqee03ejm6gKAQNsR1tCYCIvN9FHy7otZajzMqCgPOgC4cHdt4JPig==", + "requires": { + "base64-js": "1.3.1", + "brfs": "^2.0.2", + "unicode-trie": "^2.0.0" + }, + "dependencies": { + "base64-js": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.3.1.tgz", + "integrity": "sha512-mLQ4i2QO1ytvGWFWmcngKO//JXAQueZvwEKtjgQFM4jIK0kU+ytMfplL8j+n5mspOfjHwoAg+9yhb7BwAHm36g==" + } + } + }, + "@foliojs-fork/pdfkit": { + "version": "0.13.0", + "resolved": "https://registry.npmjs.org/@foliojs-fork/pdfkit/-/pdfkit-0.13.0.tgz", + "integrity": "sha512-YXeG1fml9k97YNC9K8e292Pj2JzGt9uOIiBFuQFxHsdQ45BlxW+JU3RQK6JAvXU7kjhjP8rCcYvpk36JLD33sQ==", + "requires": { + "@foliojs-fork/fontkit": "^1.9.1", + "@foliojs-fork/linebreak": "^1.1.1", + "crypto-js": "^4.0.0", + "png-js": "^1.0.0" + } + }, + "@foliojs-fork/restructure": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@foliojs-fork/restructure/-/restructure-2.0.2.tgz", + "integrity": "sha512-59SgoZ3EXbkfSX7b63tsou/SDGzwUEK6MuB5sKqgVK1/XE0fxmpsOb9DQI8LXW3KfGnAjImCGhhEb7uPPAUVNA==" + }, + "@fortawesome/fontawesome-free": { + "version": "5.15.4", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.4.tgz", + "integrity": "sha512-eYm8vijH/hpzr/6/1CJ/V/Eb1xQFW2nnUKArb3z+yUWv7HTwj6M7SP957oMjfZjAHU6qpoNc2wQvIxBLWYa/Jg==" + }, + "@jridgewell/resolve-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", + "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", + "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", + "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.3.tgz", + "integrity": "sha512-nkalE/f1RvRGChwBnEIoBfSEYOXnCRdleKuv6+lePbMDrMZXeDQnqak5XDOeBgrPPyPfAdcCu/B5z+v3VhplGg==", + "dev": true + }, + "@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "requires": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" + }, + "@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@popperjs/core": { + "version": "2.10.2", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.10.2.tgz", + "integrity": "sha512-IXf3XA7+XyN7CP9gGh/XB0UxVMlvARGEgGXLubFICsUMGz6Q+DU+i4gGlpOxTjKvXjkJDJC8YdqdKkDj9qZHEQ==" + }, + "@romainberger/css-diff": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@romainberger/css-diff/-/css-diff-1.0.3.tgz", + "integrity": "sha1-ztOHU11PQqQqwf4TwJ3pf1rhNEw=", + "dev": true, + "requires": { + "lodash.merge": "^4.4.0", + "postcss": "^5.0.21" + }, + "dependencies": { + "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": "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.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "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.1.9", + "source-map": "^0.5.6", + "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 + }, + "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.0.0" + } + }, + "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" + } + } + } + }, + "@shopify/draggable": { + "version": "1.0.0-beta.12", + "resolved": "https://registry.npmjs.org/@shopify/draggable/-/draggable-1.0.0-beta.12.tgz", + "integrity": "sha512-Un/Dn61sv2er9yjDXLGWMauCOWBb0BMbm0yzmmrD+oUX2/x50yhNJASTsCRdndUCpWlqYfZH8jEfaOgTPsKc/g==" + }, + "@sindresorhus/is": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz", + "integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==" + }, + "@szmarczak/http-timer": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz", + "integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==", + "requires": { + "defer-to-connect": "^1.0.1" + } + }, + "@terraformer/arcgis": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@terraformer/arcgis/-/arcgis-2.1.0.tgz", + "integrity": "sha512-eKTvNXze2Fo7vAEjvJFIGn5QdU0OP4aD9DuT/uTBLRM1QS+ju7KtPITbVW+xgCviHLnOVeFQ1UsIs9kjkakD4g==", + "requires": { + "@terraformer/common": "^2.0.7" + } + }, + "@terraformer/common": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@terraformer/common/-/common-2.0.7.tgz", + "integrity": "sha512-8bl+/JT0Rw6FYe2H3FfJS8uQwgzGl+UHs+8JX0TQLHgA4sMDEwObbMwo0iP3FVONwPXrPHEpC5YH7Grve0cl9A==" + }, + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.19", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.19.tgz", + "integrity": "sha512-WEOTgRsbYkvA/KCsDwVEGkd7WAr1e3g31VHQ8zy5gul/V1qKullU/BU5I68X5v7V3GnB9eotmom4v5a5gjxorw==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "@types/babel__generator": { + "version": "7.6.4", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.4.tgz", + "integrity": "sha512-tFkciB9j2K755yrTALxD44McOrk+gfpIpvC3sxHjRawj6PfnQxrse4Clq5y/Rq+G3mrBurMax/lG8Qn2t9mSsg==", + "dev": true, + "requires": { + "@babel/types": "^7.0.0" + } + }, + "@types/babel__template": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.1.tgz", + "integrity": "sha512-azBFKemX6kMg5Io+/rdGT0dkGreboUVR0Cdm3fz9QJWpaQGJRQXl7C+6hOTCZcMll7KFyEQpgbYI2lHdsS4U7g==", + "dev": true, + "requires": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "@types/babel__traverse": { + "version": "7.17.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.17.0.tgz", + "integrity": "sha512-r8aveDbd+rzGP+ykSdF3oPuTVRWRfbBiHl0rVDM2yNEmSMXfkObQLV46b4RnCv3Lra51OlfnZhkkFaDl2MIRaA==", + "dev": true, + "requires": { + "@babel/types": "^7.3.0" + } + }, + "@types/body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==", + "dev": true, + "requires": { + "@types/connect": "*", + "@types/node": "*" + } + }, + "@types/bonjour": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.10.tgz", + "integrity": "sha512-p7ienRMiS41Nu2/igbJxxLDWrSZ0WxM8UQgCeO9KhoVF7cOVFkrKsiDr1EsJIla8vV3oEEjGcz11jc5yimhzZw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/clean-css": { + "version": "4.2.5", + "resolved": "https://registry.npmjs.org/@types/clean-css/-/clean-css-4.2.5.tgz", + "integrity": "sha512-NEzjkGGpbs9S9fgC4abuBvTpVwE3i+Acu9BBod3PUyjDVZcNsGx61b8r2PphR61QGPnn0JHVs5ey6/I4eTrkxw==", + "dev": true, + "requires": { + "@types/node": "*", + "source-map": "^0.6.0" + } + }, + "@types/connect": { + "version": "3.4.35", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.35.tgz", + "integrity": "sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/connect-history-api-fallback": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.3.5.tgz", + "integrity": "sha512-h8QJa8xSb1WD4fpKBDcATDNGXghFj6/3GRWG6dhmRcu0RX1Ubasur2Uvx5aeEwlf0MwblEC2bMzzMQntxnw/Cw==", + "dev": true, + "requires": { + "@types/express-serve-static-core": "*", + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", + "dev": true + }, + "@types/express": { + "version": "4.17.13", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", + "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", + "dev": true, + "requires": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.18", + "@types/qs": "*", + "@types/serve-static": "*" + } + }, + "@types/express-serve-static-core": { + "version": "4.17.28", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.28.tgz", + "integrity": "sha512-P1BJAEAW3E2DJUlkgq4tOL3RyMunoWXqbSCygWo5ZIWTjUgN1YnaXWW4VWl/oc8vs/XoYibEGBKP0uZyF4AHig==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/hammerjs": { + "version": "2.0.41", + "resolved": "https://registry.npmjs.org/@types/hammerjs/-/hammerjs-2.0.41.tgz", + "integrity": "sha512-ewXv/ceBaJprikMcxCmWU1FKyMAQ2X7a9Gtmzw8fcg2kIePI1crERDM818W+XYrxqdBBOdlf2rm137bU+BltCA==", + "peer": true + }, + "@types/http-proxy": { + "version": "1.17.8", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.8.tgz", + "integrity": "sha512-5kPLG5BKpWYkw/LVOGWpiq3nEVqxiN32rTgI53Sk12/xHFQ2rG3ehI9IO+O3W2QoKeyB92dJkoka8SUm6BX1pA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/imagemin/-/imagemin-8.0.0.tgz", + "integrity": "sha512-B9X2CUeDv/uUeY9CqkzSTfmsLkeJP6PkmXlh4lODBbf9SwpmNuLS30WzUOi863dgsjY3zt3gY5q2F+UdifRi1A==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/imagemin-gifsicle": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-gifsicle/-/imagemin-gifsicle-7.0.1.tgz", + "integrity": "sha512-kUz6sUh0P95JOS0RGEaaemWUrASuw+dLsWIveK2UZJx74id/B9epgblMkCk/r5MjUWbZ83wFvacG5Rb/f97gyA==", + "dev": true, + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-mozjpeg": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-mozjpeg/-/imagemin-mozjpeg-8.0.1.tgz", + "integrity": "sha512-kMQWEoKxxhlnH4POI3qfW9DjXlQfi80ux3l2b3j5R3eudSCoUIzKQLkfMjNJ6eMYnMWBcB+rfQOWqIzdIwFGKw==", + "dev": true, + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-optipng": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-optipng/-/imagemin-optipng-5.2.1.tgz", + "integrity": "sha512-XCM/3q+HUL7v4zOqMI+dJ5dTxT+MUukY9KU49DSnYb/4yWtSMHJyADP+WHSMVzTR63J2ZvfUOzSilzBNEQW78g==", + "dev": true, + "requires": { + "@types/imagemin": "*" + } + }, + "@types/imagemin-svgo": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@types/imagemin-svgo/-/imagemin-svgo-8.0.1.tgz", + "integrity": "sha512-YafkdrVAcr38U0Ln1C+L1n4SIZqC47VBHTyxCq7gTUSd1R9MdIvMcrljWlgU1M9O68WZDeQWUrKipKYfEOCOvQ==", + "dev": true, + "requires": { + "@types/imagemin": "*", + "@types/svgo": "^1" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", + "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", + "dev": true + }, + "@types/mime": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", + "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", + "dev": true + }, + "@types/node": { + "version": "17.0.25", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.25.tgz", + "integrity": "sha512-wANk6fBrUwdpY4isjWrKTufkrXdu1D2YHCot2fD/DfWxF5sMrVSA+KN7ydckvaTCh0HiqX9IVl0L5/ZoXg5M7w==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@types/q": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", + "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", + "dev": true + }, + "@types/qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==", + "dev": true + }, + "@types/range-parser": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.4.tgz", + "integrity": "sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==", + "dev": true + }, + "@types/retry": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", + "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", + "dev": true + }, + "@types/serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", + "dev": true, + "requires": { + "@types/express": "*" + } + }, + "@types/serve-static": { + "version": "1.13.10", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", + "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", + "dev": true, + "requires": { + "@types/mime": "^1", + "@types/node": "*" + } + }, + "@types/sockjs": { + "version": "0.3.33", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", + "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/svgo": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/@types/svgo/-/svgo-1.3.6.tgz", + "integrity": "sha512-AZU7vQcy/4WFEuwnwsNsJnFwupIpbllH1++LXScN6uxT1Z4zPzdrWG97w4/I7eFKFTvfy/bHFStWjdBAg2Vjug==", + "dev": true + }, + "@types/ws": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.3.tgz", + "integrity": "sha512-6YOoWjruKj1uLf3INHH7D3qTXwFfEsg1kf3c0uDdSBJwfa/llkwIjrAGV7j7mVgGNbzTQ3HiHKKDXl6bJPD97w==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@vue/reactivity": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.1.5.tgz", + "integrity": "sha512-1tdfLmNjWG6t/CsPldh+foumYFo3cpyCHgBYQ34ylaMsJ+SNHQ1kApMIa8jN+i593zQuaw3AdWH0nJTARzCFhg==", + "dev": true, + "requires": { + "@vue/shared": "3.1.5" + } + }, + "@vue/shared": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.1.5.tgz", + "integrity": "sha512-oJ4F3TnvpXaQwZJNF3ZK+kLPHKarDmJjJ6jyzVNDKH9md1dptjC7lWR//jrGuLdek/U6iltWxqAnYOu8gCiOvA==", + "dev": true + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", + "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", + "dev": true, + "requires": { + "@webassemblyjs/helper-numbers": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1" + } + }, + "@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", + "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", + "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", + "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", + "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", + "dev": true, + "requires": { + "@webassemblyjs/floating-point-hex-parser": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", + "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", + "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1" + } + }, + "@webassemblyjs/ieee754": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", + "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", + "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", + "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", + "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/helper-wasm-section": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-opt": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "@webassemblyjs/wast-printer": "1.11.1" + } + }, + "@webassemblyjs/wasm-gen": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", + "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wasm-opt": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", + "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-buffer": "1.11.1", + "@webassemblyjs/wasm-gen": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1" + } + }, + "@webassemblyjs/wasm-parser": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", + "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/helper-api-error": "1.11.1", + "@webassemblyjs/helper-wasm-bytecode": "1.11.1", + "@webassemblyjs/ieee754": "1.11.1", + "@webassemblyjs/leb128": "1.11.1", + "@webassemblyjs/utf8": "1.11.1" + } + }, + "@webassemblyjs/wast-printer": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", + "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@webpack-cli/configtest": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-1.1.1.tgz", + "integrity": "sha512-1FBc1f9G4P/AxMqIgfZgeOTuRnwZMten8E7zap5zgpPInnCrP8D4Q81+4CWIch8i/Nf7nXjP0v6CjjbHOrXhKg==", + "dev": true, + "requires": {} + }, + "@webpack-cli/info": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-1.4.1.tgz", + "integrity": "sha512-PKVGmazEq3oAo46Q63tpMr4HipI3OPfP7LiNOEJg963RMgT0rqheag28NCML0o3GIzA3DmxP1ZIAv9oTX1CUIA==", + "dev": true, + "requires": { + "envinfo": "^7.7.3" + } + }, + "@webpack-cli/serve": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-1.6.1.tgz", + "integrity": "sha512-gNGTiTrjEVQ0OcVnzsRSqTxaBSr+dmTfm+qJsCDluky8uhdLWep7Gcr62QsAKHTMxjCS/8nEITsmFAhfIx+QSw==", + "dev": true, + "requires": {} + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "@yaireo/tagify": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@yaireo/tagify/-/tagify-4.11.0.tgz", + "integrity": "sha512-J70gWNNlgHw+60azyJTsu0YHPsH7qXowQIi7PGMuhDQAfjTGNUH/Tx2TCzruTDocOTcoD6ol/iZXpNm8+VOg7g==", + "requires": {} + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.7.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.7.0.tgz", + "integrity": "sha512-V/LGr1APy+PXIwKebEWrkZPwoeoF+w1jiOBUmuxuiUIaOHtob8Qc9BTrYo7VuI5fR8tqsy+buA2WFooR5olqvQ==" + }, + "acorn-import-assertions": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", + "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", + "dev": true, + "requires": {} + }, + "acorn-node": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", + "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", + "requires": { + "acorn": "^7.0.0", + "acorn-walk": "^7.0.0", + "xtend": "^4.0.2" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + } + } + }, + "acorn-walk": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", + "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", + "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "requires": { + "ajv": "^8.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + } + } + }, + "ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true, + "requires": {} + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", + "dev": true + }, + "alpinejs": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/alpinejs/-/alpinejs-3.10.1.tgz", + "integrity": "sha512-1iwVW1flJfPKFyQqGn9f/CPlPHyMKyGHolUtCkwP0G0/AXZmkyVB5/808+77jvWD/S3clVNgA0MLUTsfaJiqzw==", + "dev": true, + "requires": { + "@vue/reactivity": "~3.1.1" + } + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=", + "optional": true + }, + "ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "requires": { + "string-width": "^4.1.0" + } + }, + "ansi-html-community": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", + "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "apexcharts": { + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-3.35.0.tgz", + "integrity": "sha512-oipJRkaxt8DPGRmn1kur6aPzML1JSpf2M3ecu+gyw+8xiNmT2C0p1uuuqPZrk+Lr2hmDxzNBPR7TvxwRl3ozgw==", + "requires": { + "svg.draggable.js": "^2.2.2", + "svg.easing.js": "^2.0.0", + "svg.filter.js": "^2.0.2", + "svg.pathmorphing.js": "^0.1.3", + "svg.resize.js": "^1.4.3", + "svg.select.js": "^3.0.1" + } + }, + "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.2" + } + }, + "array-flatten": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true + }, + "array-from": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/array-from/-/array-from-2.1.1.tgz", + "integrity": "sha1-z+nYwmYoudxa7MYqn12PHzUsEZU=" + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==" + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", + "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", + "dev": true, + "requires": { + "object-assign": "^4.1.1", + "util": "0.10.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", + "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", + "dev": true + }, + "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" + } + } + } + }, + "ast-transform": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", + "integrity": "sha1-dJRAWIh9goPhidlUYAlHvJj+AGI=", + "requires": { + "escodegen": "~1.2.0", + "esprima": "~1.0.4", + "through": "~2.3.4" + } + }, + "ast-types": { + "version": "0.7.8", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "integrity": "sha1-kC0uDWDQcb3NRtwRXhgJ7RHBOKk=" + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "atoa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/atoa/-/atoa-1.0.0.tgz", + "integrity": "sha1-DMDpGkgOc4+SPrwQNnZHF3mzSkk=" + }, + "autoprefixer": { + "version": "10.4.4", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", + "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", + "dev": true, + "requires": { + "browserslist": "^4.20.2", + "caniuse-lite": "^1.0.30001317", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "autosize": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/autosize/-/autosize-5.0.1.tgz", + "integrity": "sha512-UIWUlE4TOVPNNj2jjrU39wI4hEYbneUypEqcyRmRFIx5CC2gNdg3rQr+Zh7/3h6egbBvm33TDQjNQKtj9Tk1HA==" + }, + "axios": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.4" + } + }, + "babel-loader": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", + "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + } + }, + "babel-plugin-dynamic-import-node": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", + "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", + "dev": true, + "requires": { + "object.assign": "^4.1.0" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", + "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.13.11", + "@babel/helper-define-polyfill-provider": "^0.3.1", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", + "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", + "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", + "dev": true + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" + }, + "bn.js": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", + "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", + "dev": true + }, + "body-parser": { + "version": "1.19.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.2.tgz", + "integrity": "sha512-SAAwOxgoCKMGs9uUAUFHygfLAyaniaoun6I8mFY9pRAJL9+Kec34aU+oIjDhTycub1jozEfEwx1W1IuOYxVSFw==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "~1.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "on-finished": "~2.3.0", + "qs": "6.9.7", + "raw-body": "2.4.3", + "type-is": "~1.6.18" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "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" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.11.tgz", + "integrity": "sha512-drMprzr2rDTCtgEE3VgdA9uUFaUHF+jXduwYSThHJnKMYM+FhI9Z3ph+TX3xy0LtgYHae6CHYPJ/2UnK8nQHcA==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.4" + } + }, + "boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", + "dev": true + }, + "bootstrap": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.1.3.tgz", + "integrity": "sha512-fcQztozJ8jToQWXxVuEyXWW+dSo8AiXWKwiSSrKWsRB/Qt+Ewwza+JWoLKiTuQLaEPhdNAJ7+Dosc9DOIqNy7Q==", + "requires": {} + }, + "bootstrap-cookie-alert": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/bootstrap-cookie-alert/-/bootstrap-cookie-alert-1.2.1.tgz", + "integrity": "sha512-T4nzcJkrCJCfxbw9eRM93EwO3/seSL/wbjsDLLOdLIhhksb07zhj4NOgNJUwtLc7dkI28ef1KZU9yYzHZMUXvQ==" + }, + "bootstrap-daterangepicker": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/bootstrap-daterangepicker/-/bootstrap-daterangepicker-3.1.0.tgz", + "integrity": "sha512-oaQZx6ZBDo/dZNyXGVi2rx5GmFXThyQLAxdtIqjtLlYVaQUfQALl5JZMJJZzyDIX7blfy4ppZPAJ10g8Ma4d/g==", + "requires": { + "jquery": ">=1.10", + "moment": "^2.9.0" + } + }, + "bootstrap-icons": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/bootstrap-icons/-/bootstrap-icons-1.8.1.tgz", + "integrity": "sha512-IXUqislddPJfwq6H+2nTkHyr9epO9h6u1AG0OZCx616w+TgzeoCjfmI3qJMQqt1J586gN2IxzB4M99Ip4sTZ1w==" + }, + "bootstrap-maxlength": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/bootstrap-maxlength/-/bootstrap-maxlength-1.10.1.tgz", + "integrity": "sha512-VYQosg0ojUNq05PlZcTwETm0E0Aoe/cclRmCC27QrHk/sY0Q75PUvgHYujN0gb2CD3n2olJfPeqx3EGAqpKjww==", + "requires": { + "bootstrap": "^4.4.1", + "jquery": "^3.5.1", + "qunit": "^2.10.0" + }, + "dependencies": { + "bootstrap": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-4.6.1.tgz", + "integrity": "sha512-0dj+VgI9Ecom+rvvpNZ4MUZJz8dcX7WCX+eTID9+/8HgOkv3dsRzi8BGeZJCQU6flWQVYxwTQnEZFrmJSEO7og==", + "requires": {} + } + } + }, + "bootstrap-multiselectsplitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/bootstrap-multiselectsplitter/-/bootstrap-multiselectsplitter-1.0.4.tgz", + "integrity": "sha512-G1TyuzRUOdcf9iuSoTcYPKVr1waMm6rwoBbDi8/nXM7GX5eF3qZGZXLMeT8tGoaYwuQIsZXGerMtq5VTFQgcHQ==" + }, + "boxen": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-5.1.2.tgz", + "integrity": "sha512-9gYgQKXx+1nP8mP7CzFyaUARhg7D3n1dF/FnErWmu9l6JvGpNUN278h0aSb+QjoiKSWG+iZ3uHrcqk0qrY9RQQ==", + "requires": { + "ansi-align": "^3.0.0", + "camelcase": "^6.2.0", + "chalk": "^4.1.0", + "cli-boxes": "^2.2.1", + "string-width": "^4.2.2", + "type-fest": "^0.20.2", + "widest-line": "^3.1.0", + "wrap-ansi": "^7.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "brfs": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brfs/-/brfs-2.0.2.tgz", + "integrity": "sha512-IrFjVtwu4eTJZyu8w/V2gxU7iLTtcHih67sgEdzrhjLBMHp2uYefUBfdM4k2UvcuWMgV7PQDZHSLeNWnLFKWVQ==", + "requires": { + "quote-stream": "^1.0.1", + "resolve": "^1.1.5", + "static-module": "^3.0.2", + "through2": "^2.0.0" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", + "dev": true + }, + "brotli": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/brotli/-/brotli-1.3.2.tgz", + "integrity": "sha1-UlqcrU/LqWR119OI9q7LE+7VL0Y=", + "requires": { + "base64-js": "^1.1.2" + } + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs=" + } + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-optional": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", + "integrity": "sha1-HhNyLP3g2F8SFnbCpyztUzoBiGk=", + "requires": { + "ast-transform": "0.0.0", + "ast-types": "^0.7.0", + "browser-resolve": "^1.8.1" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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.5" + } + }, + "browserslist": { + "version": "4.20.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", + "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001317", + "electron-to-chromium": "^1.4.84", + "escalade": "^3.1.1", + "node-releases": "^2.0.2", + "picocolors": "^1.0.0" + } + }, + "buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "dev": true, + "requires": { + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" + } + }, + "buffer-equal": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal/-/buffer-equal-0.0.1.tgz", + "integrity": "sha1-kbx0sR6kBbyRa8aqkI+q+ltKrEs=" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "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-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 + }, + "cacheable-request": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz", + "integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==", + "requires": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^3.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^4.1.0", + "responselike": "^1.0.2" + }, + "dependencies": { + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "requires": { + "pump": "^3.0.0" + } + }, + "lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==" + }, + "normalize-url": { + "version": "4.5.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz", + "integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==" + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camel-case": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", + "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", + "dev": true, + "requires": { + "pascal-case": "^3.1.2", + "tslib": "^2.0.3" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "caniuse-lite": { + "version": "1.0.30001332", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001332.tgz", + "integrity": "sha512-10T30NYOEQtN6C11YGg411yebhvpnC6Z102+B95eAsN0oB6KUs01ivE8u+G6FMIRtIrVlYXhL+LUwQ3/hXwDWw==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha1-wKHS86cJLgN3S/qD8UwPxXkKhmc=", + "dev": true + }, + "chart.js": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", + "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==" + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==" + }, + "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.1", + "safe-buffer": "^5.0.1" + } + }, + "ckeditor5": { + "version": "31.1.0", + "resolved": "https://registry.npmjs.org/ckeditor5/-/ckeditor5-31.1.0.tgz", + "integrity": "sha512-uuU5JNeiLFIv6oMtSmHdKOmgO8ZjqoSqV/rJWSpc9yxXbhjjs3Gdb6lbF9f0V5OCvQSIBCTtYVYllzfXAXMyqA==", + "requires": { + "@ckeditor/ckeditor5-clipboard": "^31.1.0", + "@ckeditor/ckeditor5-core": "^31.1.0", + "@ckeditor/ckeditor5-engine": "^31.1.0", + "@ckeditor/ckeditor5-enter": "^31.1.0", + "@ckeditor/ckeditor5-paragraph": "^31.1.0", + "@ckeditor/ckeditor5-select-all": "^31.1.0", + "@ckeditor/ckeditor5-typing": "^31.1.0", + "@ckeditor/ckeditor5-ui": "^31.1.0", + "@ckeditor/ckeditor5-undo": "^31.1.0", + "@ckeditor/ckeditor5-upload": "^31.1.0", + "@ckeditor/ckeditor5-utils": "^31.1.0", + "@ckeditor/ckeditor5-widget": "^31.1.0" + } + }, + "clean-css": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.0.tgz", + "integrity": "sha512-YYuuxv4H/iNb1Z/5IbMRoxgrzjWGhOEFfd+groZ5dMCVkpENiMZmwspdrzBo9286JjM1gZJPAyL7ZIdzuvu2AQ==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==" + }, + "cli-boxes": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-2.2.1.tgz", + "integrity": "sha512-y4coMcylgSCdVinjiDBuR8PCC2bLjyGTwEmPb9NHR/QaNU6EUOXcTY/s6VjGMD6ENSEaeQYHCY0GNGS5jfMwPw==" + }, + "cli-table3": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.2.tgz", + "integrity": "sha512-QyavHCaIC80cMivimWu4aWHilIpiDpfm3hGmqAmXVL1UsnbLuBSMd21hTX6VY4ZSDSM73ESLeF8TOYId3rBTbw==", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "string-width": "^4.2.0" + } + }, + "clipboard": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/clipboard/-/clipboard-2.0.10.tgz", + "integrity": "sha512-cz3m2YVwFz95qSEbCDi2fzLN/epEN9zXBvfgAoGkvGOJZATMl9gtTDVOtBYkx2ODUJl2kvmud7n32sV2BpYR4g==", + "requires": { + "good-listener": "^1.2.2", + "select": "^1.1.2", + "tiny-emitter": "^2.0.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=" + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha1-0dyXOSAxTfZ/vrlCI7TuNQI56Ws=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "coa": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", + "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", + "dev": true, + "requires": { + "@types/q": "^1.5.1", + "chalk": "^2.4.1", + "q": "^1.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "collect.js": { + "version": "4.32.0", + "resolved": "https://registry.npmjs.org/collect.js/-/collect.js-4.32.0.tgz", + "integrity": "sha512-Ro0fspulC0J325cgFdkzFEkRDs6MmclMy2Fy5adhdFKg5QqMv1nn1zLpCdAxiehlur6Ep08Wr1f7ldNv+fB6+Q==", + "dev": true + }, + "color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", + "dev": true, + "requires": { + "color-convert": "^1.9.3", + "color-string": "^1.6.0" + }, + "dependencies": { + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "color-string": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", + "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", + "dev": true, + "requires": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "colord": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.2.tgz", + "integrity": "sha512-Uqbg+J445nc1TKn4FoDPS6ZZqAvEDnwrH42yo8B40JSOgSLxMZ/gt3h4nmCtPLQeXhjJJkqBx7SCY35WnIixaQ==", + "dev": true + }, + "colorette": { + "version": "2.0.16", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.16.tgz", + "integrity": "sha512-hUewv7oMjCp+wkBv5Rm0v87eJhq4woh5rSR+42YSQJKecCqgIqNkZ6lAlQms/BwHPJA5NKMRlpxPRv0n8HQW6g==", + "dev": true + }, + "colors": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-0.6.2.tgz", + "integrity": "sha1-JCP+ZnisDF2uiFLl0OW+CMmXq8w=", + "dev": true + }, + "commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==" + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "peer": true + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dev": true, + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dev": true, + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "concat": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/concat/-/concat-1.0.3.tgz", + "integrity": "sha1-QPM1MInWVGdpXLGIa0Xt1jfYzKg=", + "dev": true, + "requires": { + "commander": "^2.9.0" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "configstore": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-5.0.1.tgz", + "integrity": "sha512-aMKprgk5YhBNyH25hj8wGt2+D52Sw1DRRIzqBwLp2Ya9mFmY8KPvvtvmna8SxVR9JMZ4kzMD68N22vlaRpkeFA==", + "requires": { + "dot-prop": "^5.2.0", + "graceful-fs": "^4.1.2", + "make-dir": "^3.0.0", + "unique-string": "^2.0.0", + "write-file-atomic": "^3.0.0", + "xdg-basedir": "^4.0.0" + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "consola": { + "version": "2.15.3", + "resolved": "https://registry.npmjs.org/consola/-/consola-2.15.3.tgz", + "integrity": "sha512-9vAdYbHj6x2fLKC4+oPH0kFzY/orMZyG2Aj+kNylHxKGJ/Ed4dpNyAQYwJOdqO4zdM7XpVHmyejQDcQHrnuXbw==", + "dev": true + }, + "console-browserify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", + "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", + "dev": true + }, + "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.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "requires": { + "safe-buffer": "5.2.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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 + }, + "contra": { + "version": "1.9.4", + "resolved": "https://registry.npmjs.org/contra/-/contra-1.9.4.tgz", + "integrity": "sha1-9TveQtfltZhcrk2ZqNYQUm3o8o0=", + "requires": { + "atoa": "1.0.0", + "ticky": "1.0.1" + } + }, + "convert-source-map": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", + "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "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 + }, + "core-js-compat": { + "version": "3.22.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.22.0.tgz", + "integrity": "sha512-WwA7xbfRGrk8BGaaHlakauVXrlYmAIkk8PNGb1FDQS+Rbrewc3pgFfwJFRw6psmJVAll7Px9UHRYE16oRQnwAQ==", + "dev": true, + "requires": { + "browserslist": "^4.20.2", + "semver": "7.0.0" + }, + "dependencies": { + "semver": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", + "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", + "dev": true + } + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cosmiconfig": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", + "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "countup.js": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/countup.js/-/countup.js-2.1.0.tgz", + "integrity": "sha512-VanMzLEjkt3Hp/ty5BXikM8s4wE3OH4m1AnFro7THR86nYGRvGfGCoV+zrRJcqTbZi7X1egkLSIeUKDz7+4XLA==" + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cropperjs": { + "version": "1.5.12", + "resolved": "https://registry.npmjs.org/cropperjs/-/cropperjs-1.5.12.tgz", + "integrity": "sha512-re7UdjE5UnwdrovyhNzZ6gathI4Rs3KGCBSc8HCIjUo5hO42CtzyblmWLj6QWVw7huHyDMfpKxhiO2II77nhDw==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "crossvent": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/crossvent/-/crossvent-1.5.5.tgz", + "integrity": "sha1-rSCHjkkh6b5z2daXb4suzQ9xoLE=", + "requires": { + "custom-event": "^1.0.0" + } + }, + "crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha1-iNf/fsDfuG9xPch7u0LQRNPmxBs=", + "dev": true + }, + "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.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "crypto-js": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/crypto-js/-/crypto-js-4.1.1.tgz", + "integrity": "sha512-o2JlM7ydqd3Qk9CA0L4NL6mTzU2sdx96a+oOfPu8Mkl/PK51vSyoi8/rQ8NknZtk44vq15lmhAj9CIAGwgeWKw==" + }, + "crypto-random-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", + "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==" + }, + "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-declaration-sorter": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.2.2.tgz", + "integrity": "sha512-Ufadglr88ZLsrvS11gjeu/40Lw74D9Am/Jpr3LlYm5Q4ZP5KdlUhG+6u2EjyXeZcxmZ2h1ebCKngDjolpeLHpg==", + "dev": true, + "requires": {} + }, + "css-loader": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-5.2.7.tgz", + "integrity": "sha512-Q7mOvpBNBG7YrVGMxRxcBJZFL75o+cH2abNASdibkj/fffYD8qWbInZrD0S9ccI6vZclF3DsHE7njGlLtaHbhg==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.15", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.0", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.1.0", + "schema-utils": "^3.0.0", + "semver": "^7.3.5" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "css-select": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^6.0.1", + "domhandler": "^4.3.1", + "domutils": "^2.8.0", + "nth-check": "^2.0.1" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "css-select-base-adapter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", + "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", + "dev": true + }, + "css-tree": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", + "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", + "dev": true, + "requires": { + "mdn-data": "2.0.14", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssfilter": { + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/cssfilter/-/cssfilter-0.0.10.tgz", + "integrity": "sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4=", + "peer": true + }, + "cssnano": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-5.1.7.tgz", + "integrity": "sha512-pVsUV6LcTXif7lvKKW9ZrmX+rGRzxkEdJuVJcp5ftUjWITgwam5LMZOgaTvUrWPkcORBey6he7JKb4XAJvrpKg==", + "dev": true, + "requires": { + "cssnano-preset-default": "^5.2.7", + "lilconfig": "^2.0.3", + "yaml": "^1.10.2" + } + }, + "cssnano-preset-default": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-5.2.7.tgz", + "integrity": "sha512-JiKP38ymZQK+zVKevphPzNSGHSlTI+AOwlasoSRtSVMUU285O7/6uZyd5NbW92ZHp41m0sSHe6JoZosakj63uA==", + "dev": true, + "requires": { + "css-declaration-sorter": "^6.2.2", + "cssnano-utils": "^3.1.0", + "postcss-calc": "^8.2.3", + "postcss-colormin": "^5.3.0", + "postcss-convert-values": "^5.1.0", + "postcss-discard-comments": "^5.1.1", + "postcss-discard-duplicates": "^5.1.0", + "postcss-discard-empty": "^5.1.1", + "postcss-discard-overridden": "^5.1.0", + "postcss-merge-longhand": "^5.1.4", + "postcss-merge-rules": "^5.1.1", + "postcss-minify-font-values": "^5.1.0", + "postcss-minify-gradients": "^5.1.1", + "postcss-minify-params": "^5.1.2", + "postcss-minify-selectors": "^5.2.0", + "postcss-normalize-charset": "^5.1.0", + "postcss-normalize-display-values": "^5.1.0", + "postcss-normalize-positions": "^5.1.0", + "postcss-normalize-repeat-style": "^5.1.0", + "postcss-normalize-string": "^5.1.0", + "postcss-normalize-timing-functions": "^5.1.0", + "postcss-normalize-unicode": "^5.1.0", + "postcss-normalize-url": "^5.1.0", + "postcss-normalize-whitespace": "^5.1.1", + "postcss-ordered-values": "^5.1.1", + "postcss-reduce-initial": "^5.1.0", + "postcss-reduce-transforms": "^5.1.0", + "postcss-svgo": "^5.1.0", + "postcss-unique-selectors": "^5.1.1" + } + }, + "cssnano-util-get-arguments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", + "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", + "dev": true + }, + "cssnano-util-get-match": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", + "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", + "dev": true + }, + "cssnano-util-raw-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", + "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "cssnano-util-same-parent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", + "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", + "dev": true + }, + "cssnano-utils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-3.1.0.tgz", + "integrity": "sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==", + "dev": true, + "requires": {} + }, + "csso": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", + "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", + "dev": true, + "requires": { + "css-tree": "^1.1.2" + } + }, + "custom-event": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", + "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=" + }, + "d": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "dash-ast": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/dash-ast/-/dash-ast-2.0.1.tgz", + "integrity": "sha512-5TXltWJGc+RdnabUGzhRae1TRq6m4gr+3K2wQX0is5/F2yS6MJXJvLyI3ErAnsAXuJoGqvfVD5icRgim07DrxQ==" + }, + "datatables.net": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/datatables.net/-/datatables.net-1.11.5.tgz", + "integrity": "sha512-nlFst2xfwSWaQgaOg5sXVG3cxYC0tH8E8d65289w9ROgF2TmLULOOpcdMpyxxUim/qEwVSEem42RjkTWEpr3eA==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-bs5": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/datatables.net-bs5/-/datatables.net-bs5-1.11.5.tgz", + "integrity": "sha512-1zyh972GtuK1uAb9h8nP3jJ7f/3UgCDq69LAaZS2bVd4mEHECJ6vrZLacxrkOHOs/q/H3v5sEMeZ46vXz8ox4w==", + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-buttons": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons/-/datatables.net-buttons-1.7.1.tgz", + "integrity": "sha512-D2OxZeR18jhSx+l0xcfAJzfUH7l3LHCu0e606fV7+v3hMhphOfljjZYLaiRmGiR9lqO/f5xE/w2a+OtG/QMavw==", + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-buttons-bs5": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/datatables.net-buttons-bs5/-/datatables.net-buttons-bs5-1.7.1.tgz", + "integrity": "sha512-T/TqOrB03tK1ENsjYgGZGMKhVAjzk3F8LXC57j4pEjAq77exknI7KL/kgKpXahZnU5T5mABfNxIOcK2ZxolFRA==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-colreorder": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder/-/datatables.net-colreorder-1.5.5.tgz", + "integrity": "sha512-AUwv5A/87I4hg7GY/WbhRrDhqng9b019jLvvKutHibSPCEtMDWqyNtuP0q8zYoquqU9UQ1/nqXLW/ld8TzIDYQ==", + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-colreorder-bs5": { + "version": "1.5.5", + "resolved": "https://registry.npmjs.org/datatables.net-colreorder-bs5/-/datatables.net-colreorder-bs5-1.5.5.tgz", + "integrity": "sha512-WoOV8deN4E12MrCUtAPhV8rYVrX0xHXzVcvJ79Cf3Lvabt6nf9FD9sxJ7SMjfEVIP0A9lUuEdWinftyodcuPAA==", + "requires": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-colreorder": ">=1.5.4", + "jquery": ">=1.7" + } + }, + "datatables.net-datetime": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/datatables.net-datetime/-/datatables.net-datetime-1.1.2.tgz", + "integrity": "sha512-UpmtpQ7oVtMgG0lt0nnwNfYH0YRWOk/SKv4Z+5RI8JX/rJHUQXyt9Li+7U0znmIv+4Vkw8yuUV9n9WRAEOviJQ==" + }, + "datatables.net-fixedcolumns": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns/-/datatables.net-fixedcolumns-3.3.3.tgz", + "integrity": "sha512-xo6MeI2xc/Ufk4ffrpao+OiPo8/GPB8cO80gA6NFgYBVw6eP9pPa2NsV+gSWRVr7d3A8iZC7mUZT5WdtliNHEA==", + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-fixedcolumns-bs5": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/datatables.net-fixedcolumns-bs5/-/datatables.net-fixedcolumns-bs5-3.3.3.tgz", + "integrity": "sha512-4dDV0ZL5qLd6tfY9ALL/KDgOO2JUFIq+Yp6yaOf+5LkYxRBiTq3EcXwg2IArwtqFRLsGnMjbuFbpDcIFXPVeUg==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-fixedheader": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader/-/datatables.net-fixedheader-3.2.2.tgz", + "integrity": "sha512-2bA4HXaL+vA/HesknSQcvDcSMzzDJx11lrLCy8Om4YpZBNtpvETFTqcqRgUmPYrSN8Eq5+OhmPpYkbzy5Nu11Q==", + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-fixedheader-bs5": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/datatables.net-fixedheader-bs5/-/datatables.net-fixedheader-bs5-3.2.2.tgz", + "integrity": "sha512-6CftSIMWv5p2gzeEWKdsbEFHkU6/egS2svNxzqCOdgKSNfx4Mx7jkrCDKrCehh8CWlFi6WtWo7qg//GIAReQ+g==", + "requires": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-fixedheader": ">=3.2.0", + "jquery": ">=1.7" + } + }, + "datatables.net-plugins": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/datatables.net-plugins/-/datatables.net-plugins-1.11.5.tgz", + "integrity": "sha512-+Rsf/fyLG8GyFqp7Bvd1ElqWGQO3NPsx2VADn9X8QaZbctshGVW0sqvR5V7iHHgY6OY1LR0+t6qIMhan9BM4gA==" + }, + "datatables.net-responsive": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/datatables.net-responsive/-/datatables.net-responsive-2.2.9.tgz", + "integrity": "sha512-C+mOY/mG17zzaYPtgqAOsC4JlGddGkKmO/ADNEtNZ41bcPV1/3jJzkOWT3DCZ400NmkXLDz4WObWlPT8WCgfzg==", + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-responsive-bs5": { + "version": "2.2.9", + "resolved": "https://registry.npmjs.org/datatables.net-responsive-bs5/-/datatables.net-responsive-bs5-2.2.9.tgz", + "integrity": "sha512-2g+gFyQCek/OR1RQTVPVq42NUQ+cGGeGKV6+qALyO6MCGYqJ4oKNb368EmvyHGCCRdEngiaC/1eesmupF0q20w==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-rowgroup": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup/-/datatables.net-rowgroup-1.1.4.tgz", + "integrity": "sha512-Oe9mL3X8RXLOQZblJVWTYD0melyw3xoPeQ3T2x1k2guTFxob8/2caKuzn95oFJau6tvbhsvY/QneTaCzHRKnnQ==", + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-rowgroup-bs5": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/datatables.net-rowgroup-bs5/-/datatables.net-rowgroup-bs5-1.1.4.tgz", + "integrity": "sha512-74A5jKJrZ6FoSNo1fCGyI0xCUyEQVyMEBLhUWgsLC5L8haKOE2eA94fyPAXShcyWg4/iATwpwgJDv6rZSzCQ4g==", + "requires": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-rowgroup": ">=1.1.3", + "jquery": ">=1.7" + } + }, + "datatables.net-rowreorder": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder/-/datatables.net-rowreorder-1.2.8.tgz", + "integrity": "sha512-gFNKMa5DtigbjhSs96ZKT3uICC1z87EuLUIYLVPEXHc7v/WVOiQ3AaRvIQtExORPi/jQzxEoO5wO9UGZ0ldsUQ==", + "requires": { + "datatables.net": "^1.10.15", + "jquery": ">=1.7" + } + }, + "datatables.net-rowreorder-bs5": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/datatables.net-rowreorder-bs5/-/datatables.net-rowreorder-bs5-1.2.8.tgz", + "integrity": "sha512-5aiTtKokn+dHGcVEfUR9Mp6yCj39KiSddZKEJFrWqXxbZSeigE7X7ac82BUw9Cw+9Vpn59GhmUeguQ5XS2HUrg==", + "requires": { + "jquery": ">=1.7" + } + }, + "datatables.net-scroller": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/datatables.net-scroller/-/datatables.net-scroller-2.0.5.tgz", + "integrity": "sha512-gXxQcbUgDURcxGUCIj+5YBepJJcWWGJgFlewGy/odaAi+H1Ol8TKcXoQD20y2zcO7l5DWEbzNwHwN0bciBONPw==", + "requires": { + "datatables.net": ">=1.10.25", + "jquery": ">=1.7" + } + }, + "datatables.net-scroller-bs5": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/datatables.net-scroller-bs5/-/datatables.net-scroller-bs5-2.0.5.tgz", + "integrity": "sha512-hnF/q81WGwAmwVHxlSupkrxJD0UJ1rythh/+fUKkisFMS/BwXA06DxnldbMu9pZGqN0IsaJlaEHDojnSpBhu2w==", + "requires": { + "datatables.net-bs5": ">=1.10.25", + "datatables.net-scroller": ">=2.0.4", + "jquery": ">=1.7" + } + }, + "datatables.net-select": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/datatables.net-select/-/datatables.net-select-1.3.4.tgz", + "integrity": "sha512-iQ/dBHIWkhfCBxzNdtef79seCNO1ZsA5zU0Uiw3R2mlwmjcJM1xn6pFNajke6SX7VnlzndGDHGqzzEljSqz4pA==", + "requires": { + "datatables.net": ">=1.11.3", + "jquery": ">=1.7" + } + }, + "datatables.net-select-bs5": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/datatables.net-select-bs5/-/datatables.net-select-bs5-1.3.4.tgz", + "integrity": "sha512-fJyFVtDzo4P4oIOUU2vSvYLuegDdSoqJrqPbFaI0DX2O/MYg2H9hXo09UZ7No/pxBJ1NBRCm8Q3U9uyoCBK7RQ==", + "requires": { + "datatables.net-bs5": ">=1.11.3", + "datatables.net-select": ">=1.3.3", + "jquery": ">=1.7" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M=", + "requires": { + "mimic-response": "^1.0.0" + } + }, + "deep-equal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", + "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", + "requires": { + "is-arguments": "^1.0.4", + "is-date-object": "^1.0.1", + "is-regex": "^1.0.4", + "object-is": "^1.0.1", + "object-keys": "^1.1.1", + "regexp.prototype.flags": "^1.2.0" + } + }, + "deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "default-gateway": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-6.0.3.tgz", + "integrity": "sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==", + "dev": true, + "requires": { + "execa": "^5.0.0" + } + }, + "defer-to-connect": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz", + "integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==" + }, + "define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "dev": true + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/del/-/del-6.0.0.tgz", + "integrity": "sha512-1shh9DQ23L16oXSZKB2JxpL7iMy2E0S9d517ptA1P8iw0alkPtQcrKH7ru31rYtKwF499HkTu+DRzq3TCKDFRQ==", + "requires": { + "globby": "^11.0.1", + "graceful-fs": "^4.2.4", + "is-glob": "^4.0.1", + "is-path-cwd": "^2.2.0", + "is-path-inside": "^3.0.2", + "p-map": "^4.0.0", + "rimraf": "^3.0.2", + "slash": "^3.0.0" + }, + "dependencies": { + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + } + } + } + }, + "delegate": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/delegate/-/delegate-3.2.0.tgz", + "integrity": "sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "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-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true + }, + "dfa": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/dfa/-/dfa-1.2.0.tgz", + "integrity": "sha512-ED3jP8saaweFTjeGX8HQPjeC1YYyZs98jGNZx6IiBvxW7JG5v492kamAQB3m2wop07CvU/RQmzcKr6bgcC5D/Q==" + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "requires": { + "path-type": "^4.0.0" + } + }, + "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": "5.3.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.3.1.tgz", + "integrity": "sha512-spBwIj0TK0Ey3666GwIdWVfUpLyubpU53BTCu8iPn4r4oXd9O14Hjg3EHw3ts2oed77/SeckunUYCyRlSngqHw==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "dom-serializer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "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": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true + }, + "domhandler": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-3.3.0.tgz", + "integrity": "sha512-J1C5rIANUbuYK+FuFL98650rihynUOEzRLxW+90bKZRWB6A1X1Tf82GxR1qAWLyfNPRvjqfip3Q5tdYlmAa9lA==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1" + } + }, + "domutils": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + }, + "dependencies": { + "domhandler": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + } + } + }, + "dot-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", + "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "requires": { + "is-obj": "^2.0.0" + } + }, + "dotenv": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-10.0.0.tgz", + "integrity": "sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==", + "dev": true + }, + "dotenv-expand": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz", + "integrity": "sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==", + "dev": true + }, + "dragula": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/dragula/-/dragula-3.7.3.tgz", + "integrity": "sha512-/rRg4zRhcpf81TyDhaHLtXt6sEywdfpv1cRUMeFFy7DuypH2U0WUL0GTdyAQvXegviT4PJK4KuMmOaIDpICseQ==", + "requires": { + "contra": "1.9.4", + "crossvent": "1.5.5" + } + }, + "dropzone": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/dropzone/-/dropzone-5.9.3.tgz", + "integrity": "sha512-Azk8kD/2/nJIuVPK+zQ9sjKMRIpRvNyqn9XwbBHNq+iNuSccbJS6hwm1Woy0pMST0erSo0u4j+KJaodndDk4vA==" + }, + "duplexer2": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", + "integrity": "sha1-ixLauHjA1p4+eJEFFmKjL8a93ME=", + "requires": { + "readable-stream": "^2.0.2" + } + }, + "duplexer3": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.4.tgz", + "integrity": "sha1-7gHdHKwO08vH/b6jfcCo8c4ALOI=" + }, + "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.4.113", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.113.tgz", + "integrity": "sha512-s30WKxp27F3bBH6fA07FYL2Xm/FYnYrKpMjHr3XVCTUb9anAyZn/BeZfPWgTZGAbJeT4NxNwISSbLcYZvggPMA==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "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.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "requires": { + "once": "^1.4.0" + } + }, + "enhanced-resolve": { + "version": "5.9.3", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz", + "integrity": "sha512-Bq9VSor+kjvW3f9/MiiR4eE3XYgOl7/rS8lnSxbRbF3kS0B2r+Y9w5krBWxZgDxASVZbdYrn5wT4j/Wb0J9qow==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "entities": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", + "dev": true + }, + "envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.5.tgz", + "integrity": "sha512-Aa2G2+Rd3b6kxEUKTF4TaW67czBLyAv3z7VOhYRU50YBx+bbsYZ9xQP4lMNazePuFlybXI0V4MruPos7qUo5fA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "get-intrinsic": "^1.1.1", + "get-symbol-description": "^1.0.0", + "has": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.4", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.2", + "string.prototype.trimend": "^1.0.4", + "string.prototype.trimstart": "^1.0.4", + "unbox-primitive": "^1.0.1" + } + }, + "es-module-lexer": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", + "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", + "dev": true + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es5-ext": { + "version": "0.10.60", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.60.tgz", + "integrity": "sha512-jpKNXIt60htYG59/9FGf2PYT3pwMpnEbNKysU+k/4FGwyGtMotOvcZOuW+EmXXYASRqYSXQfGL5cVIthOTgbkg==", + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "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=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-set": "~0.1.5", + "es6-symbol": "~3.1.1", + "event-emitter": "~0.3.5" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==" + }, + "es6-promise-polyfill": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/es6-promise-polyfill/-/es6-promise-polyfill-1.2.0.tgz", + "integrity": "sha1-84kl8jyz4+jObNqP93T867sJDN4=" + }, + "es6-set": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/es6-set/-/es6-set-0.1.5.tgz", + "integrity": "sha1-0rPsXU2ADO2BjbU40ol02wpzzLE=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14", + "es6-iterator": "~2.0.1", + "es6-symbol": "3.1.1", + "event-emitter": "~0.3.5" + }, + "dependencies": { + "es6-symbol": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.1.tgz", + "integrity": "sha1-vwDvT9q2uhtG7Le2KbTH7VcVzHc=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + } + } + }, + "es6-shim": { + "version": "0.35.6", + "resolved": "https://registry.npmjs.org/es6-shim/-/es6-shim-0.35.6.tgz", + "integrity": "sha512-EmTr31wppcaIAgblChZiuN/l9Y7DPyw8Xtbg7fIVngn6zMW+IEBJDJngeKC3x6wr0V/vcA2wqeFnaw1bFJbDdA==" + }, + "es6-symbol": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-goat": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-2.1.1.tgz", + "integrity": "sha512-8/uIhbG12Csjy2JEW7D9pHbreaVaS/OpN3ycnyvElTdwM5n6GY6W6e2IPemfvGZeUMqZ9A/3GqIZMgKnBhAw/Q==" + }, + "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 + }, + "escodegen": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz", + "integrity": "sha1-Cd55Z3kcyVi3+Jot220jRRrzJ+E=", + "requires": { + "esprima": "~1.0.4", + "estraverse": "~1.5.0", + "esutils": "~1.0.0", + "source-map": "~0.1.30" + }, + "dependencies": { + "esutils": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha1-gVHTWOIMisx/t0XnRywAJf5JZXA=" + }, + "source-map": { + "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha1-wkvBRspRfBRx9drL4lcbK3+eM0Y=", + "optional": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + } + } + }, + "esprima": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha1-n1V+CPw7TSbs6d00+Pv0drYlha0=" + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esri-leaflet": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/esri-leaflet/-/esri-leaflet-3.0.8.tgz", + "integrity": "sha512-mLb4pRfDAbkG1YhuajD22erLXIAtrF1R32hmgmlJNI3t47n6KjTppCb8lViia0O7+GDORXFuJ9Lj9RkpsaKhSA==", + "requires": { + "@terraformer/arcgis": "^2.1.0", + "tiny-binary-search": "^1.0.3" + } + }, + "esri-leaflet-geocoder": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/esri-leaflet-geocoder/-/esri-leaflet-geocoder-3.1.3.tgz", + "integrity": "sha512-XuorBaPKOq2XBswyWS3fX4I0EyGamdQsao/NQbn+9wlCZtpDrpIn2iKLY7x4uOaPC4wCjE/rskli8UMCVwlZrg==", + "requires": { + "esri-leaflet": "^3.0.2", + "leaflet": "^1.0.0" + } + }, + "estraverse": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha1-hno+jlip+EYYr7bC3bzZFrfLr3E=" + }, + "estree-is-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-is-function/-/estree-is-function-1.0.0.tgz", + "integrity": "sha512-nSCWn1jkSq2QAtkaVLJZY2ezwcFO161HVc174zL1KPW3RJ+O6C3eJb8Nx7OXzvhoEv+nLgSR1g71oWUHUDTrJA==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "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=", + "requires": { + "d": "1", + "es5-ext": "~0.10.14" + } + }, + "eventemitter3": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-2.0.3.tgz", + "integrity": "sha1-teEHm1n7XhuidxwKmTvgYKWMmbo=" + }, + "events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "dev": true + }, + "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" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "dependencies": { + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + } + } + }, + "express": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/express/-/express-4.17.3.tgz", + "integrity": "sha512-yuSQpz5I+Ch7gFrPCk4/c+dIBKlQUxtgwqzph132bsT6qhuzss6I8cLJQz7B3rFblzd6wtcI0ZbGltH/C4LjUg==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.19.2", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.4.2", + "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.2", + "fresh": "0.5.2", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.9.7", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.17.2", + "serve-static": "1.14.2", + "setprototypeof": "1.2.0", + "statuses": "~1.5.0", + "type-is": "~1.6.18", + "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 + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.6.0.tgz", + "integrity": "sha512-sdBImtzkq2HpkdRLtlLWDa6w4DX22ijZLKx8BMPUuKe1c5lbN6xwQDQCxSfxBQnHZ13ls/FH0MQZx/q/gr6FQg==", + "requires": { + "type": "^2.5.0" + }, + "dependencies": { + "type": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/type/-/type-2.6.0.tgz", + "integrity": "sha512-eiDBDOmkih5pMbo9OqsqPRGMljLodLcwd5XD5JbtNB0o89xZAwynY9EdCDsJU7LtcVCClu9DvM7/0Ep1hYX3EQ==" + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-diff": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.1.2.tgz", + "integrity": "sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==" + }, + "fast-glob": { + "version": "3.2.11", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", + "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=" + }, + "fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "fastq": { + "version": "1.13.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", + "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", + "dev": true, + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "file-loader": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "file-type": { + "version": "12.4.2", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-12.4.2.tgz", + "integrity": "sha512-UssQP5ZgIOKelfsaB5CuGAL+Y+q7EmONuiwF3N5HAH0t27rvrttgi6Ra9k/+DVaY9UF6+ybxu5pOXLUdA8N7Vg==", + "dev": true + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.3", + "statuses": "~1.5.0", + "unpipe": "~1.0.0" + }, + "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" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "findup": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/findup/-/findup-0.1.5.tgz", + "integrity": "sha1-itkpozk7rGJ5V6fl3kYjsGsOLOs=", + "dev": true, + "requires": { + "colors": "~0.6.0-1", + "commander": "~2.1.0" + }, + "dependencies": { + "commander": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.1.0.tgz", + "integrity": "sha1-0SG7roYNmZKj1Re6lvVliOR8Z4E=", + "dev": true + } + } + }, + "flatpickr": { + "version": "4.6.13", + "resolved": "https://registry.npmjs.org/flatpickr/-/flatpickr-4.6.13.tgz", + "integrity": "sha512-97PMG/aywoYpB4IvbvUJi0RQi8vearvU0oov1WW3k0WZPBMrTQVqekSX5CjSG/M4Q3i6A/0FKXC7RyAoAUUSPw==" + }, + "flot": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/flot/-/flot-4.2.2.tgz", + "integrity": "sha512-Strct/A27o0TA25X7Z0pxKhwK4djiP1Kjeqj0tkiqrkRu1qYPqfbp5BYuxEL8CWDNtj85Uc0PnG2E2plo1+VMg==" + }, + "follow-redirects": { + "version": "1.14.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", + "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", + "dev": true + }, + "forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "dev": true + }, + "fraction.js": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", + "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", + "dev": true + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "dev": true + }, + "fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs-monkey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.3.tgz", + "integrity": "sha512-cybjIfiiE+pTWicSCLFHSrXZ6EilF30oh91FDP9S2B051prEa7QWfrVTQm10/dDpswBDXZugPa1Ogu8Yh+HV0Q==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "optional": true + }, + "fslightbox": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fslightbox/-/fslightbox-3.3.1.tgz", + "integrity": "sha512-r8mS2lnqw+4F7fQmIXZ4Y+tulxqGsZyG7wzMhWKl8MHvVZRJnclUyt+n+hfTkUa+e1bvlzpw4tY/X9mwqC4wCg==" + }, + "fullcalendar": { + "version": "5.11.0", + "resolved": "https://registry.npmjs.org/fullcalendar/-/fullcalendar-5.11.0.tgz", + "integrity": "sha512-R3yQMKJtP6jWZ3o9fNB0WUOl6Oi+vus3ciLtt3eva7ISutkMm6nE4lA+xhfTS3OIevxVQOv0O646R6G8o7sMXA==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==" + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-assigned-identifiers": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz", + "integrity": "sha512-mBBwmeGTrxEMO4pMaaf/uUEFHnYtwr8FTe8Y/mer4rcV/bye0qGm6pw1bGZFGStxC5O76c5ZAVBGnqHmOaJpdQ==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", + "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1" + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "global-dirs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.0.tgz", + "integrity": "sha512-v8ho2DS5RiCjftj1nD9NmnfaOzTdud7RRnVd9kFNOjqZbISlx5DQ+OrTkywgd0dIt7oFCvKetZSHoHcP3sDdiA==", + "requires": { + "ini": "2.0.0" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalyzer": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/globalyzer/-/globalyzer-0.1.0.tgz", + "integrity": "sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==" + }, + "globby": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-10.0.2.tgz", + "integrity": "sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.0.3", + "glob": "^7.1.3", + "ignore": "^5.1.1", + "merge2": "^1.2.3", + "slash": "^3.0.0" + } + }, + "globrex": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/globrex/-/globrex-0.1.2.tgz", + "integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==" + }, + "good-listener": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/good-listener/-/good-listener-1.2.2.tgz", + "integrity": "sha1-1TswzfkxPf+33JoNR3CWqm0UXFA=", + "requires": { + "delegate": "^3.1.2" + } + }, + "got": { + "version": "9.6.0", + "resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz", + "integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==", + "requires": { + "@sindresorhus/is": "^0.14.0", + "@szmarczak/http-timer": "^1.1.2", + "cacheable-request": "^6.0.0", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^4.1.0", + "lowercase-keys": "^1.0.1", + "mimic-response": "^1.0.1", + "p-cancelable": "^1.0.0", + "to-readable-stream": "^1.0.0", + "url-parse-lax": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", + "dev": true + }, + "handle-thing": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "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.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + } + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-yarn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-2.1.0.tgz", + "integrity": "sha512-UqBRqi4ju7T+TqGNdqAO0PaSVGsDGJUBQvk9eUWNGRY1CFGDzYhLWoM7JQEemnlvVcv/YEmc2wNW8BC24EnUsw==" + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "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.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true + }, + "hex-color-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", + "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", + "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.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "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.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "hsl-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", + "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", + "dev": true + }, + "hsla-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", + "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", + "dev": true + }, + "html-entities": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.3.3.tgz", + "integrity": "sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==", + "dev": true + }, + "html-loader": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-1.3.2.tgz", + "integrity": "sha512-DEkUwSd0sijK5PF3kRWspYi56XP7bTNkyg5YWSzBdjaSDmvCufep5c4Vpb3PBf6lUL0YPtLwBfy9fL0t5hBAGA==", + "dev": true, + "requires": { + "html-minifier-terser": "^5.1.1", + "htmlparser2": "^4.1.0", + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "html-minifier-terser": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-5.1.1.tgz", + "integrity": "sha512-ZPr5MNObqnV/T9akshPKbVgyOqLmy+Bxo7juKCfTfnjNniTAMdy4hz21YQqoofMBJD2kdREaqPPdThoR78Tgxg==", + "dev": true, + "requires": { + "camel-case": "^4.1.1", + "clean-css": "^4.2.3", + "commander": "^4.1.1", + "he": "^1.2.0", + "param-case": "^3.0.3", + "relateurl": "^0.2.7", + "terser": "^4.6.3" + }, + "dependencies": { + "clean-css": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-4.2.4.tgz", + "integrity": "sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==", + "dev": true, + "requires": { + "source-map": "~0.6.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "terser": { + "version": "4.8.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.0.tgz", + "integrity": "sha512-EAPipTNeWsb/3wLPeup1tVPaXfIaU68xMnVdPafIL1TV05OhASArYyIfFvnvJCNrR2NIOvDVNNTFRa+Re2MWyw==", + "dev": true, + "requires": { + "commander": "^2.20.0", + "source-map": "~0.6.1", + "source-map-support": "~0.5.12" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + } + } + }, + "htmlparser2": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-4.1.0.tgz", + "integrity": "sha512-4zDq1a1zhE4gQso/c5LP1OtrhYTncXNSpvJYtWJBtXAETPlMfi3IFNjGuQbYLuVY4ZR0QMqRVvo4Pdy9KLyP8Q==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^3.0.0", + "domutils": "^2.0.0", + "entities": "^2.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.0.tgz", + "integrity": "sha512-carPklcUh7ROWRK7Cv27RPtdhYhUsela/ue5/jKzjegVvXDqM2ILE9Q2BGn9JZJh1g87cp56su/FgQSzcWS8cQ==" + }, + "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.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "http-parser-js": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.6.tgz", + "integrity": "sha512-vDlkRPDJn93swjcjqMSaGSPABbIarsr1TLAui/gLDXzV5VsJNdXNzMYDyNBLQkjWQCJ1uizu8T2oDMhmGt0PRA==", + "dev": true + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "dependencies": { + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + } + } + }, + "http-proxy-middleware": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.5.tgz", + "integrity": "sha512-ORErEaxkjyrhifofwCuQttHPUSestLtiPDwV0qQOFB0ww6695H953wIGRnkakw1K+GAP+t8/RPbfDB75RFL4Fg==", + "dev": true, + "requires": { + "@types/http-proxy": "^1.17.8", + "http-proxy": "^1.18.1", + "is-glob": "^4.0.1", + "is-plain-obj": "^3.0.0", + "micromatch": "^4.0.2" + } + }, + "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 + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "dev": true, + "requires": {} + }, + "ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true + }, + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==" + }, + "ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha1-SMptcvbGo68Aqa1K5odr44ieKwk=" + }, + "imagemin": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/imagemin/-/imagemin-7.0.1.tgz", + "integrity": "sha512-33AmZ+xjZhg2JMCe+vDf6a9mzWukE7l+wAtesjE7KyteqqKjzxv7aVQeWnul1Ve26mWvEQqyPwl0OctNBfSR9w==", + "dev": true, + "requires": { + "file-type": "^12.0.0", + "globby": "^10.0.0", + "graceful-fs": "^4.2.2", + "junk": "^3.1.0", + "make-dir": "^3.0.0", + "p-pipe": "^3.0.0", + "replace-ext": "^1.0.0" + } + }, + "img-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/img-loader/-/img-loader-4.0.0.tgz", + "integrity": "sha512-UwRcPQdwdOyEHyCxe1V9s9YFwInwEWCpoO+kJGfIqDrBDqA8jZUsEZTxQ0JteNPGw/Gupmwesk2OhLTcnw6tnQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=" + }, + "immutable": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz", + "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==", + "dev": true + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-lazy": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-2.1.0.tgz", + "integrity": "sha1-BWmOPUXIjo1+nZLLBYTnfwlvPkM=" + }, + "import-local": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", + "dev": true, + "requires": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=" + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==" + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", + "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==" + }, + "inputmask": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/inputmask/-/inputmask-5.0.7.tgz", + "integrity": "sha512-rUxbRDS25KEib+c/Ow+K01oprU/+EK9t9SOPC8ov94/ftULGDqj1zOgRU/Hko6uzoKRMdwCfuhAafJ/Wk2wffQ==" + }, + "internal-slot": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.3.tgz", + "integrity": "sha512-O0DB1JC/sPyZl7cIo78n5dR7eUSwwpYPiXRhTzNxZVAMUuB8vlnRFyLxdrVToks6XPLVnFfbzaVd5WLjhgg+vA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.0", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "interpret": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-2.2.0.tgz", + "integrity": "sha512-Ju0Bz/cEia55xDwUWEa8+olFpCiQoypjnQySseKtmjNrnps3P+xfpUmGr90T7yjlVJmOtybRvPXhKMbHr+fWnw==", + "dev": true + }, + "ipaddr.js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.0.1.tgz", + "integrity": "sha512-1qTgH9NG+IIJ4yfKs2e6Pp1bZg8wbDbKHT21HrLIeYBTRLgMYKnMTPAuI3Lcs61nfx5h1xlXnbJtH1kX5/d/ng==", + "dev": true + }, + "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-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "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-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.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-callable": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", + "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-color-stop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", + "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", + "dev": true, + "requires": { + "css-color-names": "^0.0.4", + "hex-color-regex": "^1.1.0", + "hsl-regex": "^1.0.0", + "hsla-regex": "^1.0.0", + "rgb-regex": "^1.0.1", + "rgba-regex": "^1.0.0" + } + }, + "is-core-module": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "requires": { + "has": "^1.0.3" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "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-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-installed-globally": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", + "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", + "requires": { + "global-dirs": "^3.0.0", + "is-path-inside": "^3.0.2" + } + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-npm": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-5.0.0.tgz", + "integrity": "sha512-WW/rQLOazUq+ST/bCAVBp/2oMERWLsR7OrKyt052dNDk4DHcDE0/7QSXITlmi+VBcV13DfIbysG3tZJm5RfdBA==" + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==" + }, + "is-path-cwd": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", + "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==" + }, + "is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==" + }, + "is-plain-obj": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "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" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-resolvable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", + "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", + "dev": true + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=" + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "is-yarn-global": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.3.0.tgz", + "integrity": "sha512-VjSeb/lHmkoyd8ryPVIKvOCn4D1koMqY+vqyjjUfc3xyKtP4dYOxM44sZrnqQSzSds3xyOrUTLTC9LVCVgLngw==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" + }, + "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": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jkanban": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jkanban/-/jkanban-1.3.1.tgz", + "integrity": "sha512-5M2nQuLnYTW8ZWAj0Gzes0BVYKE2BmpvJ+wc4Kv5/WZ4A+NYH/Njw3UJbW8hnClgrRVyHbeVNe3Q4gvZzoNjaw==", + "requires": { + "dragula": "^3.7.3", + "npm-watch": "^0.7.0" + } + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "jquery.repeater": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/jquery.repeater/-/jquery.repeater-1.2.1.tgz", + "integrity": "sha1-6ihKaTdL9EeNwuYK9ecFsWnLFRQ=" + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "dependencies": { + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha1-Wx85evx11ne96Lz8Dkfh+aPZqJg=" + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json5": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", + "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", + "dev": true + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jstree": { + "version": "3.3.12", + "resolved": "https://registry.npmjs.org/jstree/-/jstree-3.3.12.tgz", + "integrity": "sha512-vHNLWkUr02ZYH7RcIckvhtLUtneWCVEtIKpIp2G9WtRh01ITv18EoNtNQcFG3ozM+oK6wp1Z300gSLXNQWCqGA==", + "requires": { + "jquery": ">=1.9.1" + } + }, + "jszip": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.9.1.tgz", + "integrity": "sha512-H9A60xPqJ1CuC4Ka6qxzXZeU8aNmgOeP5IFqwJbQQwtu2EUYxota3LdsiZWplF7Wgd9tkAd0mdu36nceSaPuYw==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "set-immediate-shim": "~1.0.1" + } + }, + "junk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/junk/-/junk-3.1.0.tgz", + "integrity": "sha512-pBxcB3LFc8QVgdggvZWyeys+hnrNWg4OcZIU/1X59k5jQdLBlCsYGRQaz234SqoRLTCgMH00fY0xRJH+F9METQ==", + "dev": true + }, + "keycharm": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/keycharm/-/keycharm-0.4.0.tgz", + "integrity": "sha512-TyQTtsabOVv3MeOpR92sIKk/br9wxS+zGj4BG7CR8YbK4jM3tyIBaF0zhzeBUMx36/Q/iQLOKKOT+3jOQtemRQ==", + "peer": true + }, + "keyv": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz", + "integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==", + "requires": { + "json-buffer": "3.0.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "klona": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", + "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", + "dev": true + }, + "laravel-mix": { + "version": "6.0.43", + "resolved": "https://registry.npmjs.org/laravel-mix/-/laravel-mix-6.0.43.tgz", + "integrity": "sha512-SOO+C1aOpVSAUs30DYc6k/e0QJxfyD42aav4IKJtE5UZKw9ROWcVzkVoek2J475jNeNnl7GkoLAC27gejZsQ8g==", + "dev": true, + "requires": { + "@babel/core": "^7.15.8", + "@babel/plugin-proposal-object-rest-spread": "^7.15.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-transform-runtime": "^7.15.8", + "@babel/preset-env": "^7.15.8", + "@babel/runtime": "^7.15.4", + "@types/babel__core": "^7.1.16", + "@types/clean-css": "^4.2.5", + "@types/imagemin-gifsicle": "^7.0.1", + "@types/imagemin-mozjpeg": "^8.0.1", + "@types/imagemin-optipng": "^5.2.1", + "@types/imagemin-svgo": "^8.0.0", + "autoprefixer": "^10.4.0", + "babel-loader": "^8.2.3", + "chalk": "^4.1.2", + "chokidar": "^3.5.2", + "clean-css": "^5.2.4", + "cli-table3": "^0.6.0", + "collect.js": "^4.28.5", + "commander": "^7.2.0", + "concat": "^1.0.3", + "css-loader": "^5.2.6", + "cssnano": "^5.0.8", + "dotenv": "^10.0.0", + "dotenv-expand": "^5.1.0", + "file-loader": "^6.2.0", + "fs-extra": "^10.0.0", + "glob": "^7.2.0", + "html-loader": "^1.3.2", + "imagemin": "^7.0.1", + "img-loader": "^4.0.0", + "lodash": "^4.17.21", + "md5": "^2.3.0", + "mini-css-extract-plugin": "^1.6.2", + "node-libs-browser": "^2.2.1", + "postcss-load-config": "^3.1.0", + "postcss-loader": "^6.2.0", + "semver": "^7.3.5", + "strip-ansi": "^6.0.0", + "style-loader": "^2.0.0", + "terser": "^5.9.0", + "terser-webpack-plugin": "^5.2.4", + "vue-style-loader": "^4.1.3", + "webpack": "^5.60.0", + "webpack-cli": "^4.9.1", + "webpack-dev-server": "^4.7.3", + "webpack-merge": "^5.8.0", + "webpack-notifier": "^1.14.1", + "webpackbar": "^5.0.0-3", + "yargs": "^17.2.1" + } + }, + "latest-version": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-5.1.0.tgz", + "integrity": "sha512-weT+r0kTkRQdCdYCNtkMwWXQTMEswKrFBkm4ckQOMVhhqhIMI1UT2hMj+1iigIhgSZm5gTmrRXBNoGUgaTY1xA==", + "requires": { + "package-json": "^6.3.0" + } + }, + "leaflet": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/leaflet/-/leaflet-1.8.0.tgz", + "integrity": "sha512-gwhMjFCQiYs3x/Sf+d49f10ERXaEFCPr+nVTryhAW8DWbMGqJqt9G4XuIaHmFW08zYvhgdzqXGr8AlW8v8dQkA==" + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "lilconfig": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", + "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==", + "dev": true + }, + "line-awesome": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/line-awesome/-/line-awesome-1.3.0.tgz", + "integrity": "sha512-Y0YHksL37ixDsHz+ihCwOtF5jwJgCDxQ3q+zOVgaSW8VugHGTsZZXMacPYZB1/JULBi6BAuTCTek+4ZY/UIwcw==" + }, + "lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "dev": true + }, + "loader-utils": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.2.tgz", + "integrity": "sha512-TM57VeHptv569d/GKh6TAYdzKblwDNiumOdkFnejjD0XwTH87K90w3O7AiJRqdQoXygvi1VQTJTLGhJl7WqA7A==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash-es": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=", + "dev": true + }, + "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.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "lower-case": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", + "dev": true, + "requires": { + "tslib": "^2.0.3" + } + }, + "lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==" + }, + "lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.25.1", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.1.tgz", + "integrity": "sha512-sCuTz6pYom8Rlt4ISPFn6wuFodbKMIHUMv4Qko9P17dpxb7s52KJTmRuZZqHdGmLCK9AOcDare039nRIcfdkEg==", + "requires": { + "sourcemap-codec": "^1.4.1" + } + }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "requires": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdn-data": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "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 + }, + "memfs": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.1.tgz", + "integrity": "sha512-1c9VPVvW5P7I85c35zAdEr1TD5+F11IToIHIlrVIcflfnzPkJa0ZoYEoEdYDP8KgPFoSZ/opDrUsAoZWym3mtw==", + "dev": true, + "requires": { + "fs-monkey": "1.0.3" + } + }, + "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-source-map": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.0.4.tgz", + "integrity": "sha1-pd5GU42uhNQRTMXqArR3KmNGcB8=", + "requires": { + "source-map": "^0.5.6" + }, + "dependencies": { + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=" + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "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.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==" + }, + "mini-css-extract-plugin": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.6.2.tgz", + "integrity": "sha512-WhDvO3SjGm40oV5y26GjMJYjd2UMqrLAGKy5YS2/3QKJy2F7jgynuHTir/tgUUOiNQu5saXHdc8reo7YuhhT4Q==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0", + "webpack-sources": "^1.1.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "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.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", + "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "moment": { + "version": "2.29.3", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.3.tgz", + "integrity": "sha512-c6YRvhEo//6T2Jz/vVtYzqBzwvPT95JBQ+smCytzf7c50oMZRsR/a4w88aD34I+/QVSfnoAnSBFPJHItlOMJVw==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-XkCYOU+rr2Ft3LI6w4ye51M3VK31qJXFIxu0XLw169PtKG0Zx47OrXeVW/GCYOfpC9s1yyyf1S+L8/4LY0J9Zw==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "nanoid": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.3.tgz", + "integrity": "sha512-p1sjXuopFs0xg+fPASzQ28agW1oHD7xDsd9Xkf3T15H3c/cifrFHVwrh74PdoklAPi+i7MdRsE47vm2r6JoB+w==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==" + }, + "no-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", + "dev": true, + "requires": { + "lower-case": "^2.0.2", + "tslib": "^2.0.3" + } + }, + "node-forge": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", + "dev": true + }, + "node-libs-browser": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", + "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", + "dev": true, + "requires": { + "assert": "^1.1.1", + "browserify-zlib": "^0.2.0", + "buffer": "^4.3.0", + "console-browserify": "^1.1.0", + "constants-browserify": "^1.0.0", + "crypto-browserify": "^3.11.0", + "domain-browser": "^1.1.1", + "events": "^3.0.0", + "https-browserify": "^1.0.0", + "os-browserify": "^0.3.0", + "path-browserify": "0.0.1", + "process": "^0.11.10", + "punycode": "^1.2.4", + "querystring-es3": "^0.2.0", + "readable-stream": "^2.3.3", + "stream-browserify": "^2.0.1", + "stream-http": "^2.7.2", + "string_decoder": "^1.0.0", + "timers-browserify": "^2.0.4", + "tty-browserify": "0.0.0", + "url": "^0.11.0", + "util": "^0.11.0", + "vm-browserify": "^1.0.1" + } + }, + "node-notifier": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-9.0.1.tgz", + "integrity": "sha512-fPNFIp2hF/Dq7qLDzSg4vZ0J4e9v60gJR+Qx7RbjbWqzPDdEqeVpEx5CFeDAELIl+A/woaaNn1fQ5nEVerMxJg==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^2.2.0", + "semver": "^7.3.2", + "shellwords": "^0.1.1", + "uuid": "^8.3.0", + "which": "^2.0.2" + } + }, + "node-releases": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.3.tgz", + "integrity": "sha512-maHFz6OLqYxz+VQyCAtA3PTX4UP/53pa05fyDNc9CwjvJ0yEh6+xBwKsgCxMNhS8taUKBFYxfuiaD9U/55iFaw==", + "dev": true + }, + "node-watch": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/node-watch/-/node-watch-0.7.3.tgz", + "integrity": "sha512-3l4E8uMPY1HdMMryPRUAl+oIHtXtyiTlIiESNSVSNxcPfzAFzeTbXFQkZfAwBbo0B1qMSG8nUABx+Gd+YrbKrQ==" + }, + "nodemon": { + "version": "2.0.15", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.15.tgz", + "integrity": "sha512-gdHMNx47Gw7b3kWxJV64NI+Q5nfl0y5DgDbiVtShiwa7Z0IZ07Ll4RLFo6AjrhzMtoEZn5PDE3/c2AbVsiCkpA==", + "requires": { + "chokidar": "^3.5.2", + "debug": "^3.2.7", + "ignore-by-default": "^1.0.1", + "minimatch": "^3.0.4", + "pstree.remy": "^1.1.8", + "semver": "^5.7.1", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5", + "update-notifier": "^5.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "requires": { + "ms": "^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=" + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", + "integrity": "sha1-bd0hvSoxQXuScn3Vhfim83YI6+4=", + "requires": { + "abbrev": "1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "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-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true + }, + "nouislider": { + "version": "15.5.1", + "resolved": "https://registry.npmjs.org/nouislider/-/nouislider-15.5.1.tgz", + "integrity": "sha512-V8LNPhLPXLNjkgXLfyzDRGDeKvzZeaiIx5YagMiHnOMqgcRzT75jqvEZYXbSrEffXouwcEShSd8Vllm2Nkwqew==" + }, + "npm": { + "version": "7.24.2", + "resolved": "https://registry.npmjs.org/npm/-/npm-7.24.2.tgz", + "integrity": "sha512-120p116CE8VMMZ+hk8IAb1inCPk4Dj3VZw29/n2g6UI77urJKVYb7FZUDW8hY+EBnfsjI/2yrobBgFyzo7YpVQ==", + "requires": { + "@isaacs/string-locale-compare": "*", + "@npmcli/arborist": "*", + "@npmcli/ci-detect": "*", + "@npmcli/config": "*", + "@npmcli/map-workspaces": "*", + "@npmcli/package-json": "*", + "@npmcli/run-script": "*", + "abbrev": "*", + "ansicolors": "*", + "ansistyles": "*", + "archy": "*", + "cacache": "*", + "chalk": "*", + "chownr": "*", + "cli-columns": "*", + "cli-table3": "*", + "columnify": "*", + "fastest-levenshtein": "*", + "glob": "*", + "graceful-fs": "*", + "hosted-git-info": "*", + "ini": "*", + "init-package-json": "*", + "is-cidr": "*", + "json-parse-even-better-errors": "*", + "libnpmaccess": "*", + "libnpmdiff": "*", + "libnpmexec": "*", + "libnpmfund": "*", + "libnpmhook": "*", + "libnpmorg": "*", + "libnpmpack": "*", + "libnpmpublish": "*", + "libnpmsearch": "*", + "libnpmteam": "*", + "libnpmversion": "*", + "make-fetch-happen": "*", + "minipass": "*", + "minipass-pipeline": "*", + "mkdirp": "*", + "mkdirp-infer-owner": "*", + "ms": "*", + "node-gyp": "*", + "nopt": "*", + "npm-audit-report": "*", + "npm-install-checks": "*", + "npm-package-arg": "*", + "npm-pick-manifest": "*", + "npm-profile": "*", + "npm-registry-fetch": "*", + "npm-user-validate": "*", + "npmlog": "*", + "opener": "*", + "pacote": "*", + "parse-conflict-json": "*", + "qrcode-terminal": "*", + "read": "*", + "read-package-json": "*", + "read-package-json-fast": "*", + "readdir-scoped-modules": "*", + "rimraf": "*", + "semver": "*", + "ssri": "*", + "tar": "*", + "text-table": "*", + "tiny-relative-date": "*", + "treeverse": "*", + "validate-npm-package-name": "*", + "which": "*", + "write-file-atomic": "*" + }, + "dependencies": { + "@gar/promisify": { + "version": "1.1.2", + "bundled": true + }, + "@isaacs/string-locale-compare": { + "version": "1.1.0", + "bundled": true + }, + "@npmcli/arborist": { + "version": "2.9.0", + "bundled": true, + "requires": { + "@isaacs/string-locale-compare": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/map-workspaces": "^1.0.2", + "@npmcli/metavuln-calculator": "^1.1.0", + "@npmcli/move-file": "^1.1.0", + "@npmcli/name-from-folder": "^1.0.1", + "@npmcli/node-gyp": "^1.0.1", + "@npmcli/package-json": "^1.0.1", + "@npmcli/run-script": "^1.8.2", + "bin-links": "^2.2.1", + "cacache": "^15.0.3", + "common-ancestor-path": "^1.0.1", + "json-parse-even-better-errors": "^2.3.1", + "json-stringify-nice": "^1.1.4", + "mkdirp": "^1.0.4", + "mkdirp-infer-owner": "^2.0.0", + "npm-install-checks": "^4.0.0", + "npm-package-arg": "^8.1.5", + "npm-pick-manifest": "^6.1.0", + "npm-registry-fetch": "^11.0.0", + "pacote": "^11.3.5", + "parse-conflict-json": "^1.1.1", + "proc-log": "^1.0.0", + "promise-all-reject-late": "^1.0.0", + "promise-call-limit": "^1.0.1", + "read-package-json-fast": "^2.0.2", + "readdir-scoped-modules": "^1.1.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "ssri": "^8.0.1", + "treeverse": "^1.0.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/ci-detect": { + "version": "1.3.0", + "bundled": true + }, + "@npmcli/config": { + "version": "2.3.0", + "bundled": true, + "requires": { + "ini": "^2.0.0", + "mkdirp-infer-owner": "^2.0.0", + "nopt": "^5.0.0", + "semver": "^7.3.4", + "walk-up-path": "^1.0.0" + } + }, + "@npmcli/disparity-colors": { + "version": "1.0.1", + "bundled": true, + "requires": { + "ansi-styles": "^4.3.0" + } + }, + "@npmcli/fs": { + "version": "1.0.0", + "bundled": true, + "requires": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "2.1.0", + "bundled": true, + "requires": { + "@npmcli/promise-spawn": "^1.3.2", + "lru-cache": "^6.0.0", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^6.1.1", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "bundled": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/map-workspaces": { + "version": "1.0.4", + "bundled": true, + "requires": { + "@npmcli/name-from-folder": "^1.0.1", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "read-package-json-fast": "^2.0.1" + } + }, + "@npmcli/metavuln-calculator": { + "version": "1.1.1", + "bundled": true, + "requires": { + "cacache": "^15.0.5", + "pacote": "^11.1.11", + "semver": "^7.3.2" + } + }, + "@npmcli/move-file": { + "version": "1.1.2", + "bundled": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/name-from-folder": { + "version": "1.0.1", + "bundled": true + }, + "@npmcli/node-gyp": { + "version": "1.0.2", + "bundled": true + }, + "@npmcli/package-json": { + "version": "1.0.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.1" + } + }, + "@npmcli/promise-spawn": { + "version": "1.3.2", + "bundled": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "1.8.6", + "bundled": true, + "requires": { + "@npmcli/node-gyp": "^1.0.2", + "@npmcli/promise-spawn": "^1.3.2", + "node-gyp": "^7.1.0", + "read-package-json-fast": "^2.0.1" + } + }, + "@tootallnate/once": { + "version": "1.1.2", + "bundled": true + }, + "abbrev": { + "version": "1.1.1", + "bundled": true + }, + "agent-base": { + "version": "6.0.2", + "bundled": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.1.4", + "bundled": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "bundled": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "bundled": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "2.1.1", + "bundled": true + }, + "ansi-styles": { + "version": "4.3.0", + "bundled": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "ansicolors": { + "version": "0.3.2", + "bundled": true + }, + "ansistyles": { + "version": "0.1.3", + "bundled": true + }, + "aproba": { + "version": "2.0.0", + "bundled": true + }, + "archy": { + "version": "1.0.0", + "bundled": true + }, + "are-we-there-yet": { + "version": "1.1.6", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "asap": { + "version": "2.0.6", + "bundled": true + }, + "asn1": { + "version": "0.2.4", + "bundled": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "bundled": true + }, + "asynckit": { + "version": "0.4.0", + "bundled": true + }, + "aws-sign2": { + "version": "0.7.0", + "bundled": true + }, + "aws4": { + "version": "1.11.0", + "bundled": true + }, + "balanced-match": { + "version": "1.0.2", + "bundled": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "bundled": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "bin-links": { + "version": "2.2.1", + "bundled": true, + "requires": { + "cmd-shim": "^4.0.1", + "mkdirp": "^1.0.3", + "npm-normalize-package-bin": "^1.0.0", + "read-cmd-shim": "^2.0.0", + "rimraf": "^3.0.0", + "write-file-atomic": "^3.0.3" + } + }, + "binary-extensions": { + "version": "2.2.0", + "bundled": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "builtins": { + "version": "1.0.3", + "bundled": true + }, + "cacache": { + "version": "15.3.0", + "bundled": true, + "requires": { + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" + } + }, + "caseless": { + "version": "0.12.0", + "bundled": true + }, + "chalk": { + "version": "4.1.2", + "bundled": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "chownr": { + "version": "2.0.0", + "bundled": true + }, + "cidr-regex": { + "version": "3.1.1", + "bundled": true, + "requires": { + "ip-regex": "^4.1.0" + } + }, + "clean-stack": { + "version": "2.2.0", + "bundled": true + }, + "cli-columns": { + "version": "3.1.2", + "bundled": true, + "requires": { + "string-width": "^2.0.0", + "strip-ansi": "^3.0.1" + } + }, + "cli-table3": { + "version": "0.6.0", + "bundled": true, + "requires": { + "colors": "^1.1.2", + "object-assign": "^4.1.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.0", + "bundled": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "bundled": true + }, + "string-width": { + "version": "4.2.2", + "bundled": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^5.0.0" + } + } + } + }, + "clone": { + "version": "1.0.4", + "bundled": true + }, + "cmd-shim": { + "version": "4.1.0", + "bundled": true, + "requires": { + "mkdirp-infer-owner": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true + }, + "color-convert": { + "version": "2.0.1", + "bundled": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "bundled": true + }, + "color-support": { + "version": "1.1.3", + "bundled": true + }, + "colors": { + "version": "1.4.0", + "bundled": true, + "optional": true + }, + "columnify": { + "version": "1.5.4", + "bundled": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + } + }, + "combined-stream": { + "version": "1.0.8", + "bundled": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "common-ancestor-path": { + "version": "1.0.1", + "bundled": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true + }, + "console-control-strings": { + "version": "1.1.0", + "bundled": true + }, + "core-util-is": { + "version": "1.0.2", + "bundled": true + }, + "dashdash": { + "version": "1.14.1", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "debug": { + "version": "4.3.2", + "bundled": true, + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "bundled": true + } + } + }, + "debuglog": { + "version": "1.0.1", + "bundled": true + }, + "defaults": { + "version": "1.0.3", + "bundled": true, + "requires": { + "clone": "^1.0.2" + } + }, + "delayed-stream": { + "version": "1.0.0", + "bundled": true + }, + "delegates": { + "version": "1.0.0", + "bundled": true + }, + "depd": { + "version": "1.1.2", + "bundled": true + }, + "dezalgo": { + "version": "1.0.3", + "bundled": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "diff": { + "version": "5.0.0", + "bundled": true + }, + "ecc-jsbn": { + "version": "0.1.2", + "bundled": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "8.0.0", + "bundled": true + }, + "encoding": { + "version": "0.1.13", + "bundled": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "env-paths": { + "version": "2.2.1", + "bundled": true + }, + "err-code": { + "version": "2.0.3", + "bundled": true + }, + "extend": { + "version": "3.0.2", + "bundled": true + }, + "extsprintf": { + "version": "1.3.0", + "bundled": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "bundled": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "bundled": true + }, + "fastest-levenshtein": { + "version": "1.0.12", + "bundled": true + }, + "forever-agent": { + "version": "0.6.1", + "bundled": true + }, + "fs-minipass": { + "version": "2.1.0", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true + }, + "function-bind": { + "version": "1.1.1", + "bundled": true + }, + "gauge": { + "version": "3.0.1", + "bundled": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.2", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.1", + "object-assign": "^4.1.1", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1 || ^2.0.0", + "strip-ansi": "^3.0.1 || ^4.0.0", + "wide-align": "^1.1.2" + } + }, + "getpass": { + "version": "0.1.7", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "bundled": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.2.8", + "bundled": true + }, + "har-schema": { + "version": "2.0.0", + "bundled": true + }, + "har-validator": { + "version": "5.1.5", + "bundled": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "bundled": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "4.0.0", + "bundled": true + }, + "has-unicode": { + "version": "2.0.1", + "bundled": true + }, + "hosted-git-info": { + "version": "4.0.2", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "http-cache-semantics": { + "version": "4.1.0", + "bundled": true + }, + "http-proxy-agent": { + "version": "4.0.1", + "bundled": true, + "requires": { + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" + } + }, + "http-signature": { + "version": "1.2.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.0", + "bundled": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "humanize-ms": { + "version": "1.2.1", + "bundled": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.6.3", + "bundled": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "ignore-walk": { + "version": "3.0.4", + "bundled": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true + }, + "indent-string": { + "version": "4.0.0", + "bundled": true + }, + "infer-owner": { + "version": "1.0.4", + "bundled": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "bundled": true + }, + "ini": { + "version": "2.0.0", + "bundled": true + }, + "init-package-json": { + "version": "2.0.5", + "bundled": true, + "requires": { + "npm-package-arg": "^8.1.5", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "^4.1.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "ip": { + "version": "1.1.5", + "bundled": true + }, + "ip-regex": { + "version": "4.3.0", + "bundled": true + }, + "is-cidr": { + "version": "4.0.2", + "bundled": true, + "requires": { + "cidr-regex": "^3.1.1" + } + }, + "is-core-module": { + "version": "2.7.0", + "bundled": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true + }, + "is-lambda": { + "version": "1.0.1", + "bundled": true + }, + "is-typedarray": { + "version": "1.0.0", + "bundled": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true + }, + "isstream": { + "version": "0.1.2", + "bundled": true + }, + "jsbn": { + "version": "0.1.1", + "bundled": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "bundled": true + }, + "json-schema": { + "version": "0.2.3", + "bundled": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "bundled": true + }, + "json-stringify-nice": { + "version": "1.1.4", + "bundled": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "bundled": true + }, + "jsonparse": { + "version": "1.3.1", + "bundled": true + }, + "jsprim": { + "version": "1.4.1", + "bundled": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "just-diff": { + "version": "3.1.1", + "bundled": true + }, + "just-diff-apply": { + "version": "3.0.0", + "bundled": true + }, + "libnpmaccess": { + "version": "4.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "minipass": "^3.1.1", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmdiff": { + "version": "2.0.4", + "bundled": true, + "requires": { + "@npmcli/disparity-colors": "^1.0.1", + "@npmcli/installed-package-contents": "^1.0.7", + "binary-extensions": "^2.2.0", + "diff": "^5.0.0", + "minimatch": "^3.0.4", + "npm-package-arg": "^8.1.4", + "pacote": "^11.3.4", + "tar": "^6.1.0" + } + }, + "libnpmexec": { + "version": "2.0.1", + "bundled": true, + "requires": { + "@npmcli/arborist": "^2.3.0", + "@npmcli/ci-detect": "^1.3.0", + "@npmcli/run-script": "^1.8.4", + "chalk": "^4.1.0", + "mkdirp-infer-owner": "^2.0.0", + "npm-package-arg": "^8.1.2", + "pacote": "^11.3.1", + "proc-log": "^1.0.0", + "read": "^1.0.7", + "read-package-json-fast": "^2.0.2", + "walk-up-path": "^1.0.0" + } + }, + "libnpmfund": { + "version": "1.1.0", + "bundled": true, + "requires": { + "@npmcli/arborist": "^2.5.0" + } + }, + "libnpmhook": { + "version": "6.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmorg": { + "version": "2.0.3", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmpack": { + "version": "2.0.1", + "bundled": true, + "requires": { + "@npmcli/run-script": "^1.8.3", + "npm-package-arg": "^8.1.0", + "pacote": "^11.2.6" + } + }, + "libnpmpublish": { + "version": "4.0.2", + "bundled": true, + "requires": { + "normalize-package-data": "^3.0.2", + "npm-package-arg": "^8.1.2", + "npm-registry-fetch": "^11.0.0", + "semver": "^7.1.3", + "ssri": "^8.0.1" + } + }, + "libnpmsearch": { + "version": "3.1.2", + "bundled": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmteam": { + "version": "2.0.4", + "bundled": true, + "requires": { + "aproba": "^2.0.0", + "npm-registry-fetch": "^11.0.0" + } + }, + "libnpmversion": { + "version": "1.2.1", + "bundled": true, + "requires": { + "@npmcli/git": "^2.0.7", + "@npmcli/run-script": "^1.8.4", + "json-parse-even-better-errors": "^2.3.1", + "semver": "^7.3.5", + "stringify-package": "^1.0.1" + } + }, + "lru-cache": { + "version": "6.0.0", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "make-fetch-happen": { + "version": "9.1.0", + "bundled": true, + "requires": { + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" + } + }, + "mime-db": { + "version": "1.49.0", + "bundled": true + }, + "mime-types": { + "version": "2.1.32", + "bundled": true, + "requires": { + "mime-db": "1.49.0" + } + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minipass": { + "version": "3.1.5", + "bundled": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "1.4.1", + "bundled": true, + "requires": { + "encoding": "^0.1.12", + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" + } + }, + "minipass-flush": { + "version": "1.0.5", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "bundled": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "bundled": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "bundled": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "bundled": true + }, + "mkdirp-infer-owner": { + "version": "2.0.0", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "infer-owner": "^1.0.4", + "mkdirp": "^1.0.3" + } + }, + "ms": { + "version": "2.1.3", + "bundled": true + }, + "mute-stream": { + "version": "0.0.8", + "bundled": true + }, + "negotiator": { + "version": "0.6.2", + "bundled": true + }, + "node-gyp": { + "version": "7.1.2", + "bundled": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.3", + "nopt": "^5.0.0", + "npmlog": "^4.1.2", + "request": "^2.88.2", + "rimraf": "^3.0.2", + "semver": "^7.3.2", + "tar": "^6.0.2", + "which": "^2.0.2" + }, + "dependencies": { + "aproba": { + "version": "1.2.0", + "bundled": true + }, + "gauge": { + "version": "2.7.4", + "bundled": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + } + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "bundled": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "nopt": { + "version": "5.0.0", + "bundled": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "3.0.3", + "bundled": true, + "requires": { + "hosted-git-info": "^4.0.1", + "is-core-module": "^2.5.0", + "semver": "^7.3.4", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-audit-report": { + "version": "2.1.5", + "bundled": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "npm-bundled": { + "version": "1.1.2", + "bundled": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "4.0.0", + "bundled": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "bundled": true + }, + "npm-package-arg": { + "version": "8.1.5", + "bundled": true, + "requires": { + "hosted-git-info": "^4.0.1", + "semver": "^7.3.4", + "validate-npm-package-name": "^3.0.0" + } + }, + "npm-packlist": { + "version": "2.2.2", + "bundled": true, + "requires": { + "glob": "^7.1.6", + "ignore-walk": "^3.0.3", + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "6.1.1", + "bundled": true, + "requires": { + "npm-install-checks": "^4.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^8.1.2", + "semver": "^7.3.4" + } + }, + "npm-profile": { + "version": "5.0.4", + "bundled": true, + "requires": { + "npm-registry-fetch": "^11.0.0" + } + }, + "npm-registry-fetch": { + "version": "11.0.0", + "bundled": true, + "requires": { + "make-fetch-happen": "^9.0.1", + "minipass": "^3.1.3", + "minipass-fetch": "^1.3.0", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.0.0", + "npm-package-arg": "^8.0.0" + } + }, + "npm-user-validate": { + "version": "1.0.1", + "bundled": true + }, + "npmlog": { + "version": "5.0.1", + "bundled": true, + "requires": { + "are-we-there-yet": "^2.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^3.0.0", + "set-blocking": "^2.0.0" + }, + "dependencies": { + "are-we-there-yet": { + "version": "2.0.0", + "bundled": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + } + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true + }, + "oauth-sign": { + "version": "0.9.0", + "bundled": true + }, + "object-assign": { + "version": "4.1.1", + "bundled": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "requires": { + "wrappy": "1" + } + }, + "opener": { + "version": "1.5.2", + "bundled": true + }, + "p-map": { + "version": "4.0.0", + "bundled": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "pacote": { + "version": "11.3.5", + "bundled": true, + "requires": { + "@npmcli/git": "^2.1.0", + "@npmcli/installed-package-contents": "^1.0.6", + "@npmcli/promise-spawn": "^1.2.0", + "@npmcli/run-script": "^1.8.2", + "cacache": "^15.0.5", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.3", + "mkdirp": "^1.0.3", + "npm-package-arg": "^8.0.1", + "npm-packlist": "^2.1.4", + "npm-pick-manifest": "^6.0.0", + "npm-registry-fetch": "^11.0.0", + "promise-retry": "^2.0.1", + "read-package-json-fast": "^2.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.1.0" + } + }, + "parse-conflict-json": { + "version": "1.1.1", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "just-diff": "^3.0.1", + "just-diff-apply": "^3.0.0" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true + }, + "performance-now": { + "version": "2.1.0", + "bundled": true + }, + "proc-log": { + "version": "1.0.0", + "bundled": true + }, + "promise-all-reject-late": { + "version": "1.0.1", + "bundled": true + }, + "promise-call-limit": { + "version": "1.0.1", + "bundled": true + }, + "promise-inflight": { + "version": "1.0.1", + "bundled": true + }, + "promise-retry": { + "version": "2.0.1", + "bundled": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "promzard": { + "version": "0.3.0", + "bundled": true, + "requires": { + "read": "1" + } + }, + "psl": { + "version": "1.8.0", + "bundled": true + }, + "punycode": { + "version": "2.1.1", + "bundled": true + }, + "qrcode-terminal": { + "version": "0.12.0", + "bundled": true + }, + "qs": { + "version": "6.5.2", + "bundled": true + }, + "read": { + "version": "1.0.7", + "bundled": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "2.0.0", + "bundled": true + }, + "read-package-json": { + "version": "4.1.1", + "bundled": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^3.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "bundled": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "bundled": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "bundled": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "request": { + "version": "2.88.2", + "bundled": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + }, + "dependencies": { + "form-data": { + "version": "2.3.3", + "bundled": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "tough-cookie": { + "version": "2.5.0", + "bundled": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + } + } + }, + "retry": { + "version": "0.12.0", + "bundled": true + }, + "rimraf": { + "version": "3.0.2", + "bundled": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.2.1", + "bundled": true + }, + "safer-buffer": { + "version": "2.1.2", + "bundled": true + }, + "semver": { + "version": "7.3.5", + "bundled": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true + }, + "signal-exit": { + "version": "3.0.3", + "bundled": true + }, + "smart-buffer": { + "version": "4.2.0", + "bundled": true + }, + "socks": { + "version": "2.6.1", + "bundled": true, + "requires": { + "ip": "^1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "6.1.0", + "bundled": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.1", + "socks": "^2.6.1" + } + }, + "spdx-correct": { + "version": "3.1.1", + "bundled": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "bundled": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "bundled": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.10", + "bundled": true + }, + "sshpk": { + "version": "1.16.1", + "bundled": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "8.0.1", + "bundled": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "string_decoder": { + "version": "1.3.0", + "bundled": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "stringify-package": { + "version": "1.0.1", + "bundled": true + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "7.2.0", + "bundled": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "tar": { + "version": "6.1.11", + "bundled": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^3.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + } + }, + "text-table": { + "version": "0.2.0", + "bundled": true + }, + "tiny-relative-date": { + "version": "1.3.0", + "bundled": true + }, + "treeverse": { + "version": "1.0.4", + "bundled": true + }, + "tunnel-agent": { + "version": "0.6.0", + "bundled": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "bundled": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "bundled": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "unique-filename": { + "version": "1.1.1", + "bundled": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "uri-js": { + "version": "4.4.1", + "bundled": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "bundled": true + }, + "uuid": { + "version": "3.4.0", + "bundled": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "bundled": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "bundled": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "walk-up-path": { + "version": "1.0.0", + "bundled": true + }, + "wcwidth": { + "version": "1.0.1", + "bundled": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "which": { + "version": "2.0.2", + "bundled": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "wide-align": { + "version": "1.1.3", + "bundled": true, + "requires": { + "string-width": "^1.0.2 || 2" + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true + }, + "write-file-atomic": { + "version": "3.0.3", + "bundled": true, + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "yallist": { + "version": "4.0.0", + "bundled": true + } + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npm-watch": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/npm-watch/-/npm-watch-0.7.0.tgz", + "integrity": "sha512-AN2scNyMljMGkn0mIkaRRk19I7Vx0qTK6GmsIcDblX5YRbSsoJORTAtrceICSx7Om9q48NWcwm/R0t6E7F4Ocg==", + "requires": { + "nodemon": "^2.0.3", + "through2": "^2.0.0" + } + }, + "nth-check": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.0.1.tgz", + "integrity": "sha512-it1vE95zF6dTT9lBsYbxvqh0Soy4SPowchj0UBGj/V6cTPnXXtQOPUbhZ6CmGzAD/rW22LQK6E96pcdJXk4A4w==", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "object-inspect": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", + "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==" + }, + "object.assign": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", + "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", + "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "object.values": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", + "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.1" + } + }, + "obuf": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "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.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", + "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "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 + }, + "p-cancelable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz", + "integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==" + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-pipe": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-3.1.0.tgz", + "integrity": "sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==", + "dev": true + }, + "p-retry": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.1.tgz", + "integrity": "sha512-e2xXGNhZOZ0lfgR9kL34iGlU8N/KO0xZnQxVEwdeOvpqNDQfdnxIYizvWtK8RglUa3bGqI8g0R/BdfzLMxRkiA==", + "dev": true, + "requires": { + "@types/retry": "^0.12.0", + "retry": "^0.13.1" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "package-json": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-6.5.0.tgz", + "integrity": "sha512-k3bdm2n25tkyxcjSKzB5x8kfVxlMdgsbPr0GkZcwHsLpba6cBjqCt1KlcChKEvxHIcTB1FVMuwoijZ26xex5MQ==", + "requires": { + "got": "^9.6.0", + "registry-auth-token": "^4.0.0", + "registry-url": "^5.0.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "param-case": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", + "dev": true, + "requires": { + "dot-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "parchment": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/parchment/-/parchment-1.1.4.tgz", + "integrity": "sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==" + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascal-case": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", + "dev": true, + "requires": { + "no-case": "^3.0.4", + "tslib": "^2.0.3" + } + }, + "path-browserify": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", + "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "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=" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "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": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "pdfmake": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/pdfmake/-/pdfmake-0.2.5.tgz", + "integrity": "sha512-NlayjehMtuZEdw2Lyipf/MxOCR2vATZQ7jn8cH0/dHwsNb+mqof9/6SW4jZT5p+So4qz+0mD21KG81+dDQSEhA==", + "requires": { + "@foliojs-fork/linebreak": "^1.1.1", + "@foliojs-fork/pdfkit": "^0.13.0", + "iconv-lite": "^0.6.3", + "xmldoc": "^1.1.2" + } + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "png-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/png-js/-/png-js-1.0.0.tgz", + "integrity": "sha512-k+YsbhpA9e+EFfKjTCH3VW6aoKlyNYI6NYdTfDL4CIvFnvsuO84ttonmZE7rc+v23SLTH8XX+5w/Ak9v0xGY4g==" + }, + "popper.js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1.tgz", + "integrity": "sha512-Wb4p1J4zyFTbM+u6WuO4XstYx4Ky9Cewe4DWrel7B0w6VVICvPwdOpotjzcf6eD8TsckVnIMNONQyPIUFOUbCQ==", + "peer": true + }, + "portfinder": { + "version": "1.0.28", + "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", + "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", + "dev": true, + "requires": { + "async": "^2.6.2", + "debug": "^3.1.1", + "mkdirp": "^0.5.5" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "postcss": { + "version": "8.4.12", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", + "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", + "dev": true, + "requires": { + "nanoid": "^3.3.1", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-calc": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-8.2.4.tgz", + "integrity": "sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-colormin": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-5.3.0.tgz", + "integrity": "sha512-WdDO4gOFG2Z8n4P8TWBpshnL3JpmNmJwdnfP2gbk2qBA8PWwOYcmjmI/t3CmMeL72a7Hkd+x/Mg9O2/0rD54Pg==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-convert-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-5.1.0.tgz", + "integrity": "sha512-GkyPbZEYJiWtQB0KZ0X6qusqFHUepguBCNFi9t5JJc7I2OTXG7C0twbTLvCfaKOLl3rSXmpAwV7W5txd91V84g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-discard-comments": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-5.1.1.tgz", + "integrity": "sha512-5JscyFmvkUxz/5/+TB3QTTT9Gi9jHkcn8dcmmuN68JQcv3aQg4y88yEHHhwFB52l/NkaJ43O0dbksGMAo49nfQ==", + "dev": true, + "requires": {} + }, + "postcss-discard-duplicates": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-5.1.0.tgz", + "integrity": "sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==", + "dev": true, + "requires": {} + }, + "postcss-discard-empty": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-5.1.1.tgz", + "integrity": "sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==", + "dev": true, + "requires": {} + }, + "postcss-discard-overridden": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-5.1.0.tgz", + "integrity": "sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==", + "dev": true, + "requires": {} + }, + "postcss-import": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", + "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-load-config": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", + "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^1.10.2" + } + }, + "postcss-loader": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-6.2.1.tgz", + "integrity": "sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.5" + } + }, + "postcss-merge-longhand": { + "version": "5.1.4", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-5.1.4.tgz", + "integrity": "sha512-hbqRRqYfmXoGpzYKeW0/NCZhvNyQIlQeWVSao5iKWdyx7skLvCfQFGIUsP9NUs3dSbPac2IC4Go85/zG+7MlmA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "stylehacks": "^5.1.0" + } + }, + "postcss-merge-rules": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-5.1.1.tgz", + "integrity": "sha512-8wv8q2cXjEuCcgpIB1Xx1pIy8/rhMPIQqYKNzEdyx37m6gpq83mQQdCxgIkFgliyEnKvdwJf/C61vN4tQDq4Ww==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^3.1.0", + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-minify-font-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-5.1.0.tgz", + "integrity": "sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-gradients": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-5.1.1.tgz", + "integrity": "sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==", + "dev": true, + "requires": { + "colord": "^2.9.1", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-params": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-5.1.2.tgz", + "integrity": "sha512-aEP+p71S/urY48HWaRHasyx4WHQJyOYaKpQ6eXl8k0kxg66Wt/30VR6/woh8THgcpRbonJD5IeD+CzNhPi1L8g==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-minify-selectors": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-5.2.0.tgz", + "integrity": "sha512-vYxvHkW+iULstA+ctVNx0VoRAR4THQQRkG77o0oa4/mBS0OzGvvzLIvHDv/nNEM0crzN2WIyFU5X7wZhaUK3RA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "dev": true, + "requires": {} + }, + "postcss-modules-local-by-default": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.0.tgz", + "integrity": "sha512-sT7ihtmGSF9yhm6ggikHdV0hlziDTX7oFoXtuVWeDd3hHObNkcHRo9V3yg7vCAY7cONyxJC/XXCmmiHHcvX7bQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" + } + }, + "postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "dev": true, + "requires": { + "icss-utils": "^5.0.0" + } + }, + "postcss-normalize-charset": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", + "integrity": "sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==", + "dev": true, + "requires": {} + }, + "postcss-normalize-display-values": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-5.1.0.tgz", + "integrity": "sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-positions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-5.1.0.tgz", + "integrity": "sha512-8gmItgA4H5xiUxgN/3TVvXRoJxkAWLW6f/KKhdsH03atg0cB8ilXnrB5PpSshwVu/dD2ZsRFQcR1OEmSBDAgcQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-repeat-style": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-5.1.0.tgz", + "integrity": "sha512-IR3uBjc+7mcWGL6CtniKNQ4Rr5fTxwkaDHwMBDGGs1x9IVRkYIT/M4NelZWkAOBdV6v3Z9S46zqaKGlyzHSchw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-string": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-5.1.0.tgz", + "integrity": "sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-timing-functions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-5.1.0.tgz", + "integrity": "sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-unicode": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-5.1.0.tgz", + "integrity": "sha512-J6M3MizAAZ2dOdSjy2caayJLQT8E8K9XjLce8AUQMwOrCvjCHv24aLC/Lps1R1ylOfol5VIDMaM/Lo9NGlk1SQ==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-5.1.0.tgz", + "integrity": "sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==", + "dev": true, + "requires": { + "normalize-url": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-normalize-whitespace": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-5.1.1.tgz", + "integrity": "sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-ordered-values": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-5.1.1.tgz", + "integrity": "sha512-7lxgXF0NaoMIgyihL/2boNAEZKiW0+HkMhdKMTD93CjW8TdCy2hSdj8lsAo+uwm7EDG16Da2Jdmtqpedl0cMfw==", + "dev": true, + "requires": { + "cssnano-utils": "^3.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-reduce-initial": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-5.1.0.tgz", + "integrity": "sha512-5OgTUviz0aeH6MtBjHfbr57tml13PuedK/Ecg8szzd4XRMbYxH4572JFG067z+FqBIf6Zp/d+0581glkvvWMFw==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "caniuse-api": "^3.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-5.1.0.tgz", + "integrity": "sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "postcss-svgo": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-5.1.0.tgz", + "integrity": "sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0", + "svgo": "^2.7.0" + } + }, + "postcss-unique-selectors": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-5.1.1.tgz", + "integrity": "sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.5" + } + }, + "postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=" + }, + "prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha1-6SQ0v6XqjBn0HN/UAddBo8gZ2Jc=" + }, + "pretty-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pretty-time/-/pretty-time-1.1.0.tgz", + "integrity": "sha512-28iF6xPQrP8Oa6uxE6a1biz+lWeTOAPKggvjB8HAs6nVMKZwf5bG++632Dx614hIWgUPkgivRfG+a8uAXGTIbA==", + "dev": true + }, + "prism-themes": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/prism-themes/-/prism-themes-1.9.0.tgz", + "integrity": "sha512-tX2AYsehKDw1EORwBps+WhBFKc2kxfoFpQAjxBndbZKr4fRmMkv47XN0BghC/K1qwodB1otbe4oF23vUTFDokw==" + }, + "prismjs": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.28.0.tgz", + "integrity": "sha512-8aaXdYvl1F7iC7Xm1spqSaY/OJBpYW3v+KJ+F17iYxvdc8sfjW194COK5wVhMZX45tGteiBQgdvD/nhxcRwylw==" + }, + "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.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "peer": true, + "requires": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "propagating-hammerjs": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/propagating-hammerjs/-/propagating-hammerjs-2.0.1.tgz", + "integrity": "sha512-PH3zG5whbSxMocphXJzVtvKr+vWAgfkqVvtuwjSJ/apmEACUoiw6auBAT5HYXpZOR0eGcTAfYG5Yl8h91O5Elg==", + "peer": true, + "requires": {} + }, + "proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "dev": true, + "requires": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "dependencies": { + "ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "dev": true + } + } + }, + "pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", + "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", + "dev": true + }, + "pupa": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-2.1.1.tgz", + "integrity": "sha512-l1jNAspIBSFqbT+y+5FosojNpVpF94nlI+wDUpqP9enwOTfHx9f0gh5nB96vl+6yTpsJsypeNrwfzPrKuHB41A==", + "requires": { + "escape-goat": "^2.0.0" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.9.7", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.9.7.tgz", + "integrity": "sha512-IhMFgUmuNpyRfxA90umL7ByLlgRXu6tIfKPpF5TmcfRLlLCckfP/g3IQmju6jjpu+Hh8rA+2p6A27ZSPOOHdKw==", + "dev": true + }, + "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 + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" + }, + "quill": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/quill/-/quill-1.3.7.tgz", + "integrity": "sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==", + "requires": { + "clone": "^2.1.1", + "deep-equal": "^1.0.1", + "eventemitter3": "^2.0.3", + "extend": "^3.0.2", + "parchment": "^1.1.4", + "quill-delta": "^3.6.2" + }, + "dependencies": { + "clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18=" + } + } + }, + "quill-delta": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/quill-delta/-/quill-delta-3.6.3.tgz", + "integrity": "sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==", + "requires": { + "deep-equal": "^1.0.1", + "extend": "^3.0.2", + "fast-diff": "1.1.2" + } + }, + "qunit": { + "version": "2.18.2", + "resolved": "https://registry.npmjs.org/qunit/-/qunit-2.18.2.tgz", + "integrity": "sha512-Ux+x9pIU38/F+r3jOl35QzGHPPupMifUvhczCqHgzYWX76fCjPg6VqM84ox1D57fhAXHtpS4Jl91EV8gDoCHPg==", + "requires": { + "commander": "7.2.0", + "node-watch": "0.7.3", + "tiny-glob": "0.2.9" + } + }, + "quote-stream": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/quote-stream/-/quote-stream-1.0.2.tgz", + "integrity": "sha1-hJY/jJwmuULhU/7rU6rnRlK34LI=", + "requires": { + "buffer-equal": "0.0.1", + "minimist": "^1.1.3", + "through2": "^2.0.0" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "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.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.3.tgz", + "integrity": "sha512-UlTNLIcu0uzb4D2f4WltY6cVjLi+/jEN4lgEUj3E04tpMDpUlkBo/eSn6zou9hum2VMNpCCUone0O0WeJim07g==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "1.8.1", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "dependencies": { + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + } + } + }, + "rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "requires": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "dependencies": { + "ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "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=" + } + } + }, + "react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "peer": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.7.1.tgz", + "integrity": "sha512-/njmZ8s1wVeR6pjTZ+0nCnv8SpZNRMT2D1RLOJQESlYFDBvwpTA4KWJpZ+sBJ4+vhjILRcK7JIFdGCdxEAAitg==", + "dev": true, + "requires": { + "resolve": "^1.9.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", + "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.9", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", + "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.0", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", + "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", + "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", + "dev": true + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpu-core": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.0.1.tgz", + "integrity": "sha512-CriEZlrKK9VJw/xQGJpQM5rY88BtuL8DM+AEwvcThHilbxiTAy8vq4iJnd2tqq8wLmjbGZzP7ZcKFjbGkmEFrw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.0.1", + "regjsgen": "^0.6.0", + "regjsparser": "^0.8.2", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.0.0" + } + }, + "registry-auth-token": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-4.2.1.tgz", + "integrity": "sha512-6gkSb4U6aWJB4SF2ZvLb76yCBjcvufXBqvvEx1HbmKPkutswjW1xNVRY0+daljIYRbogN7O0etYSlbiaEQyMyw==", + "requires": { + "rc": "^1.2.8" + } + }, + "registry-url": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-5.1.0.tgz", + "integrity": "sha512-8acYXXTI0AkQv6RAOjE3vOaIXZkT9wo4LOFbBKYQEEnnMNBpKqdUrI6S4NT0KPIo/WVvJ5tE/X5LF/TQUf0ekw==", + "requires": { + "rc": "^1.2.8" + } + }, + "regjsgen": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", + "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", + "dev": true + }, + "regjsparser": { + "version": "0.8.4", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", + "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", + "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 + }, + "replace-ext": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/replace-ext/-/replace-ext-1.0.1.tgz", + "integrity": "sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==", + "dev": true + }, + "replace-in-file-webpack-plugin": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/replace-in-file-webpack-plugin/-/replace-in-file-webpack-plugin-1.0.6.tgz", + "integrity": "sha512-+KRgNYL2nbc6nza6SeF+wTBNkovuHFTfJF8QIEqZg5MbwkYpU9no0kH2YU354wvY/BK8mAC2UKoJ7q+sJTvciw==", + "dev": true + }, + "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": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true + }, + "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.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "requires": { + "is-core-module": "^2.8.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "requires": { + "resolve-from": "^5.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-4.0.0.tgz", + "integrity": "sha512-05VEMczVREcbtT7Bz+C+96eUO5HDNvdthIiMB34t7FcF8ehcu4wC0sSgPUubs3XW2Q3CNLJk/BJrCU9wVRymiA==", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^7.0.35", + "source-map": "0.6.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + } + } + }, + "responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha1-kYcg7ztjHFZCvgaPFa3lpG9Loec=", + "requires": { + "lowercase-keys": "^1.0.0" + } + }, + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" + }, + "rgb-regex": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", + "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", + "dev": true + }, + "rgba-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", + "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rtlcss": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-3.5.0.tgz", + "integrity": "sha512-wzgMaMFHQTnyi9YOwsx9LjOxYXJPzS8sYnFaKm6R5ysvTkwzHiB0vxnbHwchHQT65PTdBjDG21/kQBWI7q9O7A==", + "dev": true, + "requires": { + "find-up": "^5.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.3.11", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "requires": { + "p-locate": "^5.0.0" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "requires": { + "p-limit": "^3.0.2" + } + } + } + }, + "run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "sass": { + "version": "1.50.1", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.50.1.tgz", + "integrity": "sha512-noTnY41KnlW2A9P8sdwESpDmo+KBNkukI1i8+hOK3footBUcohNHtdOJbckp46XO95nuvcHDDZ+4tmOnpK3hjw==", + "dev": true, + "requires": { + "chokidar": ">=3.0.0 <4.0.0", + "immutable": "^4.0.0", + "source-map-js": ">=0.6.2 <2.0.0" + } + }, + "sass-loader": { + "version": "12.6.0", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-12.6.0.tgz", + "integrity": "sha512-oLTaH0YCtX4cfnJZxKSLAyglED0naiYfNG1iXfU5w1LNZ+ukoA5DtyDIN5zmKVZwYNJP4KRc5Y3hkWga+7tYfA==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==" + }, + "schema-utils": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", + "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + } + }, + "scope-analyzer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/scope-analyzer/-/scope-analyzer-2.1.2.tgz", + "integrity": "sha512-5cfCmsTYV/wPaRIItNxatw02ua/MThdIUNnUOCYp+3LSEJvnG804ANw2VLaavNILIfWXF1D1G2KNANkBBvInwQ==", + "requires": { + "array-from": "^2.1.1", + "dash-ast": "^2.0.1", + "es6-map": "^0.1.5", + "es6-set": "^0.1.5", + "es6-symbol": "^3.1.1", + "estree-is-function": "^1.0.0", + "get-assigned-identifiers": "^1.1.0" + } + }, + "select": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/select/-/select-1.1.2.tgz", + "integrity": "sha1-DnNQrN7ICxEIUoeG7B1EGNEbOW0=" + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", + "dev": true + }, + "select2": { + "version": "4.1.0-rc.0", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.1.0-rc.0.tgz", + "integrity": "sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A==" + }, + "selfsigned": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", + "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-diff": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", + "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", + "requires": { + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" + } + } + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "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.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "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" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "dev": true, + "requires": { + "randombytes": "^2.1.0" + } + }, + "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.17", + "parseurl": "~1.3.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" + } + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "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 + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "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=" + }, + "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.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shallow-copy": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha1-QV9CcC1z2BAzApLMXuhurhoRoXA=" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "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 + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", + "dev": true, + "requires": { + "is-arrayish": "^0.3.1" + }, + "dependencies": { + "is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==" + }, + "smooth-scroll": { + "version": "16.1.3", + "resolved": "https://registry.npmjs.org/smooth-scroll/-/smooth-scroll-16.1.3.tgz", + "integrity": "sha512-ca9U+neJS/cbdScTBuUTCZvUWNF2EuMCk7oAx3ImdeRK5FPm+xRo9XsVHIkeEVkn7MBRx+ufVEhyveM4ZhaTGA==" + }, + "sockjs": { + "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", + "dev": true, + "requires": { + "faye-websocket": "^0.11.3", + "uuid": "^8.3.2", + "websocket-driver": "^0.7.4" + } + }, + "source-list-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", + "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", + "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==" + }, + "source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" + }, + "spdy": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "handle-thing": "^2.0.0", + "http-deceiver": "^1.2.7", + "select-hose": "^2.0.0", + "spdy-transport": "^3.0.0" + } + }, + "spdy-transport": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "detect-node": "^2.0.4", + "hpack.js": "^2.1.6", + "obuf": "^1.1.2", + "readable-stream": "^3.0.6", + "wbuf": "^1.7.3" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "stable": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", + "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", + "dev": true + }, + "static-eval": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", + "requires": { + "escodegen": "^1.11.1" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "static-module": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/static-module/-/static-module-3.0.4.tgz", + "integrity": "sha512-gb0v0rrgpBkifXCa3yZXxqVmXDVE+ETXj6YlC/jt5VzOnGXR2C15+++eXuMDUYsePnbhf+lwW0pE1UXyOLtGCw==", + "requires": { + "acorn-node": "^1.3.0", + "concat-stream": "~1.6.0", + "convert-source-map": "^1.5.1", + "duplexer2": "~0.1.4", + "escodegen": "^1.11.1", + "has": "^1.0.1", + "magic-string": "0.25.1", + "merge-source-map": "1.0.4", + "object-inspect": "^1.6.0", + "readable-stream": "~2.3.3", + "scope-analyzer": "^2.0.1", + "shallow-copy": "~0.0.1", + "static-eval": "^2.0.5", + "through2": "~2.0.3" + }, + "dependencies": { + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "dev": true + }, + "std-env": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.1.1.tgz", + "integrity": "sha512-/c645XdExBypL01TpFKiG/3RAa/Qmu+zRi0MwAmrdEkwHNuN0ebo8ccAXBBDa5Z0QOJgBskUIbuCK91x0sCVEw==", + "dev": true + }, + "stream-browserify": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", + "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", + "dev": true, + "requires": { + "inherits": "~2.0.1", + "readable-stream": "^2.0.2" + } + }, + "stream-http": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", + "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", + "dev": true, + "requires": { + "builtin-status-codes": "^3.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.3.6", + "to-arraybuffer": "^1.0.0", + "xtend": "^4.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", + "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "string.prototype.trimstart": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", + "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-loader": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", + "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "schema-utils": "^3.0.0" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "stylehacks": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-5.1.0.tgz", + "integrity": "sha512-SzLmvHQTrIWfSgljkQCw2++C9+Ne91d/6Sp92I8c5uHTcy/PgeHamwITIbBW9wnFTY/3ZfSXR9HIL6Ikqmcu6Q==", + "dev": true, + "requires": { + "browserslist": "^4.16.6", + "postcss-selector-parser": "^6.0.4" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "svg.draggable.js": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/svg.draggable.js/-/svg.draggable.js-2.2.2.tgz", + "integrity": "sha512-JzNHBc2fLQMzYCZ90KZHN2ohXL0BQJGQimK1kGk6AvSeibuKcIdDX9Kr0dT9+UJ5O8nYA0RB839Lhvk4CY4MZw==", + "requires": { + "svg.js": "^2.0.1" + } + }, + "svg.easing.js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/svg.easing.js/-/svg.easing.js-2.0.0.tgz", + "integrity": "sha1-iqmUawqOJ4V6XEChDrpAkeVpHxI=", + "requires": { + "svg.js": ">=2.3.x" + } + }, + "svg.filter.js": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/svg.filter.js/-/svg.filter.js-2.0.2.tgz", + "integrity": "sha1-kQCOFROJ3ZIwd5/L5uLJo2LRwgM=", + "requires": { + "svg.js": "^2.2.5" + } + }, + "svg.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/svg.js/-/svg.js-2.7.1.tgz", + "integrity": "sha512-ycbxpizEQktk3FYvn/8BH+6/EuWXg7ZpQREJvgacqn46gIddG24tNNe4Son6omdXCnSOaApnpZw6MPCBA1dODA==" + }, + "svg.pathmorphing.js": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/svg.pathmorphing.js/-/svg.pathmorphing.js-0.1.3.tgz", + "integrity": "sha512-49HWI9X4XQR/JG1qXkSDV8xViuTLIWm/B/7YuQELV5KMOPtXjiwH4XPJvr/ghEDibmLQ9Oc22dpWpG0vUDDNww==", + "requires": { + "svg.js": "^2.4.0" + } + }, + "svg.resize.js": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/svg.resize.js/-/svg.resize.js-1.4.3.tgz", + "integrity": "sha512-9k5sXJuPKp+mVzXNvxz7U0uC9oVMQrrf7cFsETznzUDDm0x8+77dtZkWdMfRlmbkEEYvUn9btKuZ3n41oNA+uw==", + "requires": { + "svg.js": "^2.6.5", + "svg.select.js": "^2.1.2" + }, + "dependencies": { + "svg.select.js": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-2.1.2.tgz", + "integrity": "sha512-tH6ABEyJsAOVAhwcCjF8mw4crjXSI1aa7j2VQR8ZuJ37H2MBUbyeqYr5nEO7sSN3cy9AR9DUwNg0t/962HlDbQ==", + "requires": { + "svg.js": "^2.2.5" + } + } + } + }, + "svg.select.js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/svg.select.js/-/svg.select.js-3.0.1.tgz", + "integrity": "sha512-h5IS/hKkuVCbKSieR9uQCj9w+zLHoPh+ce19bBYyqF53g6mnPB8sAtIbe1s9dh2S2fCmYX2xel1Ln3PJBbK4kw==", + "requires": { + "svg.js": "^2.6.5" + } + }, + "svgo": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", + "dev": true, + "requires": { + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^4.1.3", + "css-tree": "^1.1.3", + "csso": "^4.2.0", + "picocolors": "^1.0.0", + "stable": "^0.1.8" + } + }, + "sweetalert2": { + "version": "11.4.8", + "resolved": "https://registry.npmjs.org/sweetalert2/-/sweetalert2-11.4.8.tgz", + "integrity": "sha512-BDS/+E8RwaekGSxCPUbPnsRAyQ439gtXkTF/s98vY2l9DaVEOMjGj1FaQSorfGREKsbbxGSP7UXboibL5vgTMA==" + }, + "tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true + }, + "terser": { + "version": "5.12.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.12.1.tgz", + "integrity": "sha512-NXbs+7nisos5E+yXwAD+y7zrcTkMqb0dEJxIGtSKPdCBzopf7ni4odPul2aechpV7EXNvOudYOX2bb5tln1jbQ==", + "dev": true, + "requires": { + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map": "~0.7.2", + "source-map-support": "~0.5.20" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "source-map": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", + "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", + "dev": true + } + } + }, + "terser-webpack-plugin": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.1.tgz", + "integrity": "sha512-GvlZdT6wPQKbDNW/GDQzZFg/j4vKU96yl2q6mcUkzKOgW4gwf1Z8cZToUCrz31XHlPWH8MVb1r2tFtdDtTGJ7g==", + "dev": true, + "requires": { + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "source-map": "^0.6.1", + "terser": "^5.7.2" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "ticky": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ticky/-/ticky-1.0.1.tgz", + "integrity": "sha1-t8+nHnaPHJAAxJe5FRswlHxQ5G0=" + }, + "timers-browserify": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", + "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", + "dev": true, + "requires": { + "setimmediate": "^1.0.4" + } + }, + "timsort": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", + "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", + "dev": true + }, + "tiny-binary-search": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-binary-search/-/tiny-binary-search-1.0.3.tgz", + "integrity": "sha512-STSHX/L5nI9WTLv6wrzJbAPbO7OIISX83KFBh2GVbX1Uz/vgZOU/ANn/8iV6t35yMTpoPzzO+3OQid3mifE0CA==" + }, + "tiny-emitter": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/tiny-emitter/-/tiny-emitter-2.1.0.tgz", + "integrity": "sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==" + }, + "tiny-glob": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/tiny-glob/-/tiny-glob-0.2.9.tgz", + "integrity": "sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==", + "requires": { + "globalyzer": "0.1.0", + "globrex": "^0.1.2" + } + }, + "tiny-inflate": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/tiny-inflate/-/tiny-inflate-1.0.3.tgz", + "integrity": "sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw==" + }, + "tiny-slider": { + "version": "2.9.4", + "resolved": "https://registry.npmjs.org/tiny-slider/-/tiny-slider-2.9.4.tgz", + "integrity": "sha512-LAs2kldWcY+BqCKw4kxd4CMx2RhWrHyEePEsymlOIISTlOVkjfK40sSD7ay73eKXBLg/UkluAZpcfCstimHXew==" + }, + "tinymce": { + "version": "5.10.3", + "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-5.10.3.tgz", + "integrity": "sha512-O59ssHNnujWvSk5Gt8hIGrdNCMKVWVQv9F8siAgLTRgTh0t3NDHrP1UlLtCxArUi9DPWZvlBeUz8D5fJTu7vnA==" + }, + "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-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-readable-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz", + "integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "touch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", + "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", + "requires": { + "nopt": "~1.0.10" + } + }, + "tslib": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==", + "dev": true + }, + "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 + }, + "type": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==" + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed.js": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/typed.js/-/typed.js-2.0.12.tgz", + "integrity": "sha512-lyACZh1cu+vpfYY3DG/bvsGLXXbdoDDpWxmqta10IQUdMXisMXOEyl+jos+YT9uBbzK4QaKYBjT3R0kTJO0Slw==" + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "uglify-js": { + "version": "3.15.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.15.4.tgz", + "integrity": "sha512-vMOPGDuvXecPs34V74qDKk4iJ/SN4vL3Ow/23ixafENYvtrNvtbcgUeugTcUGRGsOF/5fU8/NYSL5Hyb3l1OJA==", + "optional": true + }, + "unbox-primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", + "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has-bigints": "^1.0.1", + "has-symbols": "^1.0.2", + "which-boxed-primitive": "^1.0.2" + } + }, + "undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", + "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", + "dev": true + }, + "unicode-properties": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/unicode-properties/-/unicode-properties-1.3.1.tgz", + "integrity": "sha512-nIV3Tf3LcUEZttY/2g4ZJtGXhWwSkuLL+rCu0DIAMbjyVPj+8j5gNVz4T/sVbnQybIsd5SFGkPKg/756OY6jlA==", + "requires": { + "base64-js": "^1.3.0", + "unicode-trie": "^2.0.0" + } + }, + "unicode-property-aliases-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", + "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", + "dev": true + }, + "unicode-trie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-trie/-/unicode-trie-2.0.0.tgz", + "integrity": "sha512-x7bc76x0bm4prf1VLg79uhAzKw8DVboClSN5VxJuQ+LKDOVEW9CdH+VY7SP+vX7xCYQqzzgQpFqz15zeLvAtZQ==", + "requires": { + "pako": "^0.2.5", + "tiny-inflate": "^1.0.0" + }, + "dependencies": { + "pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha1-8/dSL073gjSNqBYbrZ7P1Rv4OnU=" + } + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", + "dev": true + }, + "unique-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", + "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "requires": { + "crypto-random-string": "^2.0.0" + } + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "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 + }, + "update-notifier": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-5.1.0.tgz", + "integrity": "sha512-ItnICHbeMh9GqUy31hFPrD1kcuZ3rpxDZbf4KUDavXwS0bW5m7SLbDQpGX3UYr072cbrF5hFUs3r5tUsPwjfHw==", + "requires": { + "boxen": "^5.0.0", + "chalk": "^4.1.0", + "configstore": "^5.0.1", + "has-yarn": "^2.1.0", + "import-lazy": "^2.1.0", + "is-ci": "^2.0.0", + "is-installed-globally": "^0.4.0", + "is-npm": "^5.0.0", + "is-yarn-global": "^0.3.0", + "latest-version": "^5.1.0", + "pupa": "^2.1.1", + "semver": "^7.3.4", + "semver-diff": "^3.1.1", + "xdg-basedir": "^4.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + }, + "dependencies": { + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "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-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha1-FrXK/Afb42dsGxmZF3gj1lA6yww=", + "requires": { + "prepend-http": "^2.0.0" + } + }, + "util": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", + "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", + "dev": true, + "requires": { + "inherits": "2.0.3" + }, + "dependencies": { + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", + "dev": true + } + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" + }, + "util.promisify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", + "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.2", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.0" + } + }, + "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": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" + }, + "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.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "vis-data": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/vis-data/-/vis-data-7.1.4.tgz", + "integrity": "sha512-usy+ePX1XnArNvJ5BavQod7YRuGQE1pjFl+pu7IS6rCom2EBoG0o1ZzCqf3l5US6MW51kYkLR+efxRbnjxNl7w==", + "peer": true, + "requires": {} + }, + "vis-timeline": { + "version": "7.5.1", + "resolved": "https://registry.npmjs.org/vis-timeline/-/vis-timeline-7.5.1.tgz", + "integrity": "sha512-XZMHHbA8xm9/Y/iu3mE9MT7J5tfWgbdsW+PmqrgINU2QRX24AiqifNHZHV4YYzeJstiTSOg9Gs5qRkxQ0BvZJw==", + "requires": {} + }, + "vis-util": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/vis-util/-/vis-util-5.0.3.tgz", + "integrity": "sha512-Wf9STUcFrDzK4/Zr7B6epW2Kvm3ORNWF+WiwEz2dpf5RdWkLUXFSbLcuB88n1W6tCdFwVN+v3V4/Xmn9PeL39g==", + "peer": true, + "requires": {} + }, + "vm-browserify": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", + "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", + "dev": true + }, + "vue-style-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/vue-style-loader/-/vue-style-loader-4.1.3.tgz", + "integrity": "sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==", + "dev": true, + "requires": { + "hash-sum": "^1.0.2", + "loader-utils": "^1.0.2" + }, + "dependencies": { + "json5": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz", + "integrity": "sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "loader-utils": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", + "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + } + } + } + }, + "watchpack": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.3.1.tgz", + "integrity": "sha512-x0t0JuydIo8qCNctdDrn1OzH/qDzk2+rdCOC3YzumZ42fiMqmQ7T3xQurykYMhYfHaPHTp4ZxAx2NfUo1K6QaA==", + "dev": true, + "requires": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + } + }, + "wbuf": { + "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", + "dev": true, + "requires": { + "minimalistic-assert": "^1.0.0" + } + }, + "webpack": { + "version": "5.72.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.72.0.tgz", + "integrity": "sha512-qmSmbspI0Qo5ld49htys8GY9XhS9CGqFoHTsOVAnjBdg0Zn79y135R+k4IR4rKK6+eKaabMhJwiVB7xw0SJu5w==", + "dev": true, + "requires": { + "@types/eslint-scope": "^3.7.3", + "@types/estree": "^0.0.51", + "@webassemblyjs/ast": "1.11.1", + "@webassemblyjs/wasm-edit": "1.11.1", + "@webassemblyjs/wasm-parser": "1.11.1", + "acorn": "^8.4.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.9.2", + "es-module-lexer": "^0.9.0", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.9", + "json-parse-better-errors": "^1.0.2", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^3.1.0", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.1.3", + "watchpack": "^2.3.1", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "schema-utils": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", + "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + }, + "webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "dev": true + } + } + }, + "webpack-cli": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-4.9.2.tgz", + "integrity": "sha512-m3/AACnBBzK/kMTcxWHcZFPrw/eQuY4Df1TxvIWfWM2x7mRqBQCqKEd96oCUa9jkapLBaFfRce33eGDb4Pr7YQ==", + "dev": true, + "requires": { + "@discoveryjs/json-ext": "^0.5.0", + "@webpack-cli/configtest": "^1.1.1", + "@webpack-cli/info": "^1.4.1", + "@webpack-cli/serve": "^1.6.1", + "colorette": "^2.0.14", + "commander": "^7.0.0", + "execa": "^5.0.0", + "fastest-levenshtein": "^1.0.12", + "import-local": "^3.0.2", + "interpret": "^2.2.0", + "rechoir": "^0.7.0", + "webpack-merge": "^5.7.3" + } + }, + "webpack-dev-middleware": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.1.tgz", + "integrity": "sha512-81EujCKkyles2wphtdrnPg/QqegC/AtqNH//mQkBYSMqwFVCQrxM6ktB2O/SPlZy7LqeEfTbV3cZARGQz6umhg==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.1", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-dev-server": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.8.1.tgz", + "integrity": "sha512-dwld70gkgNJa33czmcj/PlKY/nOy/BimbrgZRaR9vDATBQAYgLzggR0nxDtPLJiLrMgZwbE6RRfJ5vnBBasTyg==", + "dev": true, + "requires": { + "@types/bonjour": "^3.5.9", + "@types/connect-history-api-fallback": "^1.3.5", + "@types/express": "^4.17.13", + "@types/serve-index": "^1.9.1", + "@types/sockjs": "^0.3.33", + "@types/ws": "^8.5.1", + "ansi-html-community": "^0.0.8", + "bonjour-service": "^1.0.11", + "chokidar": "^3.5.3", + "colorette": "^2.0.10", + "compression": "^1.7.4", + "connect-history-api-fallback": "^1.6.0", + "default-gateway": "^6.0.3", + "express": "^4.17.3", + "graceful-fs": "^4.2.6", + "html-entities": "^2.3.2", + "http-proxy-middleware": "^2.0.3", + "ipaddr.js": "^2.0.1", + "open": "^8.0.9", + "p-retry": "^4.5.0", + "portfinder": "^1.0.28", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.21", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "ajv": { + "version": "8.11.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.11.0.tgz", + "integrity": "sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.3" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" + } + } + } + }, + "webpack-merge": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", + "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-notifier": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/webpack-notifier/-/webpack-notifier-1.15.0.tgz", + "integrity": "sha512-N2V8UMgRB5komdXQRavBsRpw0hPhJq2/SWNOGuhrXpIgRhcMexzkGQysUyGStHLV5hkUlgpRiF7IUXoBqyMmzQ==", + "dev": true, + "requires": { + "node-notifier": "^9.0.0", + "strip-ansi": "^6.0.0" + } + }, + "webpack-rtl-plugin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/webpack-rtl-plugin/-/webpack-rtl-plugin-2.0.0.tgz", + "integrity": "sha512-lROgFkiPjapg9tcZ8FiLWeP5pJoG00018aEjLTxSrVldPD1ON+LPlhKPHjb7eE8Bc0+KL23pxcAjWDGOv9+UAw==", + "dev": true, + "requires": { + "@romainberger/css-diff": "^1.0.3", + "async": "^2.0.0", + "cssnano": "4.1.10", + "rtlcss": "2.4.0", + "webpack-sources": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + } + }, + "css-declaration-sorter": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", + "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", + "dev": true, + "requires": { + "postcss": "^7.0.1", + "timsort": "^0.3.0" + } + }, + "css-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", + "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", + "dev": true, + "requires": { + "boolbase": "^1.0.0", + "css-what": "^3.2.1", + "domutils": "^1.7.0", + "nth-check": "^1.0.2" + } + }, + "css-tree": { + "version": "1.0.0-alpha.37", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", + "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", + "dev": true, + "requires": { + "mdn-data": "2.0.4", + "source-map": "^0.6.1" + } + }, + "css-what": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", + "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", + "dev": true + }, + "cssnano": { + "version": "4.1.10", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", + "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", + "dev": true, + "requires": { + "cosmiconfig": "^5.0.0", + "cssnano-preset-default": "^4.0.7", + "is-resolvable": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "cssnano-preset-default": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", + "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", + "dev": true, + "requires": { + "css-declaration-sorter": "^4.0.1", + "cssnano-util-raw-cache": "^4.0.1", + "postcss": "^7.0.0", + "postcss-calc": "^7.0.1", + "postcss-colormin": "^4.0.3", + "postcss-convert-values": "^4.0.1", + "postcss-discard-comments": "^4.0.2", + "postcss-discard-duplicates": "^4.0.2", + "postcss-discard-empty": "^4.0.1", + "postcss-discard-overridden": "^4.0.1", + "postcss-merge-longhand": "^4.0.11", + "postcss-merge-rules": "^4.0.3", + "postcss-minify-font-values": "^4.0.2", + "postcss-minify-gradients": "^4.0.2", + "postcss-minify-params": "^4.0.2", + "postcss-minify-selectors": "^4.0.2", + "postcss-normalize-charset": "^4.0.1", + "postcss-normalize-display-values": "^4.0.2", + "postcss-normalize-positions": "^4.0.2", + "postcss-normalize-repeat-style": "^4.0.2", + "postcss-normalize-string": "^4.0.2", + "postcss-normalize-timing-functions": "^4.0.2", + "postcss-normalize-unicode": "^4.0.1", + "postcss-normalize-url": "^4.0.1", + "postcss-normalize-whitespace": "^4.0.2", + "postcss-ordered-values": "^4.1.2", + "postcss-reduce-initial": "^4.0.3", + "postcss-reduce-transforms": "^4.0.2", + "postcss-svgo": "^4.0.3", + "postcss-unique-selectors": "^4.0.1" + } + }, + "dom-serializer": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", + "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "entities": "^2.0.0" + } + }, + "domutils": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", + "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", + "dev": true, + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + }, + "dependencies": { + "domelementtype": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "mdn-data": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", + "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", + "dev": true + }, + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + }, + "nth-check": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", + "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", + "dev": true, + "requires": { + "boolbase": "~1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "postcss-calc": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", + "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", + "dev": true, + "requires": { + "postcss": "^7.0.27", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.0.2" + } + }, + "postcss-colormin": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", + "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "color": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-convert-values": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", + "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-discard-comments": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", + "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-duplicates": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", + "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-empty": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", + "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-discard-overridden": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", + "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-merge-longhand": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", + "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", + "dev": true, + "requires": { + "css-color-names": "0.0.4", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "stylehacks": "^4.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-merge-rules": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", + "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "cssnano-util-same-parent": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0", + "vendors": "^1.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-minify-font-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", + "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-gradients": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", + "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "is-color-stop": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-params": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", + "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "browserslist": "^4.0.0", + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "uniqs": "^2.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-minify-selectors": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", + "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "postcss-normalize-charset": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", + "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", + "dev": true, + "requires": { + "postcss": "^7.0.0" + } + }, + "postcss-normalize-display-values": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", + "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-positions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", + "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-repeat-style": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", + "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-string": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", + "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", + "dev": true, + "requires": { + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-timing-functions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", + "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-unicode": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", + "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-url": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", + "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^3.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-normalize-whitespace": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", + "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-ordered-values": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", + "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", + "dev": true, + "requires": { + "cssnano-util-get-arguments": "^4.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-reduce-initial": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", + "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "caniuse-api": "^3.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0" + } + }, + "postcss-reduce-transforms": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", + "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", + "dev": true, + "requires": { + "cssnano-util-get-match": "^4.0.0", + "has": "^1.0.0", + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-svgo": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", + "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", + "dev": true, + "requires": { + "postcss": "^7.0.0", + "postcss-value-parser": "^3.0.0", + "svgo": "^1.0.0" + }, + "dependencies": { + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + } + } + }, + "postcss-unique-selectors": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", + "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.0", + "postcss": "^7.0.0", + "uniqs": "^2.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 + }, + "rtlcss": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rtlcss/-/rtlcss-2.4.0.tgz", + "integrity": "sha512-hdjFhZ5FCI0ABOfyXOMOhBtwPWtANLCG7rOiOcRf+yi5eDdxmDjqBruWouEnwVdzfh/TWF6NNncIEsigOCFZOA==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "findup": "^0.1.5", + "mkdirp": "^0.5.1", + "postcss": "^6.0.14", + "strip-json-comments": "^2.0.0" + }, + "dependencies": { + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + } + } + } + }, + "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 + }, + "stylehacks": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", + "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", + "dev": true, + "requires": { + "browserslist": "^4.0.0", + "postcss": "^7.0.0", + "postcss-selector-parser": "^3.0.0" + }, + "dependencies": { + "postcss-selector-parser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", + "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", + "dev": true, + "requires": { + "dot-prop": "^5.2.0", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + } + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "svgo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", + "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "coa": "^2.0.2", + "css-select": "^2.0.0", + "css-select-base-adapter": "^0.1.1", + "css-tree": "1.0.0-alpha.37", + "csso": "^4.0.2", + "js-yaml": "^3.13.1", + "mkdirp": "~0.5.1", + "object.values": "^1.1.0", + "sax": "~1.2.4", + "stable": "^0.1.8", + "unquote": "~1.1.1", + "util.promisify": "~1.0.0" + } + }, + "webpack-sources": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.3.0.tgz", + "integrity": "sha512-OiVgSrbGu7NEnEvQJJgdSFPl2qWKkWq5lHMhgiToIiN9w34EBnjYzSYs+VbL5KoYiLNtFFa7BZIKxRED3I32pA==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + } + } + }, + "webpack-sources": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", + "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", + "dev": true, + "requires": { + "source-list-map": "^2.0.0", + "source-map": "~0.6.1" + } + }, + "webpackbar": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/webpackbar/-/webpackbar-5.0.2.tgz", + "integrity": "sha512-BmFJo7veBDgQzfWXl/wwYXr/VFus0614qZ8i9znqcl9fnEdiVkdbi0TedLQ6xAK92HZHDJ0QmyQ0fmuZPAgCYQ==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "consola": "^2.15.3", + "pretty-time": "^1.1.0", + "std-env": "^3.0.1" + } + }, + "websocket-driver": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", + "dev": true, + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", + "dev": true + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "widest-line": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-3.1.0.tgz", + "integrity": "sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==", + "requires": { + "string-width": "^4.0.0" + } + }, + "wildcard": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", + "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", + "dev": true + }, + "wnumb": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/wnumb/-/wnumb-1.2.0.tgz", + "integrity": "sha512-eYut5K/dW7usfk/Mwm6nxBNoTPp/uP7PlXld+hhg7lDtHLdHFnNclywGYM9BRC7Ohd4JhwuHg+vmOUGfd3NhVA==" + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==" + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + }, + "write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "requires": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "ws": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.5.0.tgz", + "integrity": "sha512-BWX0SWVgLPzYwF8lTzEy1egjhS4S4OEAHfsO8o65WOVsrnSRGaSiUaa9e0ggGlkMTtBlmOpEXiie9RUcBO86qg==", + "dev": true, + "requires": {} + }, + "xdg-basedir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", + "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==" + }, + "xmldoc": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/xmldoc/-/xmldoc-1.1.2.tgz", + "integrity": "sha512-ruPC/fyPNck2BD1dpz0AZZyrEwMOrWTO5lDdIXS91rs3wtm4j+T8Rp2o+zoOYkkAxJTZRPOSnOGei1egoRmKMQ==", + "requires": { + "sax": "^1.2.1" + } + }, + "xss": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/xss/-/xss-1.0.11.tgz", + "integrity": "sha512-EimjrjThZeK2MO7WKR9mN5ZC1CSqivSl55wvUK5EtU6acf0rzEE1pN+9ZDrFXJ82BRp3JL38pPE6S4o/rpp1zQ==", + "peer": true, + "requires": { + "commander": "^2.20.3", + "cssfilter": "0.0.10" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "peer": true + } + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "dev": true + }, + "yargs": { + "version": "17.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", + "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", + "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", + "dev": true + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..32f0078 --- /dev/null +++ b/package.json @@ -0,0 +1,111 @@ +{ + "private": true, + "scripts": { + "dev": "npm run development", + "development": "mix", + "watch": "mix watch", + "watch-poll": "mix watch -- --watch-options-poll=1000", + "hot": "mix watch --hot", + "prod": "npm run production", + "production": "mix --production" + }, + "dependencies": { + "@ckeditor/ckeditor5-alignment": "^31.1.0", + "@ckeditor/ckeditor5-build-balloon": "^23.1.0", + "@ckeditor/ckeditor5-build-balloon-block": "^23.1.0", + "@ckeditor/ckeditor5-build-classic": "^23.1.0", + "@ckeditor/ckeditor5-build-decoupled-document": "^23.1.0", + "@ckeditor/ckeditor5-build-inline": "^23.1.0", + "@fortawesome/fontawesome-free": "^5.15.3", + "@popperjs/core": "~2.10.1", + "@shopify/draggable": "^1.0.0-beta.12", + "@yaireo/tagify": "^4.9.2", + "acorn": "^8.0.4", + "apexcharts": "^3.30.0", + "autosize": "^5.0.1", + "axios": "^0.21.1", + "bootstrap": "5.1.3", + "bootstrap-cookie-alert": "^1.2.1", + "bootstrap-daterangepicker": "^3.1.0", + "bootstrap-icons": "^1.5.0", + "bootstrap-maxlength": "^1.10.1", + "bootstrap-multiselectsplitter": "^1.0.4", + "chalk": "^4.1.0", + "chart.js": "^3.6.0", + "clipboard": "^2.0.8", + "countup.js": "^2.0.7", + "cropperjs": "^1.5.12", + "datatables.net": "^1.10.25", + "datatables.net-bs5": "^1.10.25", + "datatables.net-buttons": "^1.7.1", + "datatables.net-buttons-bs5": "^1.7.1", + "datatables.net-colreorder": "^1.5.4", + "datatables.net-colreorder-bs5": "^1.5.4", + "datatables.net-datetime": "^1.1.0", + "datatables.net-fixedcolumns": "^3.3.3", + "datatables.net-fixedcolumns-bs5": "^3.3.3", + "datatables.net-fixedheader": "^3.1.9", + "datatables.net-fixedheader-bs5": "^3.1.9", + "datatables.net-plugins": "^1.10.24", + "datatables.net-responsive": "^2.2.9", + "datatables.net-responsive-bs5": "^2.2.9", + "datatables.net-rowgroup": "^1.1.3", + "datatables.net-rowgroup-bs5": "^1.1.3", + "datatables.net-rowreorder": "^1.2.8", + "datatables.net-rowreorder-bs5": "^1.2.8", + "datatables.net-scroller": "^2.0.4", + "datatables.net-scroller-bs5": "^2.0.4", + "datatables.net-select": "^1.3.3", + "datatables.net-select-bs5": "^1.3.3", + "del": "^6.0.0", + "dropzone": "^5.9.2", + "es6-promise": "^4.2.8", + "es6-promise-polyfill": "^1.2.0", + "es6-shim": "^0.35.5", + "esri-leaflet": "^3.0.2", + "esri-leaflet-geocoder": "^3.0.0", + "flatpickr": "^4.6.9", + "flot": "^4.2.2", + "fslightbox": "^3.3.0-2", + "fullcalendar": "^5.8.0", + "handlebars": "^4.7.7", + "inputmask": "^5.0.6", + "jkanban": "^1.3.1", + "jquery": "3.6.0", + "jquery.repeater": "^1.2.1", + "jstree": "^3.3.11", + "jszip": "^3.6.0", + "leaflet": "^1.7.1", + "line-awesome": "^1.3.0", + "moment": "^2.29.1", + "nouislider": "^15.2.0", + "npm": "^7.19.1", + "pdfmake": "^0.2.0", + "prism-themes": "^1.7.0", + "prismjs": "^1.24.1", + "quill": "^1.3.7", + "select2": "^4.1.0-rc.0", + "smooth-scroll": "^16.1.3", + "sweetalert2": "^11.0.18", + "tiny-slider": "^2.9.3", + "tinymce": "^5.8.2", + "typed.js": "^2.0.12", + "vis-timeline": "^7.4.9", + "wnumb": "^1.2.0" + }, + "devDependencies": { + "alpinejs": "^3.7.1", + "autoprefixer": "^10.4.2", + "axios": "^0.24.0", + "laravel-mix": "^6.0.39", + "lodash": "^4.17.19", + "postcss": "^8.4.5", + "postcss-import": "^14.0.2", + "replace-in-file-webpack-plugin": "^1.0.6", + "resolve-url-loader": "^4.0.0", + "rtlcss": "^3.5.0", + "sass": "^1.47.0", + "sass-loader": "^12.4.0", + "webpack-rtl-plugin": "^2.0.0" + } +} diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..4ae4d97 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,31 @@ + + + + + ./tests/Unit + + + ./tests/Feature + + + + + ./app + + + + + + + + + + + + + + diff --git a/public/.htaccess b/public/.htaccess new file mode 100644 index 0000000..3aec5e2 --- /dev/null +++ b/public/.htaccess @@ -0,0 +1,21 @@ + + + Options -MultiViews -Indexes + + + RewriteEngine On + + # Handle Authorization Header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Redirect Trailing Slashes If Not A Folder... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_URI} (.+)/$ + RewriteRule ^ %1 [L,R=301] + + # Send Requests To Front Controller... + RewriteCond %{REQUEST_FILENAME} !-d + RewriteCond %{REQUEST_FILENAME} !-f + RewriteRule ^ index.php [L] + diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000..e69de29 diff --git a/public/icon_replacement.txt b/public/icon_replacement.txt new file mode 100644 index 0000000..89b51e3 --- /dev/null +++ b/public/icon_replacement.txt @@ -0,0 +1,24 @@ +150-1.jpg - 300-6.jpg +150-2.jpg - 300-1.jpg +150-3.jpg - 300-2.jpg +150-4.jpg - 300-5.jpg +150-5.jpg - 300-20.jpg +150-6.jpg - 300-23.jpg +150-7.jpg - 300-12.jpg +150-8.jpg - 300-9.jpg +150-9.jpg - 300-10.jpg +150-10.jpg - 300-21.jpg +150-11.jpg - 300-14.jpg +150-12.jpg - 300-11.jpg +150-13.jpg - 300-7.jpg +150-14.jpg - 300-4.jpg +150-15.jpg - 300-25.jpg +150-16.jpg - 300-8.jpg +150-17.jpg - 300-13.jpg +150-18.jpg - 300-15.jpg +150-19.jpg - 300-24.jpg +150-20.jpg - 300-3.jpg +150-21.jpg - 300-17.jpg +150-24.jpg - 300-19.jpg +150-25.jpg - 300-2.jpg +150-26.jpg - 300-1.jpg diff --git a/public/index.php b/public/index.php new file mode 100644 index 0000000..a8137b1 --- /dev/null +++ b/public/index.php @@ -0,0 +1,55 @@ +make(Kernel::class); + +$response = tap($kernel->handle( + $request = Request::capture() +))->send(); + +$kernel->terminate($request, $response); diff --git a/public/mix-manifest.json b/public/mix-manifest.json new file mode 100644 index 0000000..2d20247 --- /dev/null +++ b/public/mix-manifest.json @@ -0,0 +1,110 @@ +{ + "/demo1/plugins/custom/cookiealert/cookiealert.bundle.js": "/demo1/plugins/custom/cookiealert/cookiealert.bundle.js", + "/demo1/plugins/custom/cropper/cropper.bundle.js": "/demo1/plugins/custom/cropper/cropper.bundle.js", + "/demo1/plugins/custom/draggable/draggable.bundle.js": "/demo1/plugins/custom/draggable/draggable.bundle.js", + "/demo1/plugins/custom/flotcharts/flotcharts.bundle.js": "/demo1/plugins/custom/flotcharts/flotcharts.bundle.js", + "/demo1/plugins/custom/fslightbox/fslightbox.bundle.js": "/demo1/plugins/custom/fslightbox/fslightbox.bundle.js", + "/demo1/plugins/custom/jkanban/jkanban.bundle.js": "/demo1/plugins/custom/jkanban/jkanban.bundle.js", + "/demo1/plugins/custom/jstree/jstree.bundle.js": "/demo1/plugins/custom/jstree/jstree.bundle.js", + "/demo1/plugins/custom/prismjs/prismjs.bundle.js": "/demo1/plugins/custom/prismjs/prismjs.bundle.js", + "/demo1/plugins/custom/tiny-slider/tiny-slider.bundle.js": "/demo1/plugins/custom/tiny-slider/tiny-slider.bundle.js", + "/demo1/plugins/custom/typedjs/typedjs.bundle.js": "/demo1/plugins/custom/typedjs/typedjs.bundle.js", + "/demo1/js/custom/account/api-keys/api-keys.js": "/demo1/js/custom/account/api-keys/api-keys.js", + "/demo1/js/custom/account/orders/classic.js": "/demo1/js/custom/account/orders/classic.js", + "/demo1/js/custom/account/security/license-usage.js": "/demo1/js/custom/account/security/license-usage.js", + "/demo1/js/custom/account/security/security-summary.js": "/demo1/js/custom/account/security/security-summary.js", + "/demo1/js/custom/account/settings/deactivate-account.js": "/demo1/js/custom/account/settings/deactivate-account.js", + "/demo1/js/custom/account/settings/overview.js": "/demo1/js/custom/account/settings/overview.js", + "/demo1/js/custom/apps/calendar/calendar.js": "/demo1/js/custom/apps/calendar/calendar.js", + "/demo1/js/custom/apps/chat/chat.js": "/demo1/js/custom/apps/chat/chat.js", + "/demo1/js/custom/apps/inbox/compose.js": "/demo1/js/custom/apps/inbox/compose.js", + "/demo1/js/custom/apps/inbox/listing.js": "/demo1/js/custom/apps/inbox/listing.js", + "/demo1/js/custom/apps/inbox/reply.js": "/demo1/js/custom/apps/inbox/reply.js", + "/demo1/js/custom/apps/invoices/create.js": "/demo1/js/custom/apps/invoices/create.js", + "/demo1/js/custom/apps/subscriptions/add/advanced.js": "/demo1/js/custom/apps/subscriptions/add/advanced.js", + "/demo1/js/custom/apps/subscriptions/add/customer-select.js": "/demo1/js/custom/apps/subscriptions/add/customer-select.js", + "/demo1/js/custom/apps/subscriptions/add/products.js": "/demo1/js/custom/apps/subscriptions/add/products.js", + "/demo1/js/custom/apps/subscriptions/list/export.js": "/demo1/js/custom/apps/subscriptions/list/export.js", + "/demo1/js/custom/apps/subscriptions/list/list.js": "/demo1/js/custom/apps/subscriptions/list/list.js", + "/demo1/js/custom/apps/support-center/tickets/create.js": "/demo1/js/custom/apps/support-center/tickets/create.js", + "/demo1/js/custom/apps/user-management/permissions/add-permission.js": "/demo1/js/custom/apps/user-management/permissions/add-permission.js", + "/demo1/js/custom/apps/user-management/permissions/list.js": "/demo1/js/custom/apps/user-management/permissions/list.js", + "/demo1/js/custom/apps/user-management/permissions/update-permission.js": "/demo1/js/custom/apps/user-management/permissions/update-permission.js", + "/demo1/js/custom/apps/user-management/roles/list/add.js": "/demo1/js/custom/apps/user-management/roles/list/add.js", + "/demo1/js/custom/apps/user-management/roles/list/update-role.js": "/demo1/js/custom/apps/user-management/roles/list/update-role.js", + "/demo1/js/custom/apps/user-management/roles/view/update-role.js": "/demo1/js/custom/apps/user-management/roles/view/update-role.js", + "/demo1/js/custom/apps/user-management/roles/view/view.js": "/demo1/js/custom/apps/user-management/roles/view/view.js", + "/demo1/js/custom/apps/user-management/users/list/add.js": "/demo1/js/custom/apps/user-management/users/list/add.js", + "/demo1/js/custom/apps/user-management/users/list/export-users.js": "/demo1/js/custom/apps/user-management/users/list/export-users.js", + "/demo1/js/custom/apps/user-management/users/list/table.js": "/demo1/js/custom/apps/user-management/users/list/table.js", + "/demo1/js/custom/apps/user-management/users/view/add-auth-app.js": "/demo1/js/custom/apps/user-management/users/view/add-auth-app.js", + "/demo1/js/custom/apps/user-management/users/view/add-one-time-password.js": "/demo1/js/custom/apps/user-management/users/view/add-one-time-password.js", + "/demo1/js/custom/apps/user-management/users/view/add-schedule.js": "/demo1/js/custom/apps/user-management/users/view/add-schedule.js", + "/demo1/js/custom/apps/user-management/users/view/add-task.js": "/demo1/js/custom/apps/user-management/users/view/add-task.js", + "/demo1/js/custom/apps/user-management/users/view/update-details.js": "/demo1/js/custom/apps/user-management/users/view/update-details.js", + "/demo1/js/custom/apps/user-management/users/view/update-email.js": "/demo1/js/custom/apps/user-management/users/view/update-email.js", + "/demo1/js/custom/apps/user-management/users/view/update-password.js": "/demo1/js/custom/apps/user-management/users/view/update-password.js", + "/demo1/js/custom/apps/user-management/users/view/update-role.js": "/demo1/js/custom/apps/user-management/users/view/update-role.js", + "/demo1/js/custom/apps/user-management/users/view/view.js": "/demo1/js/custom/apps/user-management/users/view/view.js", + "/demo1/js/custom/pages/pricing/general.js": "/demo1/js/custom/pages/pricing/general.js", + "/demo1/js/custom/pages/user-profile/followers.js": "/demo1/js/custom/pages/user-profile/followers.js", + "/demo1/js/custom/utilities/modals/bidding.js": "/demo1/js/custom/utilities/modals/bidding.js", + "/demo1/js/custom/utilities/modals/create-account.js": "/demo1/js/custom/utilities/modals/create-account.js", + "/demo1/js/custom/utilities/modals/create-api-key.js": "/demo1/js/custom/utilities/modals/create-api-key.js", + "/demo1/js/custom/utilities/modals/create-project.js": "/demo1/js/custom/utilities/modals/create-project.js", + "/demo1/js/custom/utilities/modals/two-factor-authentication.js": "/demo1/js/custom/utilities/modals/two-factor-authentication.js", + "/demo1/js/custom/utilities/modals/upgrade-plan.js": "/demo1/js/custom/utilities/modals/upgrade-plan.js", + "/demo1/js/custom/utilities/modals/users-search.js": "/demo1/js/custom/utilities/modals/users-search.js", + "/demo1/js/custom/utilities/search/horizontal.js": "/demo1/js/custom/utilities/search/horizontal.js", + "/demo1/js/custom/intro.js": "/demo1/js/custom/intro.js", + "/demo1/js/custom/landing.js": "/demo1/js/custom/landing.js", + "/demo1/plugins/global/plugins.bundle.css": "/demo1/plugins/global/plugins.bundle.css", + "/demo1/plugins/custom/datatables/datatables.bundle.css": "/demo1/plugins/custom/datatables/datatables.bundle.css", + "/demo1/plugins/custom/cropper/cropper.bundle.css": "/demo1/plugins/custom/cropper/cropper.bundle.css", + "/demo1/plugins/custom/cookiealert/cookiealert.bundle.css": "/demo1/plugins/custom/cookiealert/cookiealert.bundle.css", + "/demo1/plugins/custom/tiny-slider/tiny-slider.bundle.css": "/demo1/plugins/custom/tiny-slider/tiny-slider.bundle.css", + "/demo1/plugins/custom/prismjs/prismjs.bundle.css": "/demo1/plugins/custom/prismjs/prismjs.bundle.css", + "/demo1/plugins/custom/jstree/jstree.bundle.css": "/demo1/plugins/custom/jstree/jstree.bundle.css", + "/demo1/plugins/custom/jkanban/jkanban.bundle.css": "/demo1/plugins/custom/jkanban/jkanban.bundle.css", + "/demo1/plugins/custom/fullcalendar/fullcalendar.bundle.css": "/demo1/plugins/custom/fullcalendar/fullcalendar.bundle.css", + "/demo1/plugins/custom/flatpickr/flatpickr.bundle.css": "/demo1/plugins/custom/flatpickr/flatpickr.bundle.css", + "/demo1/css/style.bundle.css": "/demo1/css/style.bundle.css", + "/demo1/plugins/global/plugins-custom.bundle.css": "/demo1/plugins/global/plugins-custom.bundle.css", + "/demo1/plugins/global/plugins.bundle.js": "/demo1/plugins/global/plugins.bundle.js", + "/demo1/js/scripts.bundle.js": "/demo1/js/scripts.bundle.js", + "/demo1/js/custom/account/settings/profile-details.js": "/demo1/js/custom/account/settings/profile-details.js", + "/demo1/js/custom/account/settings/signin-methods.js": "/demo1/js/custom/account/settings/signin-methods.js", + "/demo1/js/custom/authentication/password-reset/new-password.js": "/demo1/js/custom/authentication/password-reset/new-password.js", + "/demo1/js/custom/authentication/password-reset/password-reset.js": "/demo1/js/custom/authentication/password-reset/password-reset.js", + "/demo1/js/custom/authentication/sign-in/general.js": "/demo1/js/custom/authentication/sign-in/general.js", + "/demo1/js/custom/authentication/sign-up/general.js": "/demo1/js/custom/authentication/sign-up/general.js", + "/demo1/js/custom/modals/two-factor-authentication.js": "/demo1/js/custom/modals/two-factor-authentication.js", + "/demo1/js/custom/user-management/permissions/add-permission.js": "/demo1/js/custom/user-management/permissions/add-permission.js", + "/demo1/js/custom/user-management/permissions/list.js": "/demo1/js/custom/user-management/permissions/list.js", + "/demo1/js/custom/user-management/permissions/update-permission.js": "/demo1/js/custom/user-management/permissions/update-permission.js", + "/demo1/js/custom/user-management/roles/list/add.js": "/demo1/js/custom/user-management/roles/list/add.js", + "/demo1/js/custom/user-management/roles/list/update-role.js": "/demo1/js/custom/user-management/roles/list/update-role.js", + "/demo1/js/custom/user-management/roles/view/update-role.js": "/demo1/js/custom/user-management/roles/view/update-role.js", + "/demo1/js/custom/user-management/roles/view/view.js": "/demo1/js/custom/user-management/roles/view/view.js", + "/demo1/js/custom/user-management/users/list/add.js": "/demo1/js/custom/user-management/users/list/add.js", + "/demo1/js/custom/user-management/users/list/export-users.js": "/demo1/js/custom/user-management/users/list/export-users.js", + "/demo1/js/custom/user-management/users/list/table.js": "/demo1/js/custom/user-management/users/list/table.js", + "/demo1/js/custom/user-management/users/view/add-auth-app.js": "/demo1/js/custom/user-management/users/view/add-auth-app.js", + "/demo1/js/custom/user-management/users/view/add-one-time-password.js": "/demo1/js/custom/user-management/users/view/add-one-time-password.js", + "/demo1/js/custom/user-management/users/view/add-schedule.js": "/demo1/js/custom/user-management/users/view/add-schedule.js", + "/demo1/js/custom/user-management/users/view/add-task.js": "/demo1/js/custom/user-management/users/view/add-task.js", + "/demo1/js/custom/user-management/users/view/update-details.js": "/demo1/js/custom/user-management/users/view/update-details.js", + "/demo1/js/custom/user-management/users/view/update-email.js": "/demo1/js/custom/user-management/users/view/update-email.js", + "/demo1/js/custom/user-management/users/view/update-password.js": "/demo1/js/custom/user-management/users/view/update-password.js", + "/demo1/js/custom/user-management/users/view/update-role.js": "/demo1/js/custom/user-management/users/view/update-role.js", + "/demo1/js/custom/user-management/users/view/view.js": "/demo1/js/custom/user-management/users/view/view.js", + "/demo1/js/custom/widgets.js": "/demo1/js/custom/widgets.js", + "/demo1/js/vendors/plugins/datatables.init.js": "/demo1/js/vendors/plugins/datatables.init.js", + "/demo1/plugins/custom/jstree/32px.png": "/demo1/plugins/custom/jstree/32px.png", + "/demo1/plugins/custom/jstree/40px.png": "/demo1/plugins/custom/jstree/40px.png", + "/demo1/plugins/custom/jstree/throbber.gif": "/demo1/plugins/custom/jstree/throbber.gif", + "/demo1/plugins/custom/datatables/datatables.bundle.js": "/demo1/plugins/custom/datatables/datatables.bundle.js", + "/demo1/plugins/custom/flatpickr/flatpickr.bundle.js": "/demo1/plugins/custom/flatpickr/flatpickr.bundle.js", + "/demo1/plugins/custom/formrepeater/formrepeater.bundle.js": "/demo1/plugins/custom/formrepeater/formrepeater.bundle.js", + "/demo1/plugins/custom/fullcalendar/fullcalendar.bundle.js": "/demo1/plugins/custom/fullcalendar/fullcalendar.bundle.js" +} diff --git a/public/robots.txt b/public/robots.txt new file mode 100644 index 0000000..eb05362 --- /dev/null +++ b/public/robots.txt @@ -0,0 +1,2 @@ +User-agent: * +Disallow: diff --git a/public/vendor/datatables/buttons.server-side.js b/public/vendor/datatables/buttons.server-side.js new file mode 100644 index 0000000..e012c9b --- /dev/null +++ b/public/vendor/datatables/buttons.server-side.js @@ -0,0 +1,284 @@ +(function ($, DataTable) { + "use strict"; + + var _buildParams = function (dt, action, onlyVisibles) { + var params = dt.ajax.params(); + params.action = action; + params._token = $('meta[name="csrf-token"]').attr('content'); + + if (onlyVisibles) { + params.visible_columns = _getVisibleColumns(); + } else { + params.visible_columns = null; + } + + return params; + }; + + var _getVisibleColumns = function () { + + var visible_columns = []; + $.each(DataTable.settings[0].aoColumns, function (key, col) { + if (col.bVisible) { + visible_columns.push(col.name); + } + }); + + return visible_columns; + }; + + var _downloadFromUrl = function (url, params) { + var postUrl = url + '/export'; + var xhr = new XMLHttpRequest(); + xhr.open('POST', postUrl, true); + xhr.responseType = 'arraybuffer'; + xhr.onload = function () { + if (this.status === 200) { + var filename = ""; + var disposition = xhr.getResponseHeader('Content-Disposition'); + if (disposition && disposition.indexOf('attachment') !== -1) { + var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; + var matches = filenameRegex.exec(disposition); + if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, ''); + } + var type = xhr.getResponseHeader('Content-Type'); + + var blob = new Blob([this.response], {type: type}); + if (typeof window.navigator.msSaveBlob !== 'undefined') { + // IE workaround for "HTML7007: One or more blob URLs were revoked by closing the blob for which they were created. These URLs will no longer resolve as the data backing the URL has been freed." + window.navigator.msSaveBlob(blob, filename); + } else { + var URL = window.URL || window.webkitURL; + var downloadUrl = URL.createObjectURL(blob); + + if (filename) { + // use HTML5 a[download] attribute to specify filename + var a = document.createElement("a"); + // safari doesn't support this yet + if (typeof a.download === 'undefined') { + window.location = downloadUrl; + } else { + a.href = downloadUrl; + a.download = filename; + document.body.appendChild(a); + a.click(); + } + } else { + window.location = downloadUrl; + } + + setTimeout(function () { + URL.revokeObjectURL(downloadUrl); + }, 100); // cleanup + } + } + }; + xhr.setRequestHeader('Content-type', 'application/x-www-form-urlencoded'); + xhr.send($.param(params)); + }; + + var _buildUrl = function(dt, action) { + var url = dt.ajax.url() || ''; + var params = dt.ajax.params(); + params.action = action; + + if (url.indexOf('?') > -1) { + return url + '&' + $.param(params); + } + + return url + '?' + $.param(params); + }; + + DataTable.ext.buttons.excel = { + className: 'buttons-excel', + + text: function (dt) { + return ' ' + dt.i18n('buttons.excel', 'Excel'); + }, + + action: function (e, dt, button, config) { + var url = _buildUrl(dt, 'excel'); + window.location = url; + } + }; + + DataTable.ext.buttons.postExcel = { + className: 'buttons-excel', + + text: function (dt) { + return ' ' + dt.i18n('buttons.excel', 'Excel'); + }, + + action: function (e, dt, button, config) { + var url = dt.ajax.url() || window.location.href; + var params = _buildParams(dt, 'excel'); + + _downloadFromUrl(url, params); + } + }; + + DataTable.ext.buttons.postExcelVisibleColumns = { + className: 'buttons-excel', + + text: function (dt) { + return ' ' + dt.i18n('buttons.excel', 'Excel (only visible columns)'); + }, + + action: function (e, dt, button, config) { + var url = dt.ajax.url() || window.location.href; + var params = _buildParams(dt, 'excel', true); + + _downloadFromUrl(url, params); + } + }; + + DataTable.ext.buttons.export = { + extend: 'collection', + + className: 'buttons-export', + + text: function (dt) { + return ' ' + dt.i18n('buttons.export', 'Export') + ' '; + }, + + buttons: ['csv', 'excel', 'pdf'] + }; + + DataTable.ext.buttons.csv = { + className: 'buttons-csv', + + text: function (dt) { + return ' ' + dt.i18n('buttons.csv', 'CSV'); + }, + + action: function (e, dt, button, config) { + var url = _buildUrl(dt, 'csv'); + window.location = url; + } + }; + + DataTable.ext.buttons.postCsvVisibleColumns = { + className: 'buttons-csv', + + text: function (dt) { + return ' ' + dt.i18n('buttons.csv', 'CSV (only visible columns)'); + }, + + action: function (e, dt, button, config) { + var url = dt.ajax.url() || window.location.href; + var params = _buildParams(dt, 'csv', true); + + _downloadFromUrl(url, params); + } + }; + + DataTable.ext.buttons.postCsv = { + className: 'buttons-csv', + + text: function (dt) { + return ' ' + dt.i18n('buttons.csv', 'CSV'); + }, + + action: function (e, dt, button, config) { + var url = dt.ajax.url() || window.location.href; + var params = _buildParams(dt, 'csv'); + + _downloadFromUrl(url, params); + } + }; + + DataTable.ext.buttons.pdf = { + className: 'buttons-pdf', + + text: function (dt) { + return ' ' + dt.i18n('buttons.pdf', 'PDF'); + }, + + action: function (e, dt, button, config) { + var url = _buildUrl(dt, 'pdf'); + window.location = url; + } + }; + + DataTable.ext.buttons.postPdf = { + className: 'buttons-pdf', + + text: function (dt) { + return ' ' + dt.i18n('buttons.pdf', 'PDF'); + }, + + action: function (e, dt, button, config) { + var url = dt.ajax.url() || window.location.href; + var params = _buildParams(dt, 'pdf'); + + _downloadFromUrl(url, params); + } + }; + + DataTable.ext.buttons.print = { + className: 'buttons-print', + + text: function (dt) { + return ' ' + dt.i18n('buttons.print', 'Print'); + }, + + action: function (e, dt, button, config) { + var url = _buildUrl(dt, 'print'); + window.location = url; + } + }; + + DataTable.ext.buttons.reset = { + className: 'buttons-reset', + + text: function (dt) { + return ' ' + dt.i18n('buttons.reset', 'Reset'); + }, + + action: function (e, dt, button, config) { + dt.search(''); + dt.columns().search(''); + dt.draw(); + } + }; + + DataTable.ext.buttons.reload = { + className: 'buttons-reload', + + text: function (dt) { + return ' ' + dt.i18n('buttons.reload', 'Reload'); + }, + + action: function (e, dt, button, config) { + dt.draw(false); + } + }; + + DataTable.ext.buttons.create = { + className: 'buttons-create', + + text: function (dt) { + return ' ' + dt.i18n('buttons.create', 'Create'); + }, + + action: function (e, dt, button, config) { + window.location = window.location.href.replace(/\/+$/, "") + '/create'; + } + }; + + if (typeof DataTable.ext.buttons.copyHtml5 !== 'undefined') { + $.extend(DataTable.ext.buttons.copyHtml5, { + text: function (dt) { + return ' ' + dt.i18n('buttons.copy', 'Copy'); + } + }); + } + + if (typeof DataTable.ext.buttons.colvis !== 'undefined') { + $.extend(DataTable.ext.buttons.colvis, { + text: function (dt) { + return ' ' + dt.i18n('buttons.colvis', 'Column visibility'); + } + }); + } +})(jQuery, jQuery.fn.dataTable); diff --git a/public/web.config b/public/web.config new file mode 100644 index 0000000..d3711d7 --- /dev/null +++ b/public/web.config @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/resources/assets/core/js/components/blockui.js b/resources/assets/core/js/components/blockui.js new file mode 100644 index 0000000..75a1f90 --- /dev/null +++ b/resources/assets/core/js/components/blockui.js @@ -0,0 +1,177 @@ +"use strict"; + +// Class definition +var KTBlockUI = function(element, options) { + ////////////////////////////// + // ** Private variables ** // + ////////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default options + var defaultOptions = { + zIndex: false, + overlayClass: '', + overflow: 'hidden', + message: '' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('blockui') ) { + the = KTUtil.data(element).get('blockui'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.element = element; + the.overlayElement = null; + the.blocked = false; + the.positionChanged = false; + the.overflowChanged = false; + + // Bind Instance + KTUtil.data(the.element).set('blockui', the); + } + + var _block = function() { + if ( KTEventHandler.trigger(the.element, 'kt.blockui.block', the) === false ) { + return; + } + + var isPage = (the.element.tagName === 'BODY'); + + var position = KTUtil.css(the.element, 'position'); + var overflow = KTUtil.css(the.element, 'overflow'); + var zIndex = isPage ? 10000 : 1; + + if (the.options.zIndex > 0) { + zIndex = the.options.zIndex; + } else { + if (KTUtil.css(the.element, 'z-index') != 'auto') { + zIndex = KTUtil.css(the.element, 'z-index'); + } + } + + the.element.classList.add('blockui'); + + if (position === "absolute" || position === "relative" || position === "fixed") { + KTUtil.css(the.element, 'position', 'relative'); + the.positionChanged = true; + } + + if (the.options.overflow === 'hidden' && overflow === 'visible') { + KTUtil.css(the.element, 'overflow', 'hidden'); + the.overflowChanged = true; + } + + the.overlayElement = document.createElement('DIV'); + the.overlayElement.setAttribute('class', 'blockui-overlay ' + the.options.overlayClass); + + the.overlayElement.innerHTML = the.options.message; + + KTUtil.css(the.overlayElement, 'z-index', zIndex); + + the.element.append(the.overlayElement); + the.blocked = true; + + KTEventHandler.trigger(the.element, 'kt.blockui.after.blocked', the) === false + } + + var _release = function() { + if ( KTEventHandler.trigger(the.element, 'kt.blockui.release', the) === false ) { + return; + } + + the.element.classList.add('blockui'); + + if (the.positionChanged) { + KTUtil.css(the.element, 'position', ''); + } + + if (the.overflowChanged) { + KTUtil.css(the.element, 'overflow', ''); + } + + if (the.overlayElement) { + KTUtil.remove(the.overlayElement); + } + + the.blocked = false; + + KTEventHandler.trigger(the.element, 'kt.blockui.released', the); + } + + var _isBlocked = function() { + return the.blocked; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('blockui'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.block = function() { + _block(); + } + + the.release = function() { + _release(); + } + + the.isBlocked = function() { + return _isBlocked(); + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTBlockUI.getInstance = function(element) { + if (element !== null && KTUtil.data(element).has('blockui')) { + return KTUtil.data(element).get('blockui'); + } else { + return null; + } +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTBlockUI; +} \ No newline at end of file diff --git a/resources/assets/core/js/components/cookie.js b/resources/assets/core/js/components/cookie.js new file mode 100644 index 0000000..6c62577 --- /dev/null +++ b/resources/assets/core/js/components/cookie.js @@ -0,0 +1,62 @@ +"use strict"; +// DOCS: https://javascript.info/cookie + +// Class definition +var KTCookie = function() { + return { + // returns the cookie with the given name, + // or undefined if not found + get: function(name) { + var matches = document.cookie.match(new RegExp( + "(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)" + )); + + return matches ? decodeURIComponent(matches[1]) : null; + }, + + // Please note that a cookie value is encoded, + // so getCookie uses a built-in decodeURIComponent function to decode it. + set: function(name, value, options) { + if ( typeof options === "undefined" || options === null ) { + options = {}; + } + + options = Object.assign({}, { + path: '/' + }, options); + + if ( options.expires instanceof Date ) { + options.expires = options.expires.toUTCString(); + } + + var updatedCookie = encodeURIComponent(name) + "=" + encodeURIComponent(value); + + for ( var optionKey in options ) { + if ( options.hasOwnProperty(optionKey) === false ) { + continue; + } + + updatedCookie += "; " + optionKey; + var optionValue = options[optionKey]; + + if ( optionValue !== true ) { + updatedCookie += "=" + optionValue; + } + } + + document.cookie = updatedCookie; + }, + + // To remove a cookie, we can call it with a negative expiration date: + remove: function(name) { + this.set(name, "", { + 'max-age': -1 + }); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTCookie; +} diff --git a/resources/assets/core/js/components/dialer.js b/resources/assets/core/js/components/dialer.js new file mode 100644 index 0000000..7c18991 --- /dev/null +++ b/resources/assets/core/js/components/dialer.js @@ -0,0 +1,297 @@ +"use strict"; + +// Class definition +var KTDialer = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default options + var defaultOptions = { + min: null, + max: null, + step: 1, + decimals: 0, + prefix: "", + suffix: "" + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + // Constructor + var _construct = function() { + if ( KTUtil.data(element).has('dialer') === true ) { + the = KTUtil.data(element).get('dialer'); + } else { + _init(); + } + } + + // Initialize + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + + // Elements + the.element = element; + the.incElement = the.element.querySelector('[data-kt-dialer-control="increase"]'); + the.decElement = the.element.querySelector('[data-kt-dialer-control="decrease"]'); + the.inputElement = the.element.querySelector('input[type]'); + + // Set Values + if (_getOption('decimals')) { + the.options.decimals = parseInt(_getOption('decimals')); + } + + if (_getOption('prefix')) { + the.options.prefix = _getOption('prefix'); + } + + if (_getOption('suffix')) { + the.options.suffix = _getOption('suffix'); + } + + if (_getOption('step')) { + the.options.step = parseFloat(_getOption('step')); + } + + if (_getOption('min')) { + the.options.min = parseFloat(_getOption('min')); + } + + if (_getOption('max')) { + the.options.max = parseFloat(_getOption('max')); + } + + the.value = parseFloat(the.inputElement.value.replace(/[^\d.]/g, '')); + + _setValue(); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('dialer', the); + } + + // Handlers + var _handlers = function() { + KTUtil.addEvent(the.incElement, 'click', function(e) { + e.preventDefault(); + + _increase(); + }); + + KTUtil.addEvent(the.decElement, 'click', function(e) { + e.preventDefault(); + + _decrease(); + }); + + KTUtil.addEvent(the.inputElement, 'input', function(e) { + e.preventDefault(); + + _setValue(); + }); + } + + // Event handlers + var _increase = function() { + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.increase', the); + + the.inputElement.value = the.value + the.options.step; + _setValue(); + + // Trigger "before.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.increased', the); + + return the; + } + + var _decrease = function() { + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.decrease', the); + + the.inputElement.value = the.value - the.options.step; + + _setValue(); + + // Trigger "before.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.decreased', the); + + return the; + } + + // Set Input Value + var _setValue = function(value) { + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.change', the); + + if (value !== undefined) { + the.value = value; + } else { + the.value = _parse(the.inputElement.value); + } + + if (the.options.min !== null && the.value < the.options.min) { + the.value = the.options.min; + } + + if (the.options.max !== null && the.value > the.options.max) { + the.value = the.options.max; + } + + the.inputElement.value = _format(the.value); + + // Trigger input change event + the.inputElement.dispatchEvent(new Event('change')); + + // Trigger "after.dialer" event + KTEventHandler.trigger(the.element, 'kt.dialer.changed', the); + } + + var _parse = function(val) { + val = val + .replace(/[^0-9.-]/g, '') // remove chars except number, hyphen, point. + .replace(/(\..*)\./g, '$1') // remove multiple points. + .replace(/(?!^)-/g, '') // remove middle hyphen. + .replace(/^0+(\d)/gm, '$1'); // remove multiple leading zeros. <-- I added this. + + val = parseFloat(val); + + if (isNaN(val)) { + val = 0; + } + + return val; + } + + // Format + var _format = function(val){ + return the.options.prefix + parseFloat(val).toFixed(the.options.decimals) + the.options.suffix; + } + + // Get option + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-dialer-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-dialer-' + name); + var value = attr; + + return value; + } else { + return null; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('dialer'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.setMinValue = function(value) { + the.options.min = value; + } + + the.setMaxValue = function(value) { + the.options.max = value; + } + + the.setValue = function(value) { + _setValue(value); + } + + the.getValue = function() { + return the.inputElement.value; + } + + the.update = function() { + _setValue(); + } + + the.increase = function() { + return _increase(); + } + + the.decrease = function() { + return _decrease(); + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTDialer.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('dialer') ) { + return KTUtil.data(element).get('dialer'); + } else { + return null; + } +} + +// Create instances +KTDialer.createInstances = function(selector = '[data-kt-dialer="true"]') { + // Get instances + var elements = document.body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + // Initialize instances + new KTDialer(elements[i]); + } + } +} + +// Global initialization +KTDialer.init = function() { + KTDialer.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTDialer.init); +} else { + KTDialer.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTDialer; +} \ No newline at end of file diff --git a/resources/assets/core/js/components/drawer.js b/resources/assets/core/js/components/drawer.js new file mode 100644 index 0000000..e6905eb --- /dev/null +++ b/resources/assets/core/js/components/drawer.js @@ -0,0 +1,460 @@ +"use strict"; + +// Class definition +var KTDrawer = function(element, options) { + ////////////////////////////// + // ** Private variables ** // + ////////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default options + var defaultOptions = { + overlay: true, + direction: 'end', + baseClass: 'drawer', + overlayClass: 'drawer-overlay' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('drawer') ) { + the = KTUtil.data(element).get('drawer'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('drawer'); + the.element = element; + the.overlayElement = null; + the.name = the.element.getAttribute('data-kt-drawer-name'); + the.shown = false; + the.lastWidth; + the.toggleElement = null; + + // Set initialized + the.element.setAttribute('data-kt-drawer', 'true'); + + // Event Handlers + _handlers(); + + // Update Instance + _update(); + + // Bind Instance + KTUtil.data(the.element).set('drawer', the); + } + + var _handlers = function() { + var togglers = _getOption('toggle'); + var closers = _getOption('close'); + + if ( togglers !== null && togglers.length > 0 ) { + KTUtil.on(body, togglers, 'click', function(e) { + e.preventDefault(); + + the.toggleElement = this; + _toggle(); + }); + } + + if ( closers !== null && closers.length > 0 ) { + KTUtil.on(body, closers, 'click', function(e) { + e.preventDefault(); + + the.closeElement = this; + _hide(); + }); + } + } + + var _toggle = function() { + if ( KTEventHandler.trigger(the.element, 'kt.drawer.toggle', the) === false ) { + return; + } + + if ( the.shown === true ) { + _hide(); + } else { + _show(); + } + + KTEventHandler.trigger(the.element, 'kt.drawer.toggled', the); + } + + var _hide = function() { + if ( KTEventHandler.trigger(the.element, 'kt.drawer.hide', the) === false ) { + return; + } + + the.shown = false; + + _deleteOverlay(); + + body.removeAttribute('data-kt-drawer-' + the.name, 'on'); + body.removeAttribute('data-kt-drawer'); + + KTUtil.removeClass(the.element, the.options.baseClass + '-on'); + + if ( the.toggleElement !== null ) { + KTUtil.removeClass(the.toggleElement, 'active'); + } + + KTEventHandler.trigger(the.element, 'kt.drawer.after.hidden', the) === false + } + + var _show = function() { + if ( KTEventHandler.trigger(the.element, 'kt.drawer.show', the) === false ) { + return; + } + + the.shown = true; + + _createOverlay(); + body.setAttribute('data-kt-drawer-' + the.name, 'on'); + body.setAttribute('data-kt-drawer', 'on'); + + KTUtil.addClass(the.element, the.options.baseClass + '-on'); + + if ( the.toggleElement !== null ) { + KTUtil.addClass(the.toggleElement, 'active'); + } + + KTEventHandler.trigger(the.element, 'kt.drawer.shown', the); + } + + var _update = function() { + var width = _getWidth(); + var direction = _getOption('direction'); + + var top = _getOption('top'); + var bottom = _getOption('bottom'); + var start = _getOption('start'); + var end = _getOption('end'); + + // Reset state + if ( KTUtil.hasClass(the.element, the.options.baseClass + '-on') === true && String(body.getAttribute('data-kt-drawer-' + the.name + '-')) === 'on' ) { + the.shown = true; + } else { + the.shown = false; + } + + // Activate/deactivate + if ( _getOption('activate') === true ) { + KTUtil.addClass(the.element, the.options.baseClass); + KTUtil.addClass(the.element, the.options.baseClass + '-' + direction); + + KTUtil.css(the.element, 'width', width, true); + the.lastWidth = width; + + if (top) { + KTUtil.css(the.element, 'top', top); + } + + if (bottom) { + KTUtil.css(the.element, 'bottom', bottom); + } + + if (start) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'right', start); + } else { + KTUtil.css(the.element, 'left', start); + } + } + + if (end) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'left', end); + } else { + KTUtil.css(the.element, 'right', end); + } + } + } else { + KTUtil.removeClass(the.element, the.options.baseClass); + KTUtil.removeClass(the.element, the.options.baseClass + '-' + direction); + + KTUtil.css(the.element, 'width', ''); + + if (top) { + KTUtil.css(the.element, 'top', ''); + } + + if (bottom) { + KTUtil.css(the.element, 'bottom', ''); + } + + if (start) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'right', ''); + } else { + KTUtil.css(the.element, 'left', ''); + } + } + + if (end) { + if (KTUtil.isRTL()) { + KTUtil.css(the.element, 'left', ''); + } else { + KTUtil.css(the.element, 'right', ''); + } + } + + _hide(); + } + } + + var _createOverlay = function() { + if ( _getOption('overlay') === true ) { + the.overlayElement = document.createElement('DIV'); + + KTUtil.css(the.overlayElement, 'z-index', KTUtil.css(the.element, 'z-index') - 1); // update + + body.append(the.overlayElement); + + KTUtil.addClass(the.overlayElement, _getOption('overlay-class')); + + KTUtil.addEvent(the.overlayElement, 'click', function(e) { + e.preventDefault(); + _hide(); + }); + } + } + + var _deleteOverlay = function() { + if ( the.overlayElement !== null ) { + KTUtil.remove(the.overlayElement); + } + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-drawer-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-drawer-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _getWidth = function() { + var width = _getOption('width'); + + if ( width === 'auto') { + width = KTUtil.css(the.element, 'width'); + } + + return width; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('drawer'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.toggle = function() { + return _toggle(); + } + + the.show = function() { + return _show(); + } + + the.hide = function() { + return _hide(); + } + + the.isShown = function() { + return the.shown; + } + + the.update = function() { + _update(); + } + + the.goElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTDrawer.getInstance = function(element) { + if (element !== null && KTUtil.data(element).has('drawer')) { + return KTUtil.data(element).get('drawer'); + } else { + return null; + } +} + +// Hide all drawers and skip one if provided +KTDrawer.hideAll = function(skip = null, selector = '[data-kt-drawer="true"]') { + var items = document.querySelectorAll(selector); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + var drawer = KTDrawer.getInstance(item); + + if (!drawer) { + continue; + } + + if ( skip ) { + if ( item !== skip ) { + drawer.hide(); + } + } else { + drawer.hide(); + } + } + } +} + +// Update all drawers +KTDrawer.updateAll = function(selector = '[data-kt-drawer="true"]') { + var items = document.querySelectorAll(selector); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + var drawer = KTDrawer.getInstance(item); + + if (drawer) { + drawer.update();; + } + } + } +} + +// Create instances +KTDrawer.createInstances = function(selector = '[data-kt-drawer="true"]') { + var body = document.getElementsByTagName("BODY")[0]; + + // Initialize Menus + var elements = body.querySelectorAll(selector); + var drawer; + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + drawer = new KTDrawer(elements[i]); + } + } +} + +// Toggle instances +KTDrawer.handleShow = function() { + // External drawer toggle handler + KTUtil.on(document.body, '[data-kt-drawer-show="true"][data-kt-drawer-target]', 'click', function(e) { + var element = document.querySelector(this.getAttribute('data-kt-drawer-target')); + + if (element) { + KTDrawer.getInstance(element).show(); + } + }); +} + +// Dismiss instances +KTDrawer.handleDismiss = function() { + // External drawer toggle handler + KTUtil.on(document.body, '[data-kt-drawer-dismiss="true"]', 'click', function(e) { + var element = this.closest('[data-kt-drawer="true"]'); + + if (element) { + var drawer = KTDrawer.getInstance(element); + if (drawer.isShown()) { + drawer.hide(); + } + } + }); +} + +// Window resize Handling +window.addEventListener('resize', function() { + var timer; + var body = document.getElementsByTagName("BODY")[0]; + + KTUtil.throttle(timer, function() { + // Locate and update drawer instances on window resize + var elements = body.querySelectorAll('[data-kt-drawer="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var drawer = KTDrawer.getInstance(elements[i]); + if (drawer) { + drawer.update(); + } + } + } + }, 200); +}); + +// Global initialization +KTDrawer.init = function() { + KTDrawer.createInstances(); + KTDrawer.handleShow(); + KTDrawer.handleDismiss(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTDrawer.init); +} else { + KTDrawer.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTDrawer; +} \ No newline at end of file diff --git a/resources/assets/core/js/components/event-handler.js b/resources/assets/core/js/components/event-handler.js new file mode 100644 index 0000000..173a3a6 --- /dev/null +++ b/resources/assets/core/js/components/event-handler.js @@ -0,0 +1,93 @@ +"use strict"; + +// Class definition +var KTEventHandler = function() { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var _handlers = {}; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + var _triggerEvent = function(element, name, target, e) { + if ( KTUtil.data(element).has(name) === true ) { + var handlerId = KTUtil.data(element).get(name); + + if ( _handlers[name] && _handlers[name][handlerId] ) { + var handler = _handlers[name][handlerId]; + + if ( handler.name === name ) { + if ( handler.one == true ) { + if ( handler.fired == false ) { + _handlers[name][handlerId].fired = true; + + return handler.callback.call(this, target, e); + } + } else { + return handler.callback.call(this, target, e); + } + } + } + } + + return null; + } + + var _addEvent = function(element, name, callback, one) { + var handlerId = KTUtil.getUniqueId('event'); + + KTUtil.data(element).set(name, handlerId); + + if ( !_handlers[name] ) { + _handlers[name] = {}; + } + + _handlers[name][handlerId] = { + name: name, + callback: callback, + one: one, + fired: false + }; + } + + var _removeEvent = function(element, name) { + var handlerId = KTUtil.data(element).get(name); + + if (_handlers[name] && _handlers[name][handlerId]) { + delete _handlers[name][handlerId]; + } + } + + //////////////////////////// + // ** Public Methods ** // + //////////////////////////// + return { + trigger: function(element, name, target, e) { + return _triggerEvent(element, name, target, e); + }, + + on: function(element, name, handler) { + return _addEvent(element, name, handler); + }, + + one: function(element, name, handler) { + return _addEvent(element, name, handler, true); + }, + + off: function(element, name) { + return _removeEvent(element, name); + }, + + debug: function() { + for (var b in _handlers) { + if ( _handlers.hasOwnProperty(b) ) console.log(b); + } + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTEventHandler; +} diff --git a/resources/assets/core/js/components/feedback.js b/resources/assets/core/js/components/feedback.js new file mode 100644 index 0000000..9214128 --- /dev/null +++ b/resources/assets/core/js/components/feedback.js @@ -0,0 +1,164 @@ +"use strict"; + +// Class definition +var KTFeedback = function(options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + // Default options + var defaultOptions = { + 'width' : 100, + 'placement' : 'top-center', + 'content' : '', + 'type': 'popup' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + _init(); + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('feedback'); + the.element; + the.shown = false; + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('feedback', the); + } + + var _handlers = function() { + KTUtil.addEvent(the.element, 'click', function(e) { + e.preventDefault(); + + _go(); + }); + } + + var _show = function() { + if ( KTEventHandler.trigger(the.element, 'kt.feedback.show', the) === false ) { + return; + } + + if ( the.options.type === 'popup') { + _showPopup(); + } + + KTEventHandler.trigger(the.element, 'kt.feedback.shown', the); + + return the; + } + + var _hide = function() { + if ( KTEventHandler.trigger(the.element, 'kt.feedback.hide', the) === false ) { + return; + } + + if ( the.options.type === 'popup') { + _hidePopup(); + } + + the.shown = false; + + KTEventHandler.trigger(the.element, 'kt.feedback.hidden', the); + + return the; + } + + var _showPopup = function() { + the.element = document.createElement("DIV"); + + KTUtil.addClass(the.element, 'feedback feedback-popup'); + KTUtil.setHTML(the.element, the.options.content); + + if (the.options.placement == 'top-center') { + _setPopupTopCenterPosition(); + } + + body.appendChild(the.element); + + KTUtil.addClass(the.element, 'feedback-shown'); + + the.shown = true; + } + + var _setPopupTopCenterPosition = function() { + var width = KTUtil.getResponsiveValue(the.options.width); + var height = KTUtil.css(the.element, 'height'); + + KTUtil.addClass(the.element, 'feedback-top-center'); + + KTUtil.css(the.element, 'width', width); + KTUtil.css(the.element, 'left', '50%'); + KTUtil.css(the.element, 'top', '-' + height); + } + + var _hidePopup = function() { + the.element.remove(); + } + + var _destroy = function() { + KTUtil.data(the.element).remove('feedback'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.show = function() { + return _show(); + } + + the.hide = function() { + return _hide(); + } + + the.isShown = function() { + return the.shown; + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTFeedback; +} diff --git a/resources/assets/core/js/components/image-input.js b/resources/assets/core/js/components/image-input.js new file mode 100644 index 0000000..d2d6ec5 --- /dev/null +++ b/resources/assets/core/js/components/image-input.js @@ -0,0 +1,216 @@ +"use strict"; + +// Class definition +var KTImageInput = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('image-input') === true ) { + the = KTUtil.data(element).get('image-input'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('image-input'); + + // Elements + the.element = element; + the.inputElement = KTUtil.find(element, 'input[type="file"]'); + the.wrapperElement = KTUtil.find(element, '.image-input-wrapper'); + the.cancelElement = KTUtil.find(element, '[data-kt-image-input-action="cancel"]'); + the.removeElement = KTUtil.find(element, '[data-kt-image-input-action="remove"]'); + the.hiddenElement = KTUtil.find(element, 'input[type="hidden"]'); + the.src = KTUtil.css(the.wrapperElement, 'backgroundImage'); + + // Set initialized + the.element.setAttribute('data-kt-image-input', 'true'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('image-input', the); + } + + // Init Event Handlers + var _handlers = function() { + KTUtil.addEvent(the.inputElement, 'change', _change); + KTUtil.addEvent(the.cancelElement, 'click', _cancel); + KTUtil.addEvent(the.removeElement, 'click', _remove); + } + + // Event Handlers + var _change = function(e) { + e.preventDefault(); + + if ( the.inputElement !== null && the.inputElement.files && the.inputElement.files[0] ) { + // Fire change event + if ( KTEventHandler.trigger(the.element, 'kt.imageinput.change', the) === false ) { + return; + } + + var reader = new FileReader(); + + reader.onload = function(e) { + KTUtil.css(the.wrapperElement, 'background-image', 'url('+ e.target.result +')'); + } + + reader.readAsDataURL(the.inputElement.files[0]); + + the.element.classList.add('image-input-changed'); + the.element.classList.remove('image-input-empty'); + + // Fire removed event + KTEventHandler.trigger(the.element, 'kt.imageinput.changed', the); + } + } + + var _cancel = function(e) { + e.preventDefault(); + + // Fire cancel event + if ( KTEventHandler.trigger(the.element, 'kt.imageinput.cancel', the) === false ) { + return; + } + + the.element.classList.remove('image-input-changed'); + the.element.classList.remove('image-input-empty'); + + if (the.src === 'none') { + KTUtil.css(the.wrapperElement, 'background-image', ''); + the.element.classList.add('image-input-empty'); + } else { + KTUtil.css(the.wrapperElement, 'background-image', the.src); + } + + the.inputElement.value = ""; + + if ( the.hiddenElement !== null ) { + the.hiddenElement.value = "0"; + } + + // Fire canceled event + KTEventHandler.trigger(the.element, 'kt.imageinput.canceled', the); + } + + var _remove = function(e) { + e.preventDefault(); + + // Fire remove event + if ( KTEventHandler.trigger(the.element, 'kt.imageinput.remove', the) === false ) { + return; + } + + the.element.classList.remove('image-input-changed'); + the.element.classList.add('image-input-empty'); + + KTUtil.css(the.wrapperElement, 'background-image', "none"); + the.inputElement.value = ""; + + if ( the.hiddenElement !== null ) { + the.hiddenElement.value = "1"; + } + + // Fire removed event + KTEventHandler.trigger(the.element, 'kt.imageinput.removed', the); + } + + var _destroy = function() { + KTUtil.data(the.element).remove('image-input'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.getInputElement = function() { + return the.inputElement; + } + + the.goElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTImageInput.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('image-input') ) { + return KTUtil.data(element).get('image-input'); + } else { + return null; + } +} + +// Create instances +KTImageInput.createInstances = function(selector = '[data-kt-image-input]') { + // Initialize Menus + var elements = document.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTImageInput(elements[i]); + } + } +} + +// Global initialization +KTImageInput.init = function() { + KTImageInput.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTImageInput.init); +} else { + KTImageInput.init(); +} + +// Webpack Support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTImageInput; +} diff --git a/resources/assets/core/js/components/menu.js b/resources/assets/core/js/components/menu.js new file mode 100644 index 0000000..4d002a6 --- /dev/null +++ b/resources/assets/core/js/components/menu.js @@ -0,0 +1,1017 @@ +"use strict"; + +// Class definition +var KTMenu = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + dropdown: { + hoverTimeout: 200, + zindex: 105 + }, + + accordion: { + slideSpeed: 250, + expand: false + } + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('menu') === true ) { + the = KTUtil.data(element).get('menu'); + } else { + _init(); + } + } + + var _init = function() { + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('menu'); + the.element = element; + the.triggerElement; + + // Set initialized + the.element.setAttribute('data-kt-menu', 'true'); + + _setTriggerElement(); + _update(); + + KTUtil.data(the.element).set('menu', the); + } + + var _destroy = function() { // todo + + } + + // Event Handlers + // Toggle handler + var _click = function(element, e) { + e.preventDefault(); + + var item = _getItemElement(element); + + if ( _getOptionFromElementAttribute(item, 'trigger') !== 'click' ) { + return; + } + + if ( _getOptionFromElementAttribute(item, 'toggle') === false ) { + _show(item); + } else { + _toggle(item); + } + } + + // Link handler + var _link = function(element, e) { + if ( KTEventHandler.trigger(the.element, 'kt.menu.link.click', element) === false ) { + return; + } + + // Dismiss all shown dropdowns + KTMenu.hideDropdowns(); + + KTEventHandler.trigger(the.element, 'kt.menu.link.clicked', element); + } + + // Dismiss handler + var _dismiss = function(element, e) { + var item = _getItemElement(element); + var items = _getItemChildElements(item); + + if ( item !== null && _getItemSubType(item) === 'dropdown') { + _hide(item); // hide items dropdown + // Hide all child elements as well + + if ( items.length > 0 ) { + for (var i = 0, len = items.length; i < len; i++) { + if ( items[i] !== null && _getItemSubType(items[i]) === 'dropdown') { + _hide(tems[i]); + } + } + } + } + } + + // Mouseover handle + var _mouseover = function(element, e) { + var item = _getItemElement(element); + + if ( item === null ) { + return; + } + + if ( _getOptionFromElementAttribute(item, 'trigger') !== 'hover' ) { + return; + } + + if ( KTUtil.data(item).get('hover') === '1' ) { + clearTimeout(KTUtil.data(item).get('timeout')); + KTUtil.data(item).remove('hover'); + KTUtil.data(item).remove('timeout'); + } + + _show(item); + } + + // Mouseout handle + var _mouseout = function(element, e) { + var item = _getItemElement(element); + + if ( item === null ) { + return; + } + + if ( _getOptionFromElementAttribute(item, 'trigger') !== 'hover' ) { + return; + } + + var timeout = setTimeout(function() { + if ( KTUtil.data(item).get('hover') === '1' ) { + _hide(item); + } + }, the.options.dropdown.hoverTimeout); + + KTUtil.data(item).set('hover', '1'); + KTUtil.data(item).set('timeout', timeout); + } + + // Toggle item sub + var _toggle = function(item) { + if ( !item ) { + item = the.triggerElement; + } + + if ( _isItemSubShown(item) === true ) { + _hide(item); + } else { + _show(item); + } + } + + // Show item sub + var _show = function(item) { + if ( !item ) { + item = the.triggerElement; + } + + if ( _isItemSubShown(item) === true ) { + return; + } + + if ( _getItemSubType(item) === 'dropdown' ) { + _showDropdown(item); // // show current dropdown + } else if ( _getItemSubType(item) === 'accordion' ) { + _showAccordion(item); + } + + // Remember last submenu type + KTUtil.data(item).set('type', _getItemSubType(item)); // updated + } + + // Hide item sub + var _hide = function(item) { + if ( !item ) { + item = the.triggerElement; + } + + if ( _isItemSubShown(item) === false ) { + return; + } + + if ( _getItemSubType(item) === 'dropdown' ) { + _hideDropdown(item); + } else if ( _getItemSubType(item) === 'accordion' ) { + _hideAccordion(item); + } + } + + // Reset item state classes if item sub type changed + var _reset = function(item) { + if ( _hasItemSub(item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + + // Reset sub state if sub type is changed during the window resize + if ( KTUtil.data(item).has('type') && KTUtil.data(item).get('type') !== _getItemSubType(item) ) { // updated + KTUtil.removeClass(item, 'hover'); + KTUtil.removeClass(item, 'show'); + KTUtil.removeClass(sub, 'show'); + } // updated + } + + // Update all item state classes if item sub type changed + var _update = function() { + var items = the.element.querySelectorAll('.menu-item[data-kt-menu-trigger]'); + + if ( items && items.length > 0 ) { + for (var i = 0, len = items.length; i < len; i++) { + _reset(items[i]); + } + } + } + + // Set external trigger element + var _setTriggerElement = function() { + var target = document.querySelector('[data-kt-menu-target="# ' + the.element.getAttribute('id') + '"]'); + + if ( target !== null ) { + the.triggerElement = target; + } else if ( the.element.closest('[data-kt-menu-trigger]') ) { + the.triggerElement = the.element.closest('[data-kt-menu-trigger]'); + } else if ( the.element.parentNode && KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]')) { + the.triggerElement = KTUtil.child(the.element.parentNode, '[data-kt-menu-trigger]'); + } + + if ( the.triggerElement ) { + KTUtil.data(the.triggerElement).set('menu', the); + } + } + + // Test if menu has external trigger element + var _isTriggerElement = function(item) { + return ( the.triggerElement === item ) ? true : false; + } + + // Test if item's sub is shown + var _isItemSubShown = function(item) { + var sub = _getItemSubElement(item); + + if ( sub !== null ) { + if ( _getItemSubType(item) === 'dropdown' ) { + if ( KTUtil.hasClass(sub, 'show') === true && sub.hasAttribute('data-popper-placement') === true ) { + return true; + } else { + return false; + } + } else { + return KTUtil.hasClass(item, 'show'); + } + } else { + return false; + } + } + + // Test if item dropdown is permanent + var _isItemDropdownPermanent = function(item) { + return _getOptionFromElementAttribute(item, 'permanent') === true ? true : false; + } + + // Test if item's parent is shown + var _isItemParentShown = function(item) { + return KTUtil.parents(item, '.menu-item.show').length > 0; + } + + // Test of it is item sub element + var _isItemSubElement = function(item) { + return KTUtil.hasClass(item, 'menu-sub'); + } + + // Test if item has sub + var _hasItemSub = function(item) { + return (KTUtil.hasClass(item, 'menu-item') && item.hasAttribute('data-kt-menu-trigger')); + } + + // Get link element + var _getItemLinkElement = function(item) { + return KTUtil.child(item, '.menu-link'); + } + + // Get toggle element + var _getItemToggleElement = function(item) { + if ( the.triggerElement ) { + return the.triggerElement; + } else { + return _getItemLinkElement(item); + } + } + + // Get item sub element + var _getItemSubElement = function(item) { + if ( _isTriggerElement(item) === true ) { + return the.element; + } if ( item.classList.contains('menu-sub') === true ) { + return item; + } else if ( KTUtil.data(item).has('sub') ) { + return KTUtil.data(item).get('sub'); + } else { + return KTUtil.child(item, '.menu-sub'); + } + } + + // Get item sub type + var _getItemSubType = function(element) { + var sub = _getItemSubElement(element); + + if ( sub && parseInt(KTUtil.css(sub, 'z-index')) > 0 ) { + return "dropdown"; + } else { + return "accordion"; + } + } + + // Get item element + var _getItemElement = function(element) { + var item, sub; + + // Element is the external trigger element + if (_isTriggerElement(element) ) { + return element; + } + + // Element has item toggler attribute + if ( element.hasAttribute('data-kt-menu-trigger') ) { + return element; + } + + // Element has item DOM reference in it's data storage + if ( KTUtil.data(element).has('item') ) { + return KTUtil.data(element).get('item'); + } + + // Item is parent of element + if ( (item = element.closest('.menu-item[data-kt-menu-trigger]')) ) { + return item; + } + + // Element's parent has item DOM reference in it's data storage + if ( (sub = element.closest('.menu-sub')) ) { + if ( KTUtil.data(sub).has('item') === true ) { + return KTUtil.data(sub).get('item') + } + } + } + + // Get item parent element + var _getItemParentElement = function(item) { + var sub = item.closest('.menu-sub'); + var parentItem; + + if ( KTUtil.data(sub).has('item') ) { + return KTUtil.data(sub).get('item'); + } + + if ( sub && (parentItem = sub.closest('.menu-item[data-kt-menu-trigger]')) ) { + return parentItem; + } + + return null; + } + + // Get item parent elements + var _getItemParentElements = function(item) { + var parents = []; + var parent; + var i = 0; + + do { + parent = _getItemParentElement(item); + + if ( parent ) { + parents.push(parent); + item = parent; + } + + i++; + } while (parent !== null && i < 20); + + if ( the.triggerElement ) { + parents.unshift(the.triggerElement); + } + + return parents; + } + + // Get item child element + var _getItemChildElement = function(item) { + var selector = item; + var element; + + if ( KTUtil.data(item).get('sub') ) { + selector = KTUtil.data(item).get('sub'); + } + + if ( selector !== null ) { + //element = selector.querySelector('.show.menu-item[data-kt-menu-trigger]'); + element = selector.querySelector('.menu-item[data-kt-menu-trigger]'); + + if ( element ) { + return element; + } else { + return null; + } + } else { + return null; + } + } + + // Get item child elements + var _getItemChildElements = function(item) { + var children = []; + var child; + var i = 0; + + do { + child = _getItemChildElement(item); + + if ( child ) { + children.push(child); + item = child; + } + + i++; + } while (child !== null && i < 20); + + return children; + } + + // Show item dropdown + var _showDropdown = function(item) { + // Handle dropdown show event + if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.show', item) === false ) { + return; + } + + // Hide all currently shown dropdowns except current one + KTMenu.hideDropdowns(item); + + var toggle = _isTriggerElement(item) ? item : _getItemLinkElement(item); + var sub = _getItemSubElement(item); + + var width = _getOptionFromElementAttribute(item, 'width'); + var height = _getOptionFromElementAttribute(item, 'height'); + + var zindex = the.options.dropdown.zindex; // update + var parentZindex = KTUtil.getHighestZindex(item); // update + + // Apply a new z-index if dropdown's toggle element or it's parent has greater z-index // update + if ( parentZindex !== null && parentZindex >= zindex ) { + zindex = parentZindex + 1; + } + + if ( zindex > 0 ) { + KTUtil.css(sub, 'z-index', zindex); + } + + if ( width !== null ) { + KTUtil.css(sub, 'width', width); + } + + if ( height !== null ) { + KTUtil.css(sub, 'height', height); + } + + KTUtil.css(sub, 'display', ''); + KTUtil.css(sub, 'overflow', ''); + + // Init popper(new) + _initDropdownPopper(item, sub); + + KTUtil.addClass(item, 'show'); + KTUtil.addClass(item, 'menu-dropdown'); + KTUtil.addClass(sub, 'show'); + + // Append the sub the the root of the menu + if ( _getOptionFromElementAttribute(item, 'overflow') === true ) { + document.body.appendChild(sub); + KTUtil.data(item).set('sub', sub); + KTUtil.data(sub).set('item', item); + KTUtil.data(sub).set('menu', the); + } else { + KTUtil.data(sub).set('item', item); + } + + // Handle dropdown shown event + KTEventHandler.trigger(the.element, 'kt.menu.dropdown.shown', item); + } + + // Hide item dropdown + var _hideDropdown = function(item) { + // Handle dropdown hide event + if ( KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hide', item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + + KTUtil.css(sub, 'z-index', ''); + KTUtil.css(sub, 'width', ''); + KTUtil.css(sub, 'height', ''); + + KTUtil.removeClass(item, 'show'); + KTUtil.removeClass(item, 'menu-dropdown'); + KTUtil.removeClass(sub, 'show'); + + // Append the sub back to it's parent + if ( _getOptionFromElementAttribute(item, 'overflow') === true ) { + if (item.classList.contains('menu-item')) { + item.appendChild(sub); + } else { + KTUtil.insertAfter(the.element, item); + } + + KTUtil.data(item).remove('sub'); + KTUtil.data(sub).remove('item'); + KTUtil.data(sub).remove('menu'); + } + + // Destroy popper(new) + _destroyDropdownPopper(item); + + // Handle dropdown hidden event + KTEventHandler.trigger(the.element, 'kt.menu.dropdown.hidden', item); + } + + // Init dropdown popper(new) + var _initDropdownPopper = function(item, sub) { + // Setup popper instance + var reference; + var attach = _getOptionFromElementAttribute(item, 'attach'); + + if ( attach ) { + if ( attach === 'parent') { + reference = item.parentNode; + } else { + reference = document.querySelector(attach); + } + } else { + reference = item; + } + + var popper = Popper.createPopper(reference, sub, _getDropdownPopperConfig(item)); + KTUtil.data(item).set('popper', popper); + } + + // Destroy dropdown popper(new) + var _destroyDropdownPopper = function(item) { + if ( KTUtil.data(item).has('popper') === true ) { + KTUtil.data(item).get('popper').destroy(); + KTUtil.data(item).remove('popper'); + } + } + + // Prepare popper config for dropdown(see: https://popper.js.org/docs/v2/) + var _getDropdownPopperConfig = function(item) { + // Placement + var placement = _getOptionFromElementAttribute(item, 'placement'); + if (!placement) { + placement = 'right'; + } + + // Offset + var offsetValue = _getOptionFromElementAttribute(item, 'offset'); + var offset = offsetValue ? offsetValue.split(",") : []; + + if (offset.length === 2) { + offset[0] = parseInt(offset[0]); + offset[1] = parseInt(offset[1]); + } + + // Strategy + var strategy = _getOptionFromElementAttribute(item, 'overflow') === true ? 'absolute' : 'fixed'; + + var altAxis = _getOptionFromElementAttribute(item, 'flip') !== false ? true : false; + + var popperConfig = { + placement: placement, + strategy: strategy, + modifiers: [{ + name: 'offset', + options: { + offset: offset + } + }, { + name: 'preventOverflow', + options: { + altAxis: altAxis + } + }, { + name: 'flip', + options: { + flipVariations: false + } + }] + }; + + return popperConfig; + } + + // Show item accordion + var _showAccordion = function(item) { + if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.show', item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + var expand = the.options.accordion.expand; + + if (_getOptionFromElementAttribute(item, 'expand') === true) { + expand = true; + } else if (_getOptionFromElementAttribute(item, 'expand') === false) { + expand = false; + } else if (_getOptionFromElementAttribute(the.element, 'expand') === true) { + expand = true; + } + + if ( expand === false ) { + _hideAccordions(item); + } + + if ( KTUtil.data(item).has('popper') === true ) { + _hideDropdown(item); + } + + KTUtil.addClass(item, 'hover'); + + KTUtil.addClass(item, 'showing'); + + KTUtil.slideDown(sub, the.options.accordion.slideSpeed, function() { + KTUtil.removeClass(item, 'showing'); + KTUtil.addClass(item, 'show'); + KTUtil.addClass(sub, 'show'); + + KTEventHandler.trigger(the.element, 'kt.menu.accordion.shown', item); + }); + } + + // Hide item accordion + var _hideAccordion = function(item) { + if ( KTEventHandler.trigger(the.element, 'kt.menu.accordion.hide', item) === false ) { + return; + } + + var sub = _getItemSubElement(item); + + KTUtil.addClass(item, 'hiding'); + + KTUtil.slideUp(sub, the.options.accordion.slideSpeed, function() { + KTUtil.removeClass(item, 'hiding'); + KTUtil.removeClass(item, 'show'); + KTUtil.removeClass(sub, 'show'); + + KTUtil.removeClass(item, 'hover'); // update + + KTEventHandler.trigger(the.element, 'kt.menu.accordion.hidden', item); + }); + } + + // Hide all shown accordions of item + var _hideAccordions = function(item) { + var itemsToHide = KTUtil.findAll(the.element, '.show[data-kt-menu-trigger]'); + var itemToHide; + + if (itemsToHide && itemsToHide.length > 0) { + for (var i = 0, len = itemsToHide.length; i < len; i++) { + itemToHide = itemsToHide[i]; + + if ( _getItemSubType(itemToHide) === 'accordion' && itemToHide !== item && item.contains(itemToHide) === false && itemToHide.contains(item) === false ) { + _hideAccordion(itemToHide); + } + } + } + } + + // Get item option(through html attributes) + var _getOptionFromElementAttribute = function(item, name) { + var attr; + var value = null; + + if ( item && item.hasAttribute('data-kt-menu-' + name) ) { + attr = item.getAttribute('data-kt-menu-' + name); + value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + } + + return value; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('menu'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Event Handlers + the.click = function(element, e) { + return _click(element, e); + } + + the.link = function(element, e) { + return _link(element, e); + } + + the.dismiss = function(element, e) { + return _dismiss(element, e); + } + + the.mouseover = function(element, e) { + return _mouseover(element, e); + } + + the.mouseout = function(element, e) { + return _mouseout(element, e); + } + + // General Methods + the.getItemTriggerType = function(item) { + return _getOptionFromElementAttribute(item, 'trigger'); + } + + the.getItemSubType = function(element) { + return _getItemSubType(element); + } + + the.show = function(item) { + return _show(item); + } + + the.hide = function(item) { + return _hide(item); + } + + the.reset = function(item) { + return _reset(item); + } + + the.update = function() { + return _update(); + } + + the.getElement = function() { + return the.element; + } + + the.getItemLinkElement = function(item) { + return _getItemLinkElement(item); + } + + the.getItemToggleElement = function(item) { + return _getItemToggleElement(item); + } + + the.getItemSubElement = function(item) { + return _getItemSubElement(item); + } + + the.getItemParentElements = function(item) { + return _getItemParentElements(item); + } + + the.isItemSubShown = function(item) { + return _isItemSubShown(item); + } + + the.isItemParentShown = function(item) { + return _isItemParentShown(item); + } + + the.getTriggerElement = function() { + return the.triggerElement; + } + + the.isItemDropdownPermanent = function(item) { + return _isItemDropdownPermanent(item); + } + + the.destroy = function() { + return _destroy(); + } + + // Accordion Mode Methods + the.hideAccordions = function(item) { + return _hideAccordions(item); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } +}; + +// Get KTMenu instance by element +KTMenu.getInstance = function(element) { + var menu; + var item; + + // Element has menu DOM reference in it's DATA storage + if ( KTUtil.data(element).has('menu') ) { + return KTUtil.data(element).get('menu'); + } + + // Element has .menu parent + if ( menu = element.closest('.menu') ) { + if ( KTUtil.data(menu).has('menu') ) { + return KTUtil.data(menu).get('menu'); + } + } + + // Element has a parent with DOM reference to .menu in it's DATA storage + if ( KTUtil.hasClass(element, 'menu-link') ) { + var sub = element.closest('.menu-sub'); + + if ( KTUtil.data(sub).has('menu') ) { + return KTUtil.data(sub).get('menu'); + } + } + + return null; +} + +// Hide all dropdowns and skip one if provided +KTMenu.hideDropdowns = function(skip) { + var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]'); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + var menu = KTMenu.getInstance(item); + + if ( menu && menu.getItemSubType(item) === 'dropdown' ) { + if ( skip ) { + if ( menu.getItemSubElement(item).contains(skip) === false && item.contains(skip) === false && item !== skip ) { + menu.hide(item); + } + } else { + menu.hide(item); + } + } + } + } +} + +// Update all dropdowns popover instances +KTMenu.updateDropdowns = function() { + var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]'); + + if (items && items.length > 0) { + for (var i = 0, len = items.length; i < len; i++) { + var item = items[i]; + + if ( KTUtil.data(item).has('popper') ) { + KTUtil.data(item).get('popper').forceUpdate(); + } + } + } +} + +// Global handlers +KTMenu.initGlobalHandlers = function() { + // Dropdown handler + document.addEventListener("click", function(e) { + var items = document.querySelectorAll('.show.menu-dropdown[data-kt-menu-trigger]'); + var menu; + var item; + var sub; + var menuObj; + + if ( items && items.length > 0 ) { + for ( var i = 0, len = items.length; i < len; i++ ) { + item = items[i]; + menuObj = KTMenu.getInstance(item); + + if (menuObj && menuObj.getItemSubType(item) === 'dropdown') { + menu = menuObj.getElement(); + sub = menuObj.getItemSubElement(item); + + if ( item === e.target || item.contains(e.target) ) { + continue; + } + + if ( sub === e.target || sub.contains(e.target) ) { + continue; + } + + menuObj.hide(item); + } + } + } + }); + + // Sub toggle handler(updated) + KTUtil.on(document.body, '.menu-item[data-kt-menu-trigger] > .menu-link, [data-kt-menu-trigger]:not(.menu-item):not([data-kt-menu-trigger="auto"])', 'click', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null ) { + return menu.click(this, e); + } + }); + + // Link handler + KTUtil.on(document.body, '.menu-item:not([data-kt-menu-trigger]) > .menu-link', 'click', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null ) { + return menu.link(this, e); + } + }); + + // Dismiss handler + KTUtil.on(document.body, '[data-kt-menu-dismiss="true"]', 'click', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null ) { + return menu.dismiss(this, e); + } + }); + + // Mouseover handler + KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseover', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) { + return menu.mouseover(this, e); + } + }); + + // Mouseout handler + KTUtil.on(document.body, '[data-kt-menu-trigger], .menu-sub', 'mouseout', function(e) { + var menu = KTMenu.getInstance(this); + + if ( menu !== null && menu.getItemSubType(this) === 'dropdown' ) { + return menu.mouseout(this, e); + } + }); + + // Resize handler + window.addEventListener('resize', function() { + var menu; + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = document.querySelectorAll('[data-kt-menu="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + menu = KTMenu.getInstance(elements[i]); + if (menu) { + menu.update(); + } + } + } + }, 200); + }); +} + +// Global instances +KTMenu.createInstances = function(selector = '[data-kt-menu="true"]') { + // Initialize menus + var elements = document.querySelectorAll(selector); + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTMenu(elements[i]); + } + } +} + +// Global initialization +KTMenu.init = function() { + // Global Event Handlers + KTMenu.initGlobalHandlers(); + + // Lazy Initialization + KTMenu.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTMenu.init); +} else { + KTMenu.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTMenu; +} diff --git a/resources/assets/core/js/components/password-meter.js b/resources/assets/core/js/components/password-meter.js new file mode 100644 index 0000000..bd9fb18 --- /dev/null +++ b/resources/assets/core/js/components/password-meter.js @@ -0,0 +1,258 @@ +"use strict"; + +// Class definition +var KTPasswordMeter = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default Options + var defaultOptions = { + minLength: 8, + checkUppercase: true, + checkLowercase: true, + checkDigit: true, + checkChar: true, + scoreHighlightClass: 'active' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + // Constructor + var _construct = function() { + if ( KTUtil.data(element).has('password-meter') === true ) { + the = KTUtil.data(element).get('password-meter'); + } else { + _init(); + } + } + + // Initialize + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.score = 0; + the.checkSteps = 5; + + // Elements + the.element = element; + the.inputElement = the.element.querySelector('input[type]'); + the.visibilityElement = the.element.querySelector('[data-kt-password-meter-control="visibility"]'); + the.highlightElement = the.element.querySelector('[data-kt-password-meter-control="highlight"]'); + + // Set initialized + the.element.setAttribute('data-kt-password-meter', 'true'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('password-meter', the); + } + + // Handlers + var _handlers = function() { + the.inputElement.addEventListener('input', function() { + _check(); + }); + + if (the.visibilityElement) { + the.visibilityElement.addEventListener('click', function() { + _visibility(); + }); + } + } + + // Event handlers + var _check = function() { + var score = 0; + var checkScore = _getCheckScore(); + + if (_checkLength() === true) { + score = score + checkScore; + } + + if (the.options.checkUppercase === true && _checkLowercase() === true) { + score = score + checkScore; + } + + if (the.options.checkLowercase === true && _checkUppercase() === true ) { + score = score + checkScore; + } + + if (the.options.checkDigit === true && _checkDigit() === true ) { + score = score + checkScore; + } + + if (the.options.checkChar === true && _checkChar() === true ) { + score = score + checkScore; + } + + the.score = score; + + _highlight(); + } + + var _checkLength = function() { + return the.inputElement.value.length >= the.options.minLength; // 20 score + } + + var _checkLowercase = function() { + return /[a-z]/.test(the.inputElement.value); // 20 score + } + + var _checkUppercase = function() { + return /[A-Z]/.test(the.inputElement.value); // 20 score + } + + var _checkDigit = function() { + return /[0-9]/.test(the.inputElement.value); // 20 score + } + + var _checkChar = function() { + return /[~`!#@$%\^&*+=\-\[\]\\';,/{}|\\":<>\?]/g.test(the.inputElement.value); // 20 score + } + + var _getCheckScore = function() { + var count = 1; + + if (the.options.checkUppercase === true) { + count++; + } + + if (the.options.checkLowercase === true) { + count++; + } + + if (the.options.checkDigit === true) { + count++; + } + + if (the.options.checkChar === true) { + count++; + } + + the.checkSteps = count; + + return 100 / the.checkSteps; + } + + var _highlight = function() { + var items = [].slice.call(the.highlightElement.querySelectorAll('div')); + var total = items.length; + var index = 0; + var checkScore = _getCheckScore(); + var score = _getScore(); + + items.map(function (item) { + index++; + + if ( (checkScore * index * (the.checkSteps / total)) <= score ) { + item.classList.add('active'); + } else { + item.classList.remove('active'); + } + }); + } + + var _visibility = function() { + var visibleIcon = the.visibilityElement.querySelector('i:not(.d-none), .svg-icon:not(.d-none)'); + var hiddenIcon = the.visibilityElement.querySelector('i.d-none, .svg-icon.d-none'); + + if (the.inputElement.getAttribute('type').toLowerCase() === 'password' ) { + the.inputElement.setAttribute('type', 'text'); + } else { + the.inputElement.setAttribute('type', 'password'); + } + + visibleIcon.classList.add('d-none'); + hiddenIcon.classList.remove('d-none'); + + the.inputElement.focus(); + } + + var _reset = function() { + the.score = 0; + + _highlight(); + } + + // Gets current password score + var _getScore = function() { + return the.score; + } + + var _destroy = function() { + KTUtil.data(the.element).remove('password-meter'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.check = function() { + return _check(); + } + + the.getScore = function() { + return _getScore(); + } + + the.reset = function() { + return _reset(); + } + + the.destroy = function() { + return _destroy(); + } +}; + +// Static methods +KTPasswordMeter.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('password-meter') ) { + return KTUtil.data(element).get('password-meter'); + } else { + return null; + } +} + +// Create instances +KTPasswordMeter.createInstances = function(selector = '[data-kt-password-meter]') { + // Get instances + var elements = document.body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + // Initialize instances + new KTPasswordMeter(elements[i]); + } + } +} + +// Global initialization +KTPasswordMeter.init = function() { + KTPasswordMeter.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTPasswordMeter.init); +} else { + KTPasswordMeter.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTPasswordMeter; +} \ No newline at end of file diff --git a/resources/assets/core/js/components/scroll.js b/resources/assets/core/js/components/scroll.js new file mode 100644 index 0000000..f3ed52f --- /dev/null +++ b/resources/assets/core/js/components/scroll.js @@ -0,0 +1,347 @@ +"use strict"; + +// Class definition +var KTScroll = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + if (!element) { + return; + } + + // Default options + var defaultOptions = { + saveState: true + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('scroll') ) { + the = KTUtil.data(element).get('scroll'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + + // Elements + the.element = element; + the.id = the.element.getAttribute('id'); + + // Set initialized + the.element.setAttribute('data-kt-scroll', 'true'); + + // Update + _update(); + + // Bind Instance + KTUtil.data(the.element).set('scroll', the); + } + + var _setupHeight = function() { + var heightType = _getHeightType(); + var height = _getHeight(); + + // Set height + if ( height !== null && height.length > 0 ) { + KTUtil.css(the.element, heightType, height); + } else { + KTUtil.css(the.element, heightType, ''); + } + } + + var _setupState = function () { + if ( _getOption('save-state') === true && typeof KTCookie !== 'undefined' && the.id ) { + if ( KTCookie.get(the.id + 'st') ) { + var pos = parseInt(KTCookie.get(the.id + 'st')); + + if ( pos > 0 ) { + the.element.scrollTop = pos; + } + } + } + } + + var _setupScrollHandler = function() { + if ( _getOption('save-state') === true && typeof KTCookie !== 'undefined' && the.id ) { + the.element.addEventListener('scroll', _scrollHandler); + } else { + the.element.removeEventListener('scroll', _scrollHandler); + } + } + + var _destroyScrollHandler = function() { + the.element.removeEventListener('scroll', _scrollHandler); + } + + var _resetHeight = function() { + KTUtil.css(the.element, _getHeightType(), ''); + } + + var _scrollHandler = function () { + KTCookie.set(the.id + 'st', the.element.scrollTop); + } + + var _update = function() { + // Activate/deactivate + if ( _getOption('activate') === true || the.element.hasAttribute('data-kt-scroll-activate') === false ) { + _setupHeight(); + _setupStretchHeight(); + _setupScrollHandler(); + _setupState(); + } else { + _resetHeight() + _destroyScrollHandler(); + } + } + + var _setupStretchHeight = function() { + var stretch = _getOption('stretch'); + + // Stretch + if ( stretch !== null ) { + var elements = document.querySelectorAll(stretch); + + if ( elements && elements.length == 2 ) { + var element1 = elements[0]; + var element2 = elements[1]; + var diff = _getElementHeight(element2) - _getElementHeight(element1); + + if (diff > 0) { + var height = parseInt(KTUtil.css(the.element, _getHeightType())) + diff; + + KTUtil.css(the.element, _getHeightType(), String(height) + 'px'); + } + } + } + } + + var _getHeight = function() { + var height = _getOption(_getHeightType()); + + if ( height instanceof Function ) { + return height.call(); + } else if ( height !== null && typeof height === 'string' && height.toLowerCase() === 'auto' ) { + return _getAutoHeight(); + } else { + return height; + } + } + + var _getAutoHeight = function() { + var height = KTUtil.getViewPort().height; + var dependencies = _getOption('dependencies'); + var wrappers = _getOption('wrappers'); + var offset = _getOption('offset'); + + // Spacings + height = height - _getElementSpacing(the.element); + + // Height dependencies + if ( dependencies !== null ) { + var elements = document.querySelectorAll(dependencies); + + if ( elements && elements.length > 0 ) { + for ( var i = 0, len = elements.length; i < len; i++ ) { + if ( KTUtil.visible(elements[i]) === false ) { + continue; + } + + height = height - _getElementHeight(elements[i]); + } + } + } + + // Wrappers + if ( wrappers !== null ) { + var elements = document.querySelectorAll(wrappers); + if ( elements && elements.length > 0 ) { + for ( var i = 0, len = elements.length; i < len; i++ ) { + if ( KTUtil.visible(elements[i]) === false ) { + continue; + } + + height = height - _getElementSpacing(elements[i]); + } + } + } + + // Custom offset + if ( offset !== null && typeof offset !== 'object') { + height = height - parseInt(offset); + } + + return String(height) + 'px'; + } + + var _getElementHeight = function(element) { + var height = 0; + + if (element !== null) { + height = height + parseInt(KTUtil.css(element, 'height')); + height = height + parseInt(KTUtil.css(element, 'margin-top')); + height = height + parseInt(KTUtil.css(element, 'margin-bottom')); + + if (KTUtil.css(element, 'border-top')) { + height = height + parseInt(KTUtil.css(element, 'border-top')); + } + + if (KTUtil.css(element, 'border-bottom')) { + height = height + parseInt(KTUtil.css(element, 'border-bottom')); + } + } + + return height; + } + + var _getElementSpacing = function(element) { + var spacing = 0; + + if (element !== null) { + spacing = spacing + parseInt(KTUtil.css(element, 'margin-top')); + spacing = spacing + parseInt(KTUtil.css(element, 'margin-bottom')); + spacing = spacing + parseInt(KTUtil.css(element, 'padding-top')); + spacing = spacing + parseInt(KTUtil.css(element, 'padding-bottom')); + + if (KTUtil.css(element, 'border-top')) { + spacing = spacing + parseInt(KTUtil.css(element, 'border-top')); + } + + if (KTUtil.css(element, 'border-bottom')) { + spacing = spacing + parseInt(KTUtil.css(element, 'border-bottom')); + } + } + + return spacing; + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-scroll-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-scroll-' + name); + + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _getHeightType = function() { + if (_getOption('height')) { + return 'height'; + } if (_getOption('min-height')) { + return 'min-height'; + } if (_getOption('max-height')) { + return 'max-height'; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('scroll'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + the.update = function() { + return _update(); + } + + the.getHeight = function() { + return _getHeight(); + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } +}; + +// Static methods +KTScroll.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('scroll') ) { + return KTUtil.data(element).get('scroll'); + } else { + return null; + } +} + +// Create instances +KTScroll.createInstances = function(selector = '[data-kt-scroll="true"]') { + var body = document.getElementsByTagName("BODY")[0]; + + // Initialize Menus + var elements = body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + new KTScroll(elements[i]); + } + } +} + +// Window resize handling +window.addEventListener('resize', function() { + var timer; + var body = document.getElementsByTagName("BODY")[0]; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = body.querySelectorAll('[data-kt-scroll="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var scroll = KTScroll.getInstance(elements[i]); + if (scroll) { + scroll.update(); + } + } + } + }, 200); +}); + +// Global initialization +KTScroll.init = function() { + KTScroll.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTScroll.init); +} else { + KTScroll.init(); +} + +// Webpack Support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTScroll; +} diff --git a/resources/assets/core/js/components/scrolltop.js b/resources/assets/core/js/components/scrolltop.js new file mode 100644 index 0000000..b0b4c35 --- /dev/null +++ b/resources/assets/core/js/components/scrolltop.js @@ -0,0 +1,174 @@ +"use strict"; + +// Class definition +var KTScrolltop = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default options + var defaultOptions = { + offset: 300, + speed: 600 + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if (KTUtil.data(element).has('scrolltop')) { + the = KTUtil.data(element).get('scrolltop'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('scrolltop'); + the.element = element; + + // Set initialized + the.element.setAttribute('data-kt-scrolltop', 'true'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('scrolltop', the); + } + + var _handlers = function() { + var timer; + + window.addEventListener('scroll', function() { + KTUtil.throttle(timer, function() { + _scroll(); + }, 200); + }); + + KTUtil.addEvent(the.element, 'click', function(e) { + e.preventDefault(); + + _go(); + }); + } + + var _scroll = function() { + var offset = parseInt(_getOption('offset')); + + var pos = KTUtil.getScrollTop(); // current vertical position + + if ( pos > offset ) { + if ( body.hasAttribute('data-kt-scrolltop') === false ) { + body.setAttribute('data-kt-scrolltop', 'on'); + } + } else { + if ( body.hasAttribute('data-kt-scrolltop') === true ) { + body.removeAttribute('data-kt-scrolltop'); + } + } + } + + var _go = function() { + var speed = parseInt(_getOption('speed')); + + KTUtil.scrollTop(0, speed); + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-scrolltop-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-scrolltop-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('scrolltop'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.go = function() { + return _go(); + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } +}; + +// Static methods +KTScrolltop.getInstance = function(element) { + if (element && KTUtil.data(element).has('scrolltop')) { + return KTUtil.data(element).get('scrolltop'); + } else { + return null; + } +} + +// Create instances +KTScrolltop.createInstances = function(selector = '[data-kt-scrolltop="true"]') { + var body = document.getElementsByTagName("BODY")[0]; + + // Initialize Menus + var elements = body.querySelectorAll(selector); + var scrolltop; + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + scrolltop = new KTScrolltop(elements[i]); + } + } +} + +// Global initialization +KTScrolltop.init = function() { + KTScrolltop.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTScrolltop.init); +} else { + KTScrolltop.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTScrolltop; +} diff --git a/resources/assets/core/js/components/search.js b/resources/assets/core/js/components/search.js new file mode 100644 index 0000000..b3c9c53 --- /dev/null +++ b/resources/assets/core/js/components/search.js @@ -0,0 +1,439 @@ +"use strict"; + +// Class definition +var KTSearch = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + + if (!element) { + return; + } + + // Default Options + var defaultOptions = { + minLength: 2, // Miniam text lenght to query search + keypress: true, // Enable search on keypress + enter: true, // Enable search on enter key press + layout: 'menu', // Use 'menu' or 'inline' layout options to display search results + responsive: null, // Pass integer value or bootstrap compatible breakpoint key(sm,md,lg,xl,xxl) to enable reponsive form mode for device width below the breakpoint value + showOnFocus: true // Always show menu on input focus + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + // Construct + var _construct = function() { + if ( KTUtil.data(element).has('search') === true ) { + the = KTUtil.data(element).get('search'); + } else { + _init(); + } + } + + // Init + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.processing = false; + + // Elements + the.element = element; + the.contentElement = _getElement('content'); + the.formElement = _getElement('form'); + the.inputElement = _getElement('input'); + the.spinnerElement = _getElement('spinner'); + the.clearElement = _getElement('clear'); + the.toggleElement = _getElement('toggle'); + the.submitElement = _getElement('submit'); + the.toolbarElement = _getElement('toolbar'); + + the.resultsElement = _getElement('results'); + the.suggestionElement = _getElement('suggestion'); + the.emptyElement = _getElement('empty'); + + // Set initialized + the.element.setAttribute('data-kt-search', 'true'); + + // Layout + the.layout = _getOption('layout'); + + // Menu + if ( the.layout === 'menu' ) { + the.menuObject = new KTMenu(the.contentElement); + } else { + the.menuObject = null; + } + + // Update + _update(); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('search', the); + } + + // Handlera + var _handlers = function() { + // Focus + the.inputElement.addEventListener('focus', _focus); + + // Blur + the.inputElement.addEventListener('blur', _blur); + + // Keypress + if ( _getOption('keypress') === true ) { + the.inputElement.addEventListener('input', _input); + } + + // Submit + if ( the.submitElement ) { + the.submitElement.addEventListener('click', _search); + } + + // Enter + if ( _getOption('enter') === true ) { + the.inputElement.addEventListener('keypress', _enter); + } + + // Clear + if ( the.clearElement ) { + the.clearElement.addEventListener('click', _clear); + } + + // Menu + if ( the.menuObject ) { + // Toggle menu + if ( the.toggleElement ) { + the.toggleElement.addEventListener('click', _show); + + the.menuObject.on('kt.menu.dropdown.show', function(item) { + if (KTUtil.visible(the.toggleElement)) { + the.toggleElement.classList.add('active'); + the.toggleElement.classList.add('show'); + } + }); + + the.menuObject.on('kt.menu.dropdown.hide', function(item) { + if (KTUtil.visible(the.toggleElement)) { + the.toggleElement.classList.remove('active'); + the.toggleElement.classList.remove('show'); + } + }); + } + + the.menuObject.on('kt.menu.dropdown.shown', function() { + the.inputElement.focus(); + }); + } + + // Window resize handling + window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + _update(); + }, 200); + }); + } + + // Focus + var _focus = function() { + the.element.classList.add('focus'); + + if ( _getOption('show-on-focus') === true || the.inputElement.value.length >= minLength ) { + _show(); + } + } + + // Blur + var _blur = function() { + the.element.classList.remove('focus'); + } + + // Enter + var _enter = function(e) { + var key = e.charCode || e.keyCode || 0; + + if (key == 13) { + e.preventDefault(); + + _search(); + } + } + + // Input + var _input = function() { + if ( _getOption('min-length') ) { + var minLength = parseInt(_getOption('min-length')); + + if ( the.inputElement.value.length >= minLength ) { + _search(); + } else if ( the.inputElement.value.length === 0 ) { + _clear(); + } + } + } + + // Search + var _search = function() { + if (the.processing === false) { + // Show search spinner + if (the.spinnerElement) { + the.spinnerElement.classList.remove("d-none"); + } + + // Hide search clear button + if (the.clearElement) { + the.clearElement.classList.add("d-none"); + } + + // Hide search toolbar + if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) { + the.toolbarElement.classList.add("d-none"); + } + + // Focus input + the.inputElement.focus(); + + the.processing = true; + KTEventHandler.trigger(the.element, 'kt.search.process', the); + } + } + + // Complete + var _complete = function() { + if (the.spinnerElement) { + the.spinnerElement.classList.add("d-none"); + } + + // Show search toolbar + if (the.clearElement) { + the.clearElement.classList.remove("d-none"); + } + + if ( the.inputElement.value.length === 0 ) { + _clear(); + } + + // Focus input + the.inputElement.focus(); + + _show(); + + the.processing = false; + } + + // Clear + var _clear = function() { + if ( KTEventHandler.trigger(the.element, 'kt.search.clear', the) === false ) { + return; + } + + // Clear and focus input + the.inputElement.value = ""; + the.inputElement.focus(); + + // Hide clear icon + if (the.clearElement) { + the.clearElement.classList.add("d-none"); + } + + // Show search toolbar + if (the.toolbarElement && the.formElement.contains(the.toolbarElement)) { + the.toolbarElement.classList.remove("d-none"); + } + + // Hide menu + if ( _getOption('show-on-focus') === false ) { + _hide(); + } + + KTEventHandler.trigger(the.element, 'kt.search.cleared', the); + } + + // Update + var _update = function() { + // Handle responsive form + if (the.layout === 'menu') { + var responsiveFormMode = _getResponsiveFormMode(); + + if ( responsiveFormMode === 'on' && the.contentElement.contains(the.formElement) === false ) { + the.contentElement.prepend(the.formElement); + the.formElement.classList.remove('d-none'); + } else if ( responsiveFormMode === 'off' && the.contentElement.contains(the.formElement) === true ) { + the.element.prepend(the.formElement); + the.formElement.classList.add('d-none'); + } + } + } + + // Show menu + var _show = function() { + if ( the.menuObject ) { + _update(); + + the.menuObject.show(the.element); + } + } + + // Hide menu + var _hide = function() { + if ( the.menuObject ) { + _update(); + + the.menuObject.hide(the.element); + } + } + + // Get option + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-search-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-search-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + // Get element + var _getElement = function(name) { + return the.element.querySelector('[data-kt-search-element="' + name + '"]'); + } + + // Check if responsive form mode is enabled + var _getResponsiveFormMode = function() { + var responsive = _getOption('responsive'); + var width = KTUtil.getViewPort().width; + + if (!responsive) { + return null; + } + + var breakpoint = KTUtil.getBreakpoint(responsive); + + if (!breakpoint ) { + breakpoint = parseInt(responsive); + } + + if (width < breakpoint) { + return "on"; + } else { + return "off"; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('search'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.show = function() { + return _show(); + } + + the.hide = function() { + return _hide(); + } + + the.update = function() { + return _update(); + } + + the.search = function() { + return _search(); + } + + the.complete = function() { + return _complete(); + } + + the.clear = function() { + return _clear(); + } + + the.isProcessing = function() { + return the.processing; + } + + the.getQuery = function() { + return the.inputElement.value; + } + + the.getMenu = function() { + return the.menuObject; + } + + the.getFormElement = function() { + return the.formElement; + } + + the.getInputElement = function() { + return the.inputElement; + } + + the.getContentElement = function() { + return the.contentElement; + } + + the.getElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } +}; + +// Static methods +KTSearch.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('search') ) { + return KTUtil.data(element).get('search'); + } else { + return null; + } +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTSearch; +} diff --git a/resources/assets/core/js/components/stepper.js b/resources/assets/core/js/components/stepper.js new file mode 100644 index 0000000..79a07c7 --- /dev/null +++ b/resources/assets/core/js/components/stepper.js @@ -0,0 +1,334 @@ +"use strict"; + +// Class definition +var KTStepper = function(element, options) { + ////////////////////////////// + // ** Private variables ** // + ////////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + startIndex: 1, + animation: false, + animationSpeed: '0.3s', + animationNextClass: 'animate__animated animate__slideInRight animate__fast', + animationPreviousClass: 'animate__animated animate__slideInLeft animate__fast' + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('stepper') === true ) { + the = KTUtil.data(element).get('stepper'); + } else { + _init(); + } + } + + var _init = function() { + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('stepper'); + + the.element = element; + + // Set initialized + the.element.setAttribute('data-kt-stepper', 'true'); + + // Elements + the.steps = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"]'); + the.btnNext = KTUtil.find(the.element, '[data-kt-stepper-action="next"]'); + the.btnPrevious = KTUtil.find(the.element, '[data-kt-stepper-action="previous"]'); + the.btnSubmit = KTUtil.find(the.element, '[data-kt-stepper-action="submit"]'); + + // Variables + the.totalStepsNumber = the.steps.length; + the.passedStepIndex = 0; + the.currentStepIndex = 1; + the.clickedStepIndex = 0; + + // Set Current Step + if ( the.options.startIndex > 1 ) { + _goTo(the.options.startIndex); + } + + // Event Handlers + KTUtil.addEvent(the.btnNext, 'click', function(e) { + e.preventDefault(); + + KTEventHandler.trigger(the.element, 'kt.stepper.next', the); + }); + + KTUtil.addEvent(the.btnPrevious, 'click', function(e) { + e.preventDefault(); + + KTEventHandler.trigger(the.element, 'kt.stepper.previous', the); + }); + + KTUtil.on(the.element, '[data-kt-stepper-action="step"]', 'click', function(e) { + e.preventDefault(); + + if ( the.steps && the.steps.length > 0 ) { + for (var i = 0, len = the.steps.length; i < len; i++) { + if ( the.steps[i] === this ) { + the.clickedStepIndex = i + 1; + + KTEventHandler.trigger(the.element, 'kt.stepper.click', the); + + return; + } + } + } + }); + + // Bind Instance + KTUtil.data(the.element).set('stepper', the); + } + + var _goTo = function(index) { + // Trigger "change" event + KTEventHandler.trigger(the.element, 'kt.stepper.change', the); + + // Skip if this step is already shown + if ( index === the.currentStepIndex || index > the.totalStepsNumber || index < 0 ) { + return; + } + + // Validate step number + index = parseInt(index); + + // Set current step + the.passedStepIndex = the.currentStepIndex; + the.currentStepIndex = index; + + // Refresh elements + _refreshUI(); + + // Trigger "changed" event + KTEventHandler.trigger(the.element, 'kt.stepper.changed', the); + + return the; + } + + var _goNext = function() { + return _goTo( _getNextStepIndex() ); + } + + var _goPrevious = function() { + return _goTo( _getPreviousStepIndex() ); + } + + var _goLast = function() { + return _goTo( _getLastStepIndex() ); + } + + var _goFirst = function() { + return _goTo( _getFirstStepIndex() ); + } + + var _refreshUI = function() { + var state = ''; + + if ( _isLastStep() ) { + state = 'last'; + } else if ( _isFirstStep() ) { + state = 'first'; + } else { + state = 'between'; + } + + // Set state class + KTUtil.removeClass(the.element, 'last'); + KTUtil.removeClass(the.element, 'first'); + KTUtil.removeClass(the.element, 'between'); + + KTUtil.addClass(the.element, state); + + // Step Items + var elements = KTUtil.findAll(the.element, '[data-kt-stepper-element="nav"], [data-kt-stepper-element="content"], [data-kt-stepper-element="info"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var element = elements[i]; + var index = KTUtil.index(element) + 1; + + KTUtil.removeClass(element, 'current'); + KTUtil.removeClass(element, 'completed'); + KTUtil.removeClass(element, 'pending'); + + if ( index == the.currentStepIndex ) { + KTUtil.addClass(element, 'current'); + + if ( the.options.animation !== false && element.getAttribute('data-kt-stepper-element') == 'content' ) { + KTUtil.css(element, 'animationDuration', the.options.animationSpeed); + + var animation = _getStepDirection(the.passedStepIndex) === 'previous' ? the.options.animationPreviousClass : the.options.animationNextClass; + KTUtil.animateClass(element, animation); + } + } else { + if ( index < the.currentStepIndex ) { + KTUtil.addClass(element, 'completed'); + } else { + KTUtil.addClass(element, 'pending'); + } + } + } + } + } + + var _isLastStep = function() { + return the.currentStepIndex === the.totalStepsNumber; + } + + var _isFirstStep = function() { + return the.currentStepIndex === 1; + } + + var _isBetweenStep = function() { + return _isLastStep() === false && _isFirstStep() === false; + } + + var _getNextStepIndex = function() { + if ( the.totalStepsNumber >= ( the.currentStepIndex + 1 ) ) { + return the.currentStepIndex + 1; + } else { + return the.totalStepsNumber; + } + } + + var _getPreviousStepIndex = function() { + if ( ( the.currentStepIndex - 1 ) > 1 ) { + return the.currentStepIndex - 1; + } else { + return 1; + } + } + + var _getFirstStepIndex = function(){ + return 1; + } + + var _getLastStepIndex = function() { + return the.totalStepsNumber; + } + + var _getTotalStepsNumber = function() { + return the.totalStepsNumber; + } + + var _getStepDirection = function(index) { + if ( index > the.currentStepIndex ) { + return 'next'; + } else { + return 'previous'; + } + } + + var _getStepContent = function(index) { + var content = KTUtil.findAll(the.element, '[data-kt-stepper-element="content"]'); + + if ( content[index-1] ) { + return content[index-1]; + } else { + return false; + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('stepper'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.getElement = function(index) { + return the.element; + } + + the.goTo = function(index) { + return _goTo(index); + } + + the.goPrevious = function() { + return _goPrevious(); + } + + the.goNext = function() { + return _goNext(); + } + + the.goFirst = function() { + return _goFirst(); + } + + the.goLast = function() { + return _goLast(); + } + + the.getCurrentStepIndex = function() { + return the.currentStepIndex; + } + + the.getNextStepIndex = function() { + return the.nextStepIndex; + } + + the.getPassedStepIndex = function() { + return the.passedStepIndex; + } + + the.getClickedStepIndex = function() { + return the.clickedStepIndex; + } + + the.getPreviousStepIndex = function() { + return the.PreviousStepIndex; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTStepper.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('stepper') ) { + return KTUtil.data(element).get('stepper'); + } else { + return null; + } +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTStepper; +} diff --git a/resources/assets/core/js/components/sticky.js b/resources/assets/core/js/components/sticky.js new file mode 100644 index 0000000..490752f --- /dev/null +++ b/resources/assets/core/js/components/sticky.js @@ -0,0 +1,376 @@ +"use strict"; + +// Class definition +var KTSticky = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + offset: 200, + releaseOffset: 0, + reverse: false, + animation: true, + animationSpeed: '0.3s', + animationClass: 'animation-slide-in-down' + }; + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('sticky') === true ) { + the = KTUtil.data(element).get('sticky'); + } else { + _init(); + } + } + + var _init = function() { + the.element = element; + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('sticky'); + the.name = the.element.getAttribute('data-kt-sticky-name'); + the.attributeName = 'data-kt-sticky-' + the.name; + the.eventTriggerState = true; + the.lastScrollTop = 0; + the.scrollHandler; + + // Set initialized + the.element.setAttribute('data-kt-sticky', 'true'); + + // Event Handlers + window.addEventListener('scroll', _scroll); + + // Initial Launch + _scroll(); + + // Bind Instance + KTUtil.data(the.element).set('sticky', the); + } + + var _scroll = function(e) { + var offset = _getOption('offset'); + var releaseOffset = _getOption('release-offset'); + var reverse = _getOption('reverse'); + var st; + var attrName; + var diff; + + // Exit if false + if ( offset === false ) { + return; + } + + offset = parseInt(offset); + releaseOffset = releaseOffset ? parseInt(releaseOffset) : 0; + st = KTUtil.getScrollTop(); + diff = document.documentElement.scrollHeight - window.innerHeight - KTUtil.getScrollTop(); + + if ( reverse === true ) { // Release on reverse scroll mode + if ( st > offset && (releaseOffset === 0 || releaseOffset < diff)) { + if ( body.hasAttribute(the.attributeName) === false) { + _enable(); + body.setAttribute(the.attributeName, 'on'); + } + + if ( the.eventTriggerState === true ) { + KTEventHandler.trigger(the.element, 'kt.sticky.on', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + + the.eventTriggerState = false; + } + } else { // Back scroll mode + if ( body.hasAttribute(the.attributeName) === true) { + _disable(); + body.removeAttribute(the.attributeName); + } + + if ( the.eventTriggerState === false ) { + KTEventHandler.trigger(the.element, 'kt.sticky.off', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + the.eventTriggerState = true; + } + } + + the.lastScrollTop = st; + } else { // Classic scroll mode + if ( st > offset && (releaseOffset === 0 || releaseOffset < diff)) { + if ( body.hasAttribute(the.attributeName) === false) { + _enable(); + body.setAttribute(the.attributeName, 'on'); + } + + if ( the.eventTriggerState === true ) { + KTEventHandler.trigger(the.element, 'kt.sticky.on', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + the.eventTriggerState = false; + } + } else { // back scroll mode + if ( body.hasAttribute(the.attributeName) === true ) { + _disable(); + body.removeAttribute(the.attributeName); + } + + if ( the.eventTriggerState === false ) { + KTEventHandler.trigger(the.element, 'kt.sticky.off', the); + KTEventHandler.trigger(the.element, 'kt.sticky.change', the); + the.eventTriggerState = true; + } + } + } + + if (releaseOffset > 0) { + if ( diff < releaseOffset ) { + the.element.setAttribute('data-kt-sticky-released', 'true'); + } else { + the.element.removeAttribute('data-kt-sticky-released'); + } + } + } + + var _enable = function(update) { + var top = _getOption('top'); + var left = _getOption('left'); + var right = _getOption('right'); + var width = _getOption('width'); + var zindex = _getOption('zindex'); + var dependencies = _getOption('dependencies'); + var classes = _getOption('class'); + var height = _calculateHeight(); + + if ( update !== true && _getOption('animation') === true ) { + KTUtil.css(the.element, 'animationDuration', _getOption('animationSpeed')); + KTUtil.animateClass(the.element, 'animation ' + _getOption('animationClass')); + } + + if ( classes !== null ) { + KTUtil.addClass(the.element, classes); + } + + if ( zindex !== null ) { + KTUtil.css(the.element, 'z-index', zindex); + KTUtil.css(the.element, 'position', 'fixed'); + } + + if ( top !== null ) { + KTUtil.css(the.element, 'top', top); + } + + if ( width !== null ) { + if (width['target']) { + var targetElement = document.querySelector(width['target']); + if (targetElement) { + width = KTUtil.css(targetElement, 'width'); + } + } + + KTUtil.css(the.element, 'width', width); + } + + if ( left !== null ) { + if ( String(left).toLowerCase() === 'auto' ) { + var offsetLeft = KTUtil.offset(the.element).left; + + if ( offsetLeft > 0 ) { + KTUtil.css(the.element, 'left', String(offsetLeft) + 'px'); + } + } else { + KTUtil.css(the.element, 'left', left); + } + } + + if ( right !== null ) { + KTUtil.css(the.element, 'right', right); + } + + // Height dependencies + if ( dependencies !== null ) { + var dependencyElements = document.querySelectorAll(dependencies); + + if ( dependencyElements && dependencyElements.length > 0 ) { + for ( var i = 0, len = dependencyElements.length; i < len; i++ ) { + KTUtil.css(dependencyElements[i], 'padding-top', String(height) + 'px'); + } + } + } + } + + var _disable = function() { + KTUtil.css(the.element, 'top', ''); + KTUtil.css(the.element, 'width', ''); + KTUtil.css(the.element, 'left', ''); + KTUtil.css(the.element, 'right', ''); + KTUtil.css(the.element, 'z-index', ''); + KTUtil.css(the.element, 'position', ''); + + var dependencies = _getOption('dependencies'); + var classes = _getOption('class'); + + if ( classes !== null ) { + KTUtil.removeClass(the.element, classes); + } + + // Height dependencies + if ( dependencies !== null ) { + var dependencyElements = document.querySelectorAll(dependencies); + + if ( dependencyElements && dependencyElements.length > 0 ) { + for ( var i = 0, len = dependencyElements.length; i < len; i++ ) { + KTUtil.css(dependencyElements[i], 'padding-top', ''); + } + } + } + } + + var _calculateHeight = function() { + var height = parseFloat(KTUtil.css(the.element, 'height')); + + height = height + parseFloat(KTUtil.css(the.element, 'margin-top')); + height = height + parseFloat(KTUtil.css(the.element, 'margin-bottom')); + + if (KTUtil.css(element, 'border-top')) { + height = height + parseFloat(KTUtil.css(the.element, 'border-top')); + } + + if (KTUtil.css(element, 'border-bottom')) { + height = height + parseFloat(KTUtil.css(the.element, 'border-bottom')); + } + + return height; + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-sticky-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-sticky-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _destroy = function() { + window.removeEventListener('scroll', _scroll); + KTUtil.data(the.element).remove('sticky'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Methods + the.update = function() { + if ( body.hasAttribute(the.attributeName) === true ) { + _disable(); + body.removeAttribute(the.attributeName); + _enable(true); + body.setAttribute(the.attributeName, 'on'); + } + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTSticky.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('sticky') ) { + return KTUtil.data(element).get('sticky'); + } else { + return null; + } +} + +// Create instances +KTSticky.createInstances = function(selector = '[data-kt-sticky="true"]') { + var body = document.getElementsByTagName("BODY")[0]; + + // Initialize Menus + var elements = body.querySelectorAll(selector); + var sticky; + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + sticky = new KTSticky(elements[i]); + } + } +} + +// Window resize handler +window.addEventListener('resize', function() { + var timer; + var body = document.getElementsByTagName("BODY")[0]; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = body.querySelectorAll('[data-kt-sticky="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var sticky = KTSticky.getInstance(elements[i]); + if (sticky) { + sticky.update(); + } + } + } + }, 200); +}); + +// Global initialization +KTSticky.init = function() { + KTSticky.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTSticky.init); +} else { + KTSticky.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTSticky; +} diff --git a/resources/assets/core/js/components/swapper.js b/resources/assets/core/js/components/swapper.js new file mode 100644 index 0000000..d8924f3 --- /dev/null +++ b/resources/assets/core/js/components/swapper.js @@ -0,0 +1,178 @@ +"use strict"; + +// Class definition +var KTSwapper = function(element, options) { + //////////////////////////// + // ** Private Variables ** // + //////////////////////////// + var the = this; + + if ( typeof element === "undefined" || element === null ) { + return; + } + + // Default Options + var defaultOptions = { + mode: 'append' + }; + + //////////////////////////// + // ** Private Methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('swapper') === true ) { + the = KTUtil.data(element).get('swapper'); + } else { + _init(); + } + } + + var _init = function() { + the.element = element; + the.options = KTUtil.deepExtend({}, defaultOptions, options); + + // Set initialized + the.element.setAttribute('data-kt-swapper', 'true'); + + // Initial update + _update(); + + // Bind Instance + KTUtil.data(the.element).set('swapper', the); + } + + var _update = function(e) { + var parentSelector = _getOption('parent'); + + var mode = _getOption('mode'); + var parentElement = parentSelector ? document.querySelector(parentSelector) : null; + + + if (parentElement && element.parentNode !== parentElement) { + if (mode === 'prepend') { + parentElement.prepend(element); + } else if (mode === 'append') { + parentElement.append(element); + } + } + } + + var _getOption = function(name) { + if ( the.element.hasAttribute('data-kt-swapper-' + name) === true ) { + var attr = the.element.getAttribute('data-kt-swapper-' + name); + var value = KTUtil.getResponsiveValue(attr); + + if ( value !== null && String(value) === 'true' ) { + value = true; + } else if ( value !== null && String(value) === 'false' ) { + value = false; + } + + return value; + } else { + var optionName = KTUtil.snakeToCamel(name); + + if ( the.options[optionName] ) { + return KTUtil.getResponsiveValue(the.options[optionName]); + } else { + return null; + } + } + } + + var _destroy = function() { + KTUtil.data(the.element).remove('swapper'); + } + + // Construct Class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Methods + the.update = function() { + _update(); + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTSwapper.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('swapper') ) { + return KTUtil.data(element).get('swapper'); + } else { + return null; + } +} + +// Create instances +KTSwapper.createInstances = function(selector = '[data-kt-swapper="true"]') { + // Initialize Menus + var elements = document.querySelectorAll(selector); + var swapper; + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + swapper = new KTSwapper(elements[i]); + } + } +} + +// Window resize handler +window.addEventListener('resize', function() { + var timer; + + KTUtil.throttle(timer, function() { + // Locate and update Offcanvas instances on window resize + var elements = document.querySelectorAll('[data-kt-swapper="true"]'); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + var swapper = KTSwapper.getInstance(elements[i]); + if (swapper) { + swapper.update(); + } + } + } + }, 200); +}); + +// Global initialization +KTSwapper.init = function() { + KTSwapper.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTSwapper.init); +} else { + KTSwapper.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTSwapper; +} diff --git a/resources/assets/core/js/components/toggle.js b/resources/assets/core/js/components/toggle.js new file mode 100644 index 0000000..92f7c7b --- /dev/null +++ b/resources/assets/core/js/components/toggle.js @@ -0,0 +1,226 @@ +"use strict"; + +// Class definition +var KTToggle = function(element, options) { + //////////////////////////// + // ** Private variables ** // + //////////////////////////// + var the = this; + var body = document.getElementsByTagName("BODY")[0]; + + if (!element) { + return; + } + + // Default Options + var defaultOptions = { + saveState: true + }; + + //////////////////////////// + // ** Private methods ** // + //////////////////////////// + + var _construct = function() { + if ( KTUtil.data(element).has('toggle') === true ) { + the = KTUtil.data(element).get('toggle'); + } else { + _init(); + } + } + + var _init = function() { + // Variables + the.options = KTUtil.deepExtend({}, defaultOptions, options); + the.uid = KTUtil.getUniqueId('toggle'); + + // Elements + the.element = element; + + the.target = document.querySelector(the.element.getAttribute('data-kt-toggle-target')) ? document.querySelector(the.element.getAttribute('data-kt-toggle-target')) : the.element; + the.state = the.element.hasAttribute('data-kt-toggle-state') ? the.element.getAttribute('data-kt-toggle-state') : ''; + the.mode = the.element.hasAttribute('data-kt-toggle-mode') ? the.element.getAttribute('data-kt-toggle-mode') : ''; + the.attribute = 'data-kt-' + the.element.getAttribute('data-kt-toggle-name'); + + // Event Handlers + _handlers(); + + // Bind Instance + KTUtil.data(the.element).set('toggle', the); + } + + var _handlers = function() { + KTUtil.addEvent(the.element, 'click', function(e) { + e.preventDefault(); + + if ( the.mode !== '' ) { + if ( the.mode === 'off' && _isEnabled() === false ) { + _toggle(); + } else if ( the.mode === 'on' && _isEnabled() === true ) { + _toggle(); + } + } else { + _toggle(); + } + }); + } + + // Event handlers + var _toggle = function() { + // Trigger "after.toggle" event + KTEventHandler.trigger(the.element, 'kt.toggle.change', the); + + if ( _isEnabled() ) { + _disable(); + } else { + _enable(); + } + + // Trigger "before.toggle" event + KTEventHandler.trigger(the.element, 'kt.toggle.changed', the); + + return the; + } + + var _enable = function() { + if ( _isEnabled() === true ) { + return; + } + + KTEventHandler.trigger(the.element, 'kt.toggle.enable', the); + + the.target.setAttribute(the.attribute, 'on'); + + if (the.state.length > 0) { + the.element.classList.add(the.state); + } + + if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) { + KTCookie.set(the.attribute, 'on'); + } + + KTEventHandler.trigger(the.element, 'kt.toggle.enabled', the); + + return the; + } + + var _disable = function() { + if ( _isEnabled() === false ) { + return; + } + + KTEventHandler.trigger(the.element, 'kt.toggle.disable', the); + + the.target.removeAttribute(the.attribute); + + if (the.state.length > 0) { + the.element.classList.remove(the.state); + } + + if ( typeof KTCookie !== 'undefined' && the.options.saveState === true ) { + KTCookie.remove(the.attribute); + } + + KTEventHandler.trigger(the.element, 'kt.toggle.disabled', the); + + return the; + } + + var _isEnabled = function() { + return (String(the.target.getAttribute(the.attribute)).toLowerCase() === 'on'); + } + + var _destroy = function() { + KTUtil.data(the.element).remove('toggle'); + } + + // Construct class + _construct(); + + /////////////////////// + // ** Public API ** // + /////////////////////// + + // Plugin API + the.toggle = function() { + return _toggle(); + } + + the.enable = function() { + return _enable(); + } + + the.disable = function() { + return _disable(); + } + + the.isEnabled = function() { + return _isEnabled(); + } + + the.goElement = function() { + return the.element; + } + + the.destroy = function() { + return _destroy(); + } + + // Event API + the.on = function(name, handler) { + return KTEventHandler.on(the.element, name, handler); + } + + the.one = function(name, handler) { + return KTEventHandler.one(the.element, name, handler); + } + + the.off = function(name) { + return KTEventHandler.off(the.element, name); + } + + the.trigger = function(name, event) { + return KTEventHandler.trigger(the.element, name, event, the, event); + } +}; + +// Static methods +KTToggle.getInstance = function(element) { + if ( element !== null && KTUtil.data(element).has('toggle') ) { + return KTUtil.data(element).get('toggle'); + } else { + return null; + } +} + +// Create instances +KTToggle.createInstances = function(selector = '[data-kt-toggle]') { + var body = document.getElementsByTagName("BODY")[0]; + + // Get instances + var elements = body.querySelectorAll(selector); + + if ( elements && elements.length > 0 ) { + for (var i = 0, len = elements.length; i < len; i++) { + // Initialize instances + new KTToggle(elements[i]); + } + } +} + +// Global initialization +KTToggle.init = function() { + KTToggle.createInstances(); +}; + +// On document ready +if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', KTToggle.init); +} else { + KTToggle.init(); +} + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTToggle; +} \ No newline at end of file diff --git a/resources/assets/core/js/components/util.js b/resources/assets/core/js/components/util.js new file mode 100644 index 0000000..82f4cb1 --- /dev/null +++ b/resources/assets/core/js/components/util.js @@ -0,0 +1,1570 @@ +"use strict"; + +/** + * @class KTUtil base utilize class that privides helper functions + */ + +// Polyfills + +// Element.matches() polyfill +if (!Element.prototype.matches) { + Element.prototype.matches = function(s) { + var matches = (this.document || this.ownerDocument).querySelectorAll(s), + i = matches.length; + while (--i >= 0 && matches.item(i) !== this) {} + return i > -1; + }; +} + +/** + * Element.closest() polyfill + * https://developer.mozilla.org/en-US/docs/Web/API/Element/closest#Polyfill + */ +if (!Element.prototype.closest) { + Element.prototype.closest = function (s) { + var el = this; + var ancestor = this; + if (!document.documentElement.contains(el)) return null; + do { + if (ancestor.matches(s)) return ancestor; + ancestor = ancestor.parentElement; + } while (ancestor !== null); + return null; + }; +} + +/** + * ChildNode.remove() polyfill + * https://gomakethings.com/removing-an-element-from-the-dom-the-es6-way/ + * @author Chris Ferdinandi + * @license MIT + */ +(function (elem) { + for (var i = 0; i < elem.length; i++) { + if (!window[elem[i]] || 'remove' in window[elem[i]].prototype) continue; + window[elem[i]].prototype.remove = function () { + this.parentNode.removeChild(this); + }; + } +})(['Element', 'CharacterData', 'DocumentType']); + + +// +// requestAnimationFrame polyfill by Erik Möller. +// With fixes from Paul Irish and Tino Zijdel +// +// http://paulirish.com/2011/requestanimationframe-for-smart-animating/ +// http://my.opera.com/emoller/blog/2011/12/20/requestanimationframe-for-smart-er-animating +// +// MIT license +// +(function() { + var lastTime = 0; + var vendors = ['webkit', 'moz']; + for (var x = 0; x < vendors.length && !window.requestAnimationFrame; ++x) { + window.requestAnimationFrame = window[vendors[x] + 'RequestAnimationFrame']; + window.cancelAnimationFrame = + window[vendors[x] + 'CancelAnimationFrame'] || window[vendors[x] + 'CancelRequestAnimationFrame']; + } + + if (!window.requestAnimationFrame) + window.requestAnimationFrame = function(callback) { + var currTime = new Date().getTime(); + var timeToCall = Math.max(0, 16 - (currTime - lastTime)); + var id = window.setTimeout(function() { + callback(currTime + timeToCall); + }, timeToCall); + lastTime = currTime + timeToCall; + return id; + }; + + if (!window.cancelAnimationFrame) + window.cancelAnimationFrame = function(id) { + clearTimeout(id); + }; +}()); + +// Source: https://github.com/jserz/js_piece/blob/master/DOM/ParentNode/prepend()/prepend().md +(function(arr) { + arr.forEach(function(item) { + if (item.hasOwnProperty('prepend')) { + return; + } + Object.defineProperty(item, 'prepend', { + configurable: true, + enumerable: true, + writable: true, + value: function prepend() { + var argArr = Array.prototype.slice.call(arguments), + docFrag = document.createDocumentFragment(); + + argArr.forEach(function(argItem) { + var isNode = argItem instanceof Node; + docFrag.appendChild(isNode ? argItem : document.createTextNode(String(argItem))); + }); + + this.insertBefore(docFrag, this.firstChild); + } + }); + }); +})([Element.prototype, Document.prototype, DocumentFragment.prototype]); + +// getAttributeNames +if (Element.prototype.getAttributeNames == undefined) { + Element.prototype.getAttributeNames = function () { + var attributes = this.attributes; + var length = attributes.length; + var result = new Array(length); + for (var i = 0; i < length; i++) { + result[i] = attributes[i].name; + } + return result; + }; +} + +// Global variables +window.KTUtilElementDataStore = {}; +window.KTUtilElementDataStoreID = 0; +window.KTUtilDelegatedEventHandlers = {}; + +var KTUtil = function() { + var resizeHandlers = []; + + /** + * Handle window resize event with some + * delay to attach event handlers upon resize complete + */ + var _windowResizeHandler = function() { + var _runResizeHandlers = function() { + // reinitialize other subscribed elements + for (var i = 0; i < resizeHandlers.length; i++) { + var each = resizeHandlers[i]; + each.call(); + } + }; + + var timer; + + window.addEventListener('resize', function() { + KTUtil.throttle(timer, function() { + _runResizeHandlers(); + }, 200); + }); + }; + + return { + /** + * Class main initializer. + * @param {object} settings. + * @returns null + */ + //main function to initiate the theme + init: function(settings) { + _windowResizeHandler(); + }, + + /** + * Adds window resize event handler. + * @param {function} callback function. + */ + addResizeHandler: function(callback) { + resizeHandlers.push(callback); + }, + + /** + * Removes window resize event handler. + * @param {function} callback function. + */ + removeResizeHandler: function(callback) { + for (var i = 0; i < resizeHandlers.length; i++) { + if (callback === resizeHandlers[i]) { + delete resizeHandlers[i]; + } + } + }, + + /** + * Trigger window resize handlers. + */ + runResizeHandlers: function() { + _runResizeHandlers(); + }, + + resize: function() { + if (typeof(Event) === 'function') { + // modern browsers + window.dispatchEvent(new Event('resize')); + } else { + // for IE and other old browsers + // causes deprecation warning on modern browsers + var evt = window.document.createEvent('UIEvents'); + evt.initUIEvent('resize', true, false, window, 0); + window.dispatchEvent(evt); + } + }, + + /** + * Get GET parameter value from URL. + * @param {string} paramName Parameter name. + * @returns {string} + */ + getURLParam: function(paramName) { + var searchString = window.location.search.substring(1), + i, val, params = searchString.split("&"); + + for (i = 0; i < params.length; i++) { + val = params[i].split("="); + if (val[0] == paramName) { + return unescape(val[1]); + } + } + + return null; + }, + + /** + * Checks whether current device is mobile touch. + * @returns {boolean} + */ + isMobileDevice: function() { + var test = (this.getViewPort().width < this.getBreakpoint('lg') ? true : false); + + if (test === false) { + // For use within normal web clients + test = navigator.userAgent.match(/iPad/i) != null; + } + + return test; + }, + + /** + * Checks whether current device is desktop. + * @returns {boolean} + */ + isDesktopDevice: function() { + return KTUtil.isMobileDevice() ? false : true; + }, + + /** + * Gets browser window viewport size. Ref: + * http://andylangton.co.uk/articles/javascript/get-viewport-size-javascript/ + * @returns {object} + */ + getViewPort: function() { + var e = window, + a = 'inner'; + if (!('innerWidth' in window)) { + a = 'client'; + e = document.documentElement || document.body; + } + + return { + width: e[a + 'Width'], + height: e[a + 'Height'] + }; + }, + + /** + * Checks whether given device mode is currently activated. + * @param {string} mode Responsive mode name(e.g: desktop, + * desktop-and-tablet, tablet, tablet-and-mobile, mobile) + * @returns {boolean} + */ + isBreakpointUp: function(mode) { + var width = this.getViewPort().width; + var breakpoint = this.getBreakpoint(mode); + + return (width >= breakpoint); + }, + + isBreakpointDown: function(mode) { + var width = this.getViewPort().width; + var breakpoint = this.getBreakpoint(mode); + + return (width < breakpoint); + }, + + getViewportWidth: function() { + return this.getViewPort().width; + }, + + /** + * Generates unique ID for give prefix. + * @param {string} prefix Prefix for generated ID + * @returns {boolean} + */ + getUniqueId: function(prefix) { + return prefix + Math.floor(Math.random() * (new Date()).getTime()); + }, + + /** + * Gets window width for give breakpoint mode. + * @param {string} mode Responsive mode name(e.g: xl, lg, md, sm) + * @returns {number} + */ + getBreakpoint: function(breakpoint) { + var value = this.getCssVariableValue('--bs-' + breakpoint); + + if ( value ) { + value = parseInt(value.trim()); + } + + return value; + }, + + /** + * Checks whether object has property matchs given key path. + * @param {object} obj Object contains values paired with given key path + * @param {string} keys Keys path seperated with dots + * @returns {object} + */ + isset: function(obj, keys) { + var stone; + + keys = keys || ''; + + if (keys.indexOf('[') !== -1) { + throw new Error('Unsupported object path notation.'); + } + + keys = keys.split('.'); + + do { + if (obj === undefined) { + return false; + } + + stone = keys.shift(); + + if (!obj.hasOwnProperty(stone)) { + return false; + } + + obj = obj[stone]; + + } while (keys.length); + + return true; + }, + + /** + * Gets highest z-index of the given element parents + * @param {object} el jQuery element object + * @returns {number} + */ + getHighestZindex: function(el) { + var position, value; + + while (el && el !== document) { + // Ignore z-index if position is set to a value where z-index is ignored by the browser + // This makes behavior of this function consistent across browsers + // WebKit always returns auto if the element is positioned + position = KTUtil.css(el, 'position'); + + if (position === "absolute" || position === "relative" || position === "fixed") { + // IE returns 0 when zIndex is not specified + // other browsers return a string + // we ignore the case of nested elements with an explicit value of 0 + //
+ value = parseInt(KTUtil.css(el, 'z-index')); + + if (!isNaN(value) && value !== 0) { + return value; + } + } + + el = el.parentNode; + } + + return 1; + }, + + /** + * Checks whether the element has any parent with fixed positionfreg + * @param {object} el jQuery element object + * @returns {boolean} + */ + hasFixedPositionedParent: function(el) { + var position; + + while (el && el !== document) { + position = KTUtil.css(el, 'position'); + + if (position === "fixed") { + return true; + } + + el = el.parentNode; + } + + return false; + }, + + /** + * Simulates delay + */ + sleep: function(milliseconds) { + var start = new Date().getTime(); + for (var i = 0; i < 1e7; i++) { + if ((new Date().getTime() - start) > milliseconds) { + break; + } + } + }, + + /** + * Gets randomly generated integer value within given min and max range + * @param {number} min Range start value + * @param {number} max Range end value + * @returns {number} + */ + getRandomInt: function(min, max) { + return Math.floor(Math.random() * (max - min + 1)) + min; + }, + + /** + * Checks whether Angular library is included + * @returns {boolean} + */ + isAngularVersion: function() { + return window.Zone !== undefined ? true : false; + }, + + // Deep extend: $.extend(true, {}, objA, objB); + deepExtend: function(out) { + out = out || {}; + + for (var i = 1; i < arguments.length; i++) { + var obj = arguments[i]; + if (!obj) continue; + + for (var key in obj) { + if (!obj.hasOwnProperty(key)) { + continue; + } + + // based on https://javascriptweblog.wordpress.com/2011/08/08/fixing-the-javascript-typeof-operator/ + if ( Object.prototype.toString.call(obj[key]) === '[object Object]' ) { + out[key] = KTUtil.deepExtend(out[key], obj[key]); + continue; + } + + out[key] = obj[key]; + } + } + + return out; + }, + + // extend: $.extend({}, objA, objB); + extend: function(out) { + out = out || {}; + + for (var i = 1; i < arguments.length; i++) { + if (!arguments[i]) + continue; + + for (var key in arguments[i]) { + if (arguments[i].hasOwnProperty(key)) + out[key] = arguments[i][key]; + } + } + + return out; + }, + + getBody: function() { + return document.getElementsByTagName('body')[0]; + }, + + /** + * Checks whether the element has given classes + * @param {object} el jQuery element object + * @param {string} Classes string + * @returns {boolean} + */ + hasClasses: function(el, classes) { + if (!el) { + return; + } + + var classesArr = classes.split(" "); + + for (var i = 0; i < classesArr.length; i++) { + if (KTUtil.hasClass(el, KTUtil.trim(classesArr[i])) == false) { + return false; + } + } + + return true; + }, + + hasClass: function(el, className) { + if (!el) { + return; + } + + return el.classList ? el.classList.contains(className) : new RegExp('\\b' + className + '\\b').test(el.className); + }, + + addClass: function(el, className) { + if (!el || typeof className === 'undefined') { + return; + } + + var classNames = className.split(' '); + + if (el.classList) { + for (var i = 0; i < classNames.length; i++) { + if (classNames[i] && classNames[i].length > 0) { + el.classList.add(KTUtil.trim(classNames[i])); + } + } + } else if (!KTUtil.hasClass(el, className)) { + for (var x = 0; x < classNames.length; x++) { + el.className += ' ' + KTUtil.trim(classNames[x]); + } + } + }, + + removeClass: function(el, className) { + if (!el || typeof className === 'undefined') { + return; + } + + var classNames = className.split(' '); + + if (el.classList) { + for (var i = 0; i < classNames.length; i++) { + el.classList.remove(KTUtil.trim(classNames[i])); + } + } else if (KTUtil.hasClass(el, className)) { + for (var x = 0; x < classNames.length; x++) { + el.className = el.className.replace(new RegExp('\\b' + KTUtil.trim(classNames[x]) + '\\b', 'g'), ''); + } + } + }, + + triggerCustomEvent: function(el, eventName, data) { + var event; + if (window.CustomEvent) { + event = new CustomEvent(eventName, { + detail: data + }); + } else { + event = document.createEvent('CustomEvent'); + event.initCustomEvent(eventName, true, true, data); + } + + el.dispatchEvent(event); + }, + + triggerEvent: function(node, eventName) { + // Make sure we use the ownerDocument from the provided node to avoid cross-window problems + var doc; + + if (node.ownerDocument) { + doc = node.ownerDocument; + } else if (node.nodeType == 9) { + // the node may be the document itself, nodeType 9 = DOCUMENT_NODE + doc = node; + } else { + throw new Error("Invalid node passed to fireEvent: " + node.id); + } + + if (node.dispatchEvent) { + // Gecko-style approach (now the standard) takes more work + var eventClass = ""; + + // Different events have different event classes. + // If this switch statement can't map an eventName to an eventClass, + // the event firing is going to fail. + switch (eventName) { + case "click": // Dispatching of 'click' appears to not work correctly in Safari. Use 'mousedown' or 'mouseup' instead. + case "mouseenter": + case "mouseleave": + case "mousedown": + case "mouseup": + eventClass = "MouseEvents"; + break; + + case "focus": + case "change": + case "blur": + case "select": + eventClass = "HTMLEvents"; + break; + + default: + throw "fireEvent: Couldn't find an event class for event '" + eventName + "'."; + break; + } + var event = doc.createEvent(eventClass); + + var bubbles = eventName == "change" ? false : true; + event.initEvent(eventName, bubbles, true); // All events created as bubbling and cancelable. + + event.synthetic = true; // allow detection of synthetic events + // The second parameter says go ahead with the default action + node.dispatchEvent(event, true); + } else if (node.fireEvent) { + // IE-old school style + var event = doc.createEventObject(); + event.synthetic = true; // allow detection of synthetic events + node.fireEvent("on" + eventName, event); + } + }, + + index: function( el ){ + var c = el.parentNode.children, i = 0; + for(; i < c.length; i++ ) + if( c[i] == el ) return i; + }, + + trim: function(string) { + return string.trim(); + }, + + eventTriggered: function(e) { + if (e.currentTarget.dataset.triggered) { + return true; + } else { + e.currentTarget.dataset.triggered = true; + + return false; + } + }, + + remove: function(el) { + if (el && el.parentNode) { + el.parentNode.removeChild(el); + } + }, + + find: function(parent, query) { + if ( parent !== null) { + return parent.querySelector(query); + } else { + return null; + } + }, + + findAll: function(parent, query) { + if ( parent !== null ) { + return parent.querySelectorAll(query); + } else { + return null; + } + }, + + insertAfter: function(el, referenceNode) { + return referenceNode.parentNode.insertBefore(el, referenceNode.nextSibling); + }, + + parents: function(elem, selector) { + // Set up a parent array + var parents = []; + + // Push each parent element to the array + for ( ; elem && elem !== document; elem = elem.parentNode ) { + if (selector) { + if (elem.matches(selector)) { + parents.push(elem); + } + continue; + } + parents.push(elem); + } + + // Return our parent array + return parents; + }, + + children: function(el, selector, log) { + if (!el || !el.childNodes) { + return null; + } + + var result = [], + i = 0, + l = el.childNodes.length; + + for (var i; i < l; ++i) { + if (el.childNodes[i].nodeType == 1 && KTUtil.matches(el.childNodes[i], selector, log)) { + result.push(el.childNodes[i]); + } + } + + return result; + }, + + child: function(el, selector, log) { + var children = KTUtil.children(el, selector, log); + + return children ? children[0] : null; + }, + + matches: function(el, selector, log) { + var p = Element.prototype; + var f = p.matches || p.webkitMatchesSelector || p.mozMatchesSelector || p.msMatchesSelector || function(s) { + return [].indexOf.call(document.querySelectorAll(s), this) !== -1; + }; + + if (el && el.tagName) { + return f.call(el, selector); + } else { + return false; + } + }, + + data: function(el) { + return { + set: function(name, data) { + if (!el) { + return; + } + + if (el.customDataTag === undefined) { + window.KTUtilElementDataStoreID++; + el.customDataTag = window.KTUtilElementDataStoreID; + } + + if (window.KTUtilElementDataStore[el.customDataTag] === undefined) { + window.KTUtilElementDataStore[el.customDataTag] = {}; + } + + window.KTUtilElementDataStore[el.customDataTag][name] = data; + }, + + get: function(name) { + if (!el) { + return; + } + + if (el.customDataTag === undefined) { + return null; + } + + return this.has(name) ? window.KTUtilElementDataStore[el.customDataTag][name] : null; + }, + + has: function(name) { + if (!el) { + return false; + } + + if (el.customDataTag === undefined) { + return false; + } + + return (window.KTUtilElementDataStore[el.customDataTag] && window.KTUtilElementDataStore[el.customDataTag][name]) ? true : false; + }, + + remove: function(name) { + if (el && this.has(name)) { + delete window.KTUtilElementDataStore[el.customDataTag][name]; + } + } + }; + }, + + outerWidth: function(el, margin) { + var width; + + if (margin === true) { + width = parseFloat(el.offsetWidth); + width += parseFloat(KTUtil.css(el, 'margin-left')) + parseFloat(KTUtil.css(el, 'margin-right')); + + return parseFloat(width); + } else { + width = parseFloat(el.offsetWidth); + + return width; + } + }, + + offset: function(el) { + var rect, win; + + if ( !el ) { + return; + } + + // Return zeros for disconnected and hidden (display: none) elements (gh-2310) + // Support: IE <=11 only + // Running getBoundingClientRect on a + // disconnected node in IE throws an error + + if ( !el.getClientRects().length ) { + return { top: 0, left: 0 }; + } + + // Get document-relative position by adding viewport scroll to viewport-relative gBCR + rect = el.getBoundingClientRect(); + win = el.ownerDocument.defaultView; + + return { + top: rect.top + win.pageYOffset, + left: rect.left + win.pageXOffset, + right: window.innerWidth - (el.offsetLeft + el.offsetWidth) + }; + }, + + height: function(el) { + return KTUtil.css(el, 'height'); + }, + + outerHeight: function(el, withMargin) { + var height = el.offsetHeight; + var style; + + if (typeof withMargin !== 'undefined' && withMargin === true) { + style = getComputedStyle(el); + height += parseInt(style.marginTop) + parseInt(style.marginBottom); + + return height; + } else { + return height; + } + }, + + visible: function(el) { + return !(el.offsetWidth === 0 && el.offsetHeight === 0); + }, + + attr: function(el, name, value) { + if (el == undefined) { + return; + } + + if (value !== undefined) { + el.setAttribute(name, value); + } else { + return el.getAttribute(name); + } + }, + + hasAttr: function(el, name) { + if (el == undefined) { + return; + } + + return el.getAttribute(name) ? true : false; + }, + + removeAttr: function(el, name) { + if (el == undefined) { + return; + } + + el.removeAttribute(name); + }, + + animate: function(from, to, duration, update, easing, done) { + /** + * TinyAnimate.easings + * Adapted from jQuery Easing + */ + var easings = {}; + var easing; + + easings.linear = function(t, b, c, d) { + return c * t / d + b; + }; + + easing = easings.linear; + + // Early bail out if called incorrectly + if (typeof from !== 'number' || + typeof to !== 'number' || + typeof duration !== 'number' || + typeof update !== 'function') { + return; + } + + // Create mock done() function if necessary + if (typeof done !== 'function') { + done = function() {}; + } + + // Pick implementation (requestAnimationFrame | setTimeout) + var rAF = window.requestAnimationFrame || function(callback) { + window.setTimeout(callback, 1000 / 50); + }; + + // Animation loop + var canceled = false; + var change = to - from; + + function loop(timestamp) { + var time = (timestamp || +new Date()) - start; + + if (time >= 0) { + update(easing(time, from, change, duration)); + } + if (time >= 0 && time >= duration) { + update(to); + done(); + } else { + rAF(loop); + } + } + + update(from); + + // Start animation loop + var start = window.performance && window.performance.now ? window.performance.now() : +new Date(); + + rAF(loop); + }, + + actualCss: function(el, prop, cache) { + var css = ''; + + if (el instanceof HTMLElement === false) { + return; + } + + if (!el.getAttribute('kt-hidden-' + prop) || cache === false) { + var value; + + // the element is hidden so: + // making the el block so we can meassure its height but still be hidden + css = el.style.cssText; + el.style.cssText = 'position: absolute; visibility: hidden; display: block;'; + + if (prop == 'width') { + value = el.offsetWidth; + } else if (prop == 'height') { + value = el.offsetHeight; + } + + el.style.cssText = css; + + // store it in cache + el.setAttribute('kt-hidden-' + prop, value); + + return parseFloat(value); + } else { + // store it in cache + return parseFloat(el.getAttribute('kt-hidden-' + prop)); + } + }, + + actualHeight: function(el, cache) { + return KTUtil.actualCss(el, 'height', cache); + }, + + actualWidth: function(el, cache) { + return KTUtil.actualCss(el, 'width', cache); + }, + + getScroll: function(element, method) { + // The passed in `method` value should be 'Top' or 'Left' + method = 'scroll' + method; + return (element == window || element == document) ? ( + self[(method == 'scrollTop') ? 'pageYOffset' : 'pageXOffset'] || + (browserSupportsBoxModel && document.documentElement[method]) || + document.body[method] + ) : element[method]; + }, + + css: function(el, styleProp, value, important) { + if (!el) { + return; + } + + if (value !== undefined) { + if ( important === true ) { + el.style.setProperty(styleProp, value, 'important'); + } else { + el.style[styleProp] = value; + } + } else { + var defaultView = (el.ownerDocument || document).defaultView; + + // W3C standard way: + if (defaultView && defaultView.getComputedStyle) { + // sanitize property name to css notation + // (hyphen separated words eg. font-Size) + styleProp = styleProp.replace(/([A-Z])/g, "-$1").toLowerCase(); + + return defaultView.getComputedStyle(el, null).getPropertyValue(styleProp); + } else if (el.currentStyle) { // IE + // sanitize property name to camelCase + styleProp = styleProp.replace(/\-(\w)/g, function(str, letter) { + return letter.toUpperCase(); + }); + + value = el.currentStyle[styleProp]; + + // convert other units to pixels on IE + if (/^\d+(em|pt|%|ex)?$/i.test(value)) { + return (function(value) { + var oldLeft = el.style.left, oldRsLeft = el.runtimeStyle.left; + + el.runtimeStyle.left = el.currentStyle.left; + el.style.left = value || 0; + value = el.style.pixelLeft + "px"; + el.style.left = oldLeft; + el.runtimeStyle.left = oldRsLeft; + + return value; + })(value); + } + + return value; + } + } + }, + + slide: function(el, dir, speed, callback, recalcMaxHeight) { + if (!el || (dir == 'up' && KTUtil.visible(el) === false) || (dir == 'down' && KTUtil.visible(el) === true)) { + return; + } + + speed = (speed ? speed : 600); + var calcHeight = KTUtil.actualHeight(el); + var calcPaddingTop = false; + var calcPaddingBottom = false; + + if (KTUtil.css(el, 'padding-top') && KTUtil.data(el).has('slide-padding-top') !== true) { + KTUtil.data(el).set('slide-padding-top', KTUtil.css(el, 'padding-top')); + } + + if (KTUtil.css(el, 'padding-bottom') && KTUtil.data(el).has('slide-padding-bottom') !== true) { + KTUtil.data(el).set('slide-padding-bottom', KTUtil.css(el, 'padding-bottom')); + } + + if (KTUtil.data(el).has('slide-padding-top')) { + calcPaddingTop = parseInt(KTUtil.data(el).get('slide-padding-top')); + } + + if (KTUtil.data(el).has('slide-padding-bottom')) { + calcPaddingBottom = parseInt(KTUtil.data(el).get('slide-padding-bottom')); + } + + if (dir == 'up') { // up + el.style.cssText = 'display: block; overflow: hidden;'; + + if (calcPaddingTop) { + KTUtil.animate(0, calcPaddingTop, speed, function(value) { + el.style.paddingTop = (calcPaddingTop - value) + 'px'; + }, 'linear'); + } + + if (calcPaddingBottom) { + KTUtil.animate(0, calcPaddingBottom, speed, function(value) { + el.style.paddingBottom = (calcPaddingBottom - value) + 'px'; + }, 'linear'); + } + + KTUtil.animate(0, calcHeight, speed, function(value) { + el.style.height = (calcHeight - value) + 'px'; + }, 'linear', function() { + el.style.height = ''; + el.style.display = 'none'; + + if (typeof callback === 'function') { + callback(); + } + }); + + + } else if (dir == 'down') { // down + el.style.cssText = 'display: block; overflow: hidden;'; + + if (calcPaddingTop) { + KTUtil.animate(0, calcPaddingTop, speed, function(value) {// + el.style.paddingTop = value + 'px'; + }, 'linear', function() { + el.style.paddingTop = ''; + }); + } + + if (calcPaddingBottom) { + KTUtil.animate(0, calcPaddingBottom, speed, function(value) { + el.style.paddingBottom = value + 'px'; + }, 'linear', function() { + el.style.paddingBottom = ''; + }); + } + + KTUtil.animate(0, calcHeight, speed, function(value) { + el.style.height = value + 'px'; + }, 'linear', function() { + el.style.height = ''; + el.style.display = ''; + el.style.overflow = ''; + + if (typeof callback === 'function') { + callback(); + } + }); + } + }, + + slideUp: function(el, speed, callback) { + KTUtil.slide(el, 'up', speed, callback); + }, + + slideDown: function(el, speed, callback) { + KTUtil.slide(el, 'down', speed, callback); + }, + + show: function(el, display) { + if (typeof el !== 'undefined') { + el.style.display = (display ? display : 'block'); + } + }, + + hide: function(el) { + if (typeof el !== 'undefined') { + el.style.display = 'none'; + } + }, + + addEvent: function(el, type, handler, one) { + if (typeof el !== 'undefined' && el !== null) { + el.addEventListener(type, handler); + } + }, + + removeEvent: function(el, type, handler) { + if (el !== null) { + el.removeEventListener(type, handler); + } + }, + + on: function(element, selector, event, handler) { + if ( element === null ) { + return; + } + + var eventId = KTUtil.getUniqueId('event'); + + window.KTUtilDelegatedEventHandlers[eventId] = function(e) { + var targets = element.querySelectorAll(selector); + var target = e.target; + + while ( target && target !== element ) { + for ( var i = 0, j = targets.length; i < j; i++ ) { + if ( target === targets[i] ) { + handler.call(target, e); + } + } + + target = target.parentNode; + } + } + + KTUtil.addEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]); + + return eventId; + }, + + off: function(element, event, eventId) { + if (!element || !window.KTUtilDelegatedEventHandlers[eventId]) { + return; + } + + KTUtil.removeEvent(element, event, window.KTUtilDelegatedEventHandlers[eventId]); + + delete window.KTUtilDelegatedEventHandlers[eventId]; + }, + + one: function onetime(el, type, callback) { + el.addEventListener(type, function callee(e) { + // remove event + if (e.target && e.target.removeEventListener) { + e.target.removeEventListener(e.type, callee); + } + + // need to verify from https://themeforest.net/author_dashboard#comment_23615588 + if (el && el.removeEventListener) { + e.currentTarget.removeEventListener(e.type, callee); + } + + // call handler + return callback(e); + }); + }, + + hash: function(str) { + var hash = 0, + i, chr; + + if (str.length === 0) return hash; + for (i = 0; i < str.length; i++) { + chr = str.charCodeAt(i); + hash = ((hash << 5) - hash) + chr; + hash |= 0; // Convert to 32bit integer + } + + return hash; + }, + + animateClass: function(el, animationName, callback) { + var animation; + var animations = { + animation: 'animationend', + OAnimation: 'oAnimationEnd', + MozAnimation: 'mozAnimationEnd', + WebkitAnimation: 'webkitAnimationEnd', + msAnimation: 'msAnimationEnd', + }; + + for (var t in animations) { + if (el.style[t] !== undefined) { + animation = animations[t]; + } + } + + KTUtil.addClass(el, animationName); + + KTUtil.one(el, animation, function() { + KTUtil.removeClass(el, animationName); + }); + + if (callback) { + KTUtil.one(el, animation, callback); + } + }, + + transitionEnd: function(el, callback) { + var transition; + var transitions = { + transition: 'transitionend', + OTransition: 'oTransitionEnd', + MozTransition: 'mozTransitionEnd', + WebkitTransition: 'webkitTransitionEnd', + msTransition: 'msTransitionEnd' + }; + + for (var t in transitions) { + if (el.style[t] !== undefined) { + transition = transitions[t]; + } + } + + KTUtil.one(el, transition, callback); + }, + + animationEnd: function(el, callback) { + var animation; + var animations = { + animation: 'animationend', + OAnimation: 'oAnimationEnd', + MozAnimation: 'mozAnimationEnd', + WebkitAnimation: 'webkitAnimationEnd', + msAnimation: 'msAnimationEnd' + }; + + for (var t in animations) { + if (el.style[t] !== undefined) { + animation = animations[t]; + } + } + + KTUtil.one(el, animation, callback); + }, + + animateDelay: function(el, value) { + var vendors = ['webkit-', 'moz-', 'ms-', 'o-', '']; + for (var i = 0; i < vendors.length; i++) { + KTUtil.css(el, vendors[i] + 'animation-delay', value); + } + }, + + animateDuration: function(el, value) { + var vendors = ['webkit-', 'moz-', 'ms-', 'o-', '']; + for (var i = 0; i < vendors.length; i++) { + KTUtil.css(el, vendors[i] + 'animation-duration', value); + } + }, + + scrollTo: function(target, offset, duration) { + var duration = duration ? duration : 500; + var targetPos = target ? KTUtil.offset(target).top : 0; + var scrollPos = window.pageYOffset || document.documentElement.scrollTop || document.body.scrollTop || 0; + var from, to; + + if (offset) { + targetPos = targetPos - offset; + } + + from = scrollPos; + to = targetPos; + + KTUtil.animate(from, to, duration, function(value) { + document.documentElement.scrollTop = value; + document.body.parentNode.scrollTop = value; + document.body.scrollTop = value; + }); //, easing, done + }, + + scrollTop: function(offset, duration) { + KTUtil.scrollTo(null, offset, duration); + }, + + isArray: function(obj) { + return obj && Array.isArray(obj); + }, + + isEmpty: function(obj) { + for (var prop in obj) { + if (obj.hasOwnProperty(prop)) { + return false; + } + } + + return true; + }, + + numberString: function(nStr) { + nStr += ''; + var x = nStr.split('.'); + var x1 = x[0]; + var x2 = x.length > 1 ? '.' + x[1] : ''; + var rgx = /(\d+)(\d{3})/; + while (rgx.test(x1)) { + x1 = x1.replace(rgx, '$1' + ',' + '$2'); + } + return x1 + x2; + }, + + isRTL: function() { + return (document.querySelector('html').getAttribute("direction") === 'rtl'); + }, + + snakeToCamel: function(s){ + return s.replace(/(\-\w)/g, function(m){return m[1].toUpperCase();}); + }, + + filterBoolean: function(val) { + // Convert string boolean + if (val === true || val === 'true') { + return true; + } + + if (val === false || val === 'false') { + return false; + } + + return val; + }, + + setHTML: function(el, html) { + el.innerHTML = html; + }, + + getHTML: function(el) { + if (el) { + return el.innerHTML; + } + }, + + getDocumentHeight: function() { + var body = document.body; + var html = document.documentElement; + + return Math.max( body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight ); + }, + + getScrollTop: function() { + return (document.scrollingElement || document.documentElement).scrollTop; + }, + + colorLighten: function(color, amount) { + const addLight = function(color, amount){ + let cc = parseInt(color,16) + amount; + let c = (cc > 255) ? 255 : (cc); + c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`; + return c; + } + + color = (color.indexOf("#")>=0) ? color.substring(1,color.length) : color; + amount = parseInt((255*amount)/100); + + return color = `#${addLight(color.substring(0,2), amount)}${addLight(color.substring(2,4), amount)}${addLight(color.substring(4,6), amount)}`; + }, + + colorDarken: function(color, amount) { + const subtractLight = function(color, amount){ + let cc = parseInt(color,16) - amount; + let c = (cc < 0) ? 0 : (cc); + c = (c.toString(16).length > 1 ) ? c.toString(16) : `0${c.toString(16)}`; + + return c; + } + + color = (color.indexOf("#")>=0) ? color.substring(1,color.length) : color; + amount = parseInt((255*amount)/100); + + return color = `#${subtractLight(color.substring(0,2), amount)}${subtractLight(color.substring(2,4), amount)}${subtractLight(color.substring(4,6), amount)}`; + }, + + // Throttle function: Input as function which needs to be throttled and delay is the time interval in milliseconds + throttle: function (timer, func, delay) { + // If setTimeout is already scheduled, no need to do anything + if (timer) { + return; + } + + // Schedule a setTimeout after delay seconds + timer = setTimeout(function () { + func(); + + // Once setTimeout function execution is finished, timerId = undefined so that in
+ // the next scroll event function execution can be scheduled by the setTimeout + timer = undefined; + }, delay); + }, + + // Debounce function: Input as function which needs to be debounced and delay is the debounced time in milliseconds + debounce: function (timer, func, delay) { + // Cancels the setTimeout method execution + clearTimeout(timer) + + // Executes the func after delay time. + timer = setTimeout(func, delay); + }, + + parseJson: function(value) { + if (typeof value === 'string') { + value = value.replace(/'/g, "\""); + + var jsonStr = value.replace(/(\w+:)|(\w+ :)/g, function(matched) { + return '"' + matched.substring(0, matched.length - 1) + '":'; + }); + + try { + value = JSON.parse(jsonStr); + } catch(e) { } + } + + return value; + }, + + getResponsiveValue: function(value, defaultValue) { + var width = this.getViewPort().width; + var result; + + value = KTUtil.parseJson(value); + + if (typeof value === 'object') { + var resultKey; + var resultBreakpoint = -1; + var breakpoint; + + for (var key in value) { + if (key === 'default') { + breakpoint = 0; + } else { + breakpoint = this.getBreakpoint(key) ? this.getBreakpoint(key) : parseInt(key); + } + + if (breakpoint <= width && breakpoint > resultBreakpoint) { + resultKey = key; + resultBreakpoint = breakpoint; + } + } + + if (resultKey) { + result = value[resultKey]; + } else { + result = value; + } + } else { + result = value; + } + + return result; + }, + + each: function(array, callback) { + return [].slice.call(array).map(callback); + }, + + getSelectorMatchValue: function(value) { + var result = null; + value = KTUtil.parseJson(value); + + if ( typeof value === 'object' ) { + // Match condition + if ( value['match'] !== undefined ) { + var selector = Object.keys(value['match'])[0]; + value = Object.values(value['match'])[0]; + + if ( document.querySelector(selector) !== null ) { + result = value; + } + } + } else { + result = value; + } + + return result; + }, + + getConditionalValue: function(value) { + var value = KTUtil.parseJson(value); + var result = KTUtil.getResponsiveValue(value); + + if ( result !== null && result['match'] !== undefined ) { + result = KTUtil.getSelectorMatchValue(result); + } + + if ( result === null && value !== null && value['default'] !== undefined ) { + result = value['default']; + } + + return result; + }, + + getCssVariableValue: function(variableName) { + var hex = getComputedStyle(document.documentElement).getPropertyValue(variableName); + if ( hex && hex.length > 0 ) { + hex = hex.trim(); + } + + return hex; + }, + + isInViewport: function(element) { + var rect = element.getBoundingClientRect(); + + return ( + rect.top >= 0 && + rect.left >= 0 && + rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && + rect.right <= (window.innerWidth || document.documentElement.clientWidth) + ); + }, + + onDOMContentLoaded: function(callback) { + if (document.readyState === 'loading') { + document.addEventListener('DOMContentLoaded', callback); + } else { + callback(); + } + }, + + inIframe: function() { + try { + return window.self !== window.top; + } catch (e) { + return true; + } + }, + + isHexColor(code) { + return /^#[0-9A-F]{6}$/i.test(code); + } + } +}(); + +// Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTUtil; +} \ No newline at end of file diff --git a/resources/assets/core/js/custom/account/api-keys/api-keys.js b/resources/assets/core/js/custom/account/api-keys/api-keys.js new file mode 100644 index 0000000..f4743ce --- /dev/null +++ b/resources/assets/core/js/custom/account/api-keys/api-keys.js @@ -0,0 +1,68 @@ +"use strict"; + +// Class definition +var KTAccountAPIKeys = function () { + // Private functions + var initLicenceCopy = function() { + KTUtil.each(document.querySelectorAll('#kt_api_keys_table [data-action="copy"]'), function(button) { + var tr = button.closest('tr'); + var license = KTUtil.find(tr, '[data-bs-target="license"]'); + + var clipboard = new ClipboardJS(button, { + target: license, + text: function() { + return license.innerHTML; + } + }); + + clipboard.on('success', function(e) { + // Icons + var svgIcon = button.querySelector('.svg-icon'); + var checkIcon = button.querySelector('.bi.bi-check'); + + // exit if check icon is already shown + if (checkIcon) { + return; + } + + // Create check icon + checkIcon = document.createElement('i'); + checkIcon.classList.add('bi'); + checkIcon.classList.add('bi-check'); + checkIcon.classList.add('fs-2x'); + + // Append check icon + button.appendChild(checkIcon); + + // Highlight target + license.classList.add('text-success'); + + // Hide copy icon + svgIcon.classList.add('d-none'); + + // Set 3 seconds timeout to hide the check icon and show copy icon back + setTimeout(function() { + // Remove check icon + svgIcon.classList.remove('d-none'); + // Show check icon back + button.removeChild(checkIcon); + + // Remove highlight + license.classList.remove('text-success'); + }, 3000); + }); + }); + } + + // Public methods + return { + init: function () { + initLicenceCopy(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountAPIKeys.init(); +}); diff --git a/resources/assets/core/js/custom/account/orders/classic.js b/resources/assets/core/js/custom/account/orders/classic.js new file mode 100644 index 0000000..143e2e6 --- /dev/null +++ b/resources/assets/core/js/custom/account/orders/classic.js @@ -0,0 +1,108 @@ +"use strict"; + +// Class definition +var KTDatatablesClassic = function () { + // Private functions + + var initClassic = function () { + + // Set date data order + const table = document.getElementById('kt_orders_classic'); + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[1].innerHTML, "MMM D, YYYY").format('x'); + dateRow[1].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + const datatable = $(table).DataTable({ + "info": false, + 'order': [] + }); + + // Filter dropdown elements + const filterOrders = document.getElementById('kt_filter_orders'); + const filterYear = document.getElementById('kt_filter_year'); + + // Filter by order status --- official docs reference: https://datatables.net/reference/api/search() + filterOrders.addEventListener('change', function (e) { + datatable.column(3).search(e.target.value).draw(); + }); + + // Filter by date --- official docs reference: https://momentjs.com/docs/ + var minDate; + var maxDate; + filterYear.addEventListener('change', function (e) { + const value = e.target.value; + switch (value) { + case 'thisyear': { + minDate = moment().startOf('year').format('x'); + maxDate = moment().endOf('year').format('x'); + datatable.draw(); + break; + } + case 'thismonth': { + minDate = moment().startOf('month').format('x'); + maxDate = moment().endOf('month').format('x'); + datatable.draw(); + break; + } + case 'lastmonth': { + minDate = moment().subtract(1, 'months').startOf('month').format('x'); + maxDate = moment().subtract(1, 'months').endOf('month').format('x'); + datatable.draw(); + break; + } + case 'last90days': { + minDate = moment().subtract(30, 'days').format('x'); + maxDate = moment().format('x'); + datatable.draw(); + break; + } + default: { + minDate = moment().subtract(100, 'years').startOf('month').format('x'); + maxDate = moment().add(1, 'months').endOf('month').format('x'); + datatable.draw(); + break; + } + } + }); + + // Date range filter --- offical docs reference: https://datatables.net/examples/plug-ins/range_filtering.html + $.fn.dataTable.ext.search.push( + function (settings, data, dataIndex) { + var min = minDate; + var max = maxDate; + var date = parseFloat(moment(data[1]).format('x')) || 0; // use data for the age column + + if ((isNaN(min) && isNaN(max)) || + (isNaN(min) && date <= max) || + (min <= date && isNaN(max)) || + (min <= date && date <= max)) { + return true; + } + return false; + } + ); + + // Search --- official docs reference: https://datatables.net/reference/api/search() + var filterSearch = document.getElementById('kt_filter_search'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Public methods + return { + init: function () { + initClassic(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTDatatablesClassic.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/account/security/license-usage.js b/resources/assets/core/js/custom/account/security/license-usage.js new file mode 100644 index 0000000..ac5983c --- /dev/null +++ b/resources/assets/core/js/custom/account/security/license-usage.js @@ -0,0 +1,68 @@ +"use strict"; + +// Class definition +var KTAccountSecurityLicenseUsage = function () { + // Private functions + var initLicenceCopy = function() { + KTUtil.each(document.querySelectorAll('#kt_security_license_usage_table [data-action="copy"]'), function(button) { + var tr = button.closest('tr'); + var license = KTUtil.find(tr, '[data-bs-target="license"]'); + + var clipboard = new ClipboardJS(button, { + target: license, + text: function() { + return license.innerHTML; + } + }); + + clipboard.on('success', function(e) { + // Icons + var svgIcon = button.querySelector('.svg-icon'); + var checkIcon = button.querySelector('.bi.bi-check'); + + // exit if check icon is already shown + if (checkIcon) { + return; + } + + // Create check icon + checkIcon = document.createElement('i'); + checkIcon.classList.add('bi'); + checkIcon.classList.add('bi-check'); + checkIcon.classList.add('fs-2x'); + + // Append check icon + button.appendChild(checkIcon); + + // Highlight target + license.classList.add('text-success'); + + // Hide copy icon + svgIcon.classList.add('d-none'); + + // Set 3 seconds timeout to hide the check icon and show copy icon back + setTimeout(function() { + // Remove check icon + svgIcon.classList.remove('d-none'); + // Show check icon back + button.removeChild(checkIcon); + + // Remove highlight + license.classList.remove('text-success'); + }, 3000); + }); + }); + } + + // Public methods + return { + init: function () { + initLicenceCopy(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSecurityLicenseUsage.init(); +}); diff --git a/resources/assets/core/js/custom/account/security/security-summary.js b/resources/assets/core/js/custom/account/security/security-summary.js new file mode 100644 index 0000000..3a0f586 --- /dev/null +++ b/resources/assets/core/js/custom/account/security/security-summary.js @@ -0,0 +1,155 @@ +"use strict"; + +// Class definition +var KTAccountSecuritySummary = function () { + // Private functions + var initChart = function(tabSelector, chartSelector, data1, data2, initByDefault) { + var element = document.querySelector(chartSelector); + var height = parseInt(KTUtil.css(element, 'height')); + + if (!element) { + return; + } + + var options = { + series: [{ + name: 'Net Profit', + data: data1 + }, { + name: 'Revenue', + data: data2 + }], + chart: { + fontFamily: 'inherit', + type: 'bar', + height: height, + toolbar: { + show: false + } + }, + plotOptions: { + bar: { + horizontal: false, + columnWidth: ['35%'], + borderRadius: 6 + } + }, + legend: { + show: false + }, + dataLabels: { + enabled: false + }, + stroke: { + show: true, + width: 2, + colors: ['transparent'] + }, + xaxis: { + categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'], + axisBorder: { + show: false, + }, + axisTicks: { + show: false + }, + labels: { + style: { + colors: KTUtil.getCssVariableValue('--bs-gray-400'), + fontSize: '12px' + } + } + }, + yaxis: { + labels: { + style: { + colors: KTUtil.getCssVariableValue('--bs-gray-400'), + fontSize: '12px' + } + } + }, + fill: { + opacity: 1 + }, + states: { + normal: { + filter: { + type: 'none', + value: 0 + } + }, + hover: { + filter: { + type: 'none', + value: 0 + } + }, + active: { + allowMultipleDataPointsSelection: false, + filter: { + type: 'none', + value: 0 + } + } + }, + tooltip: { + style: { + fontSize: '12px' + }, + y: { + formatter: function (val) { + return "$" + val + " thousands" + } + } + }, + colors: [KTUtil.getCssVariableValue('--bs-primary'), KTUtil.getCssVariableValue('--bs-gray-200')], + grid: { + borderColor: KTUtil.getCssVariableValue('--bs-gray-200'), + strokeDashArray: 4, + yaxis: { + lines: { + show: true + } + } + } + }; + + var chart = new ApexCharts(element, options); + + var init = false; + var tab = document.querySelector(tabSelector); + + if (initByDefault === true) { + setTimeout(function() { + chart.render(); + init = true; + }, 500); + } + + tab.addEventListener('shown.bs.tab', function (event) { + if (init == false) { + chart.render(); + init = true; + } + }) + } + + // Public methods + return { + init: function () { + initChart('#kt_security_summary_tab_hours_agents', '#kt_security_summary_chart_hours_agents', [50, 70, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 117, 80, 65, 70, 90, 115, 95, 70, 84], true); + initChart('#kt_security_summary_tab_hours_clients', '#kt_security_summary_chart_hours_clients', [50, 70, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], false); + + initChart('#kt_security_summary_tab_day', '#kt_security_summary_chart_day_agents', [50, 70, 80, 100, 90, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 117, 60, 65, 80, 90, 100, 95, 70, 84], false); + initChart('#kt_security_summary_tab_day_clients', '#kt_security_summary_chart_day_clients', [50, 70, 100, 90, 80, 65, 80, 90, 115, 95, 70, 84], [50, 70, 90, 115, 80, 65, 80, 90, 115, 95, 70, 84], false); + + initChart('#kt_security_summary_tab_week', '#kt_security_summary_chart_week_agents', [50, 70, 75, 117, 80, 65, 80, 90, 115, 95, 50, 84], [50, 60, 90, 117, 80, 65, 80, 90, 115, 95, 70, 84], false); + initChart('#kt_security_summary_tab_week_clients', '#kt_security_summary_chart_week_clients', [50, 70, 90, 117, 80, 65, 80, 90, 100, 80, 70, 84], [50, 70, 90, 117, 80, 65, 80, 90, 100, 95, 70, 84], false); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSecuritySummary.init(); +}); diff --git a/resources/assets/core/js/custom/account/settings/deactivate-account.js b/resources/assets/core/js/custom/account/settings/deactivate-account.js new file mode 100644 index 0000000..c9c3342 --- /dev/null +++ b/resources/assets/core/js/custom/account/settings/deactivate-account.js @@ -0,0 +1,111 @@ +"use strict"; + +// Class definition +var KTAccountSettingsDeactivateAccount = function () { + // Private variables + var form; + var validation; + var submitButton; + + // Private functions + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validation = FormValidation.formValidation( + form, + { + fields: { + deactivate: { + validators: { + notEmpty: { + message: 'Please check the box to deactivate your account' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + submitButton: new FormValidation.plugins.SubmitButton(), + //defaultSubmit: new FormValidation.plugins.DefaultSubmit(), // Uncomment this line to enable normal button submit after form validation + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + var handleForm = function () { + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validation.validate().then(function (status) { + if (status == 'Valid') { + + swal.fire({ + text: "Are you sure you would like to deactivate your account?", + icon: "warning", + buttonsStyling: false, + showDenyButton: true, + confirmButtonText: "Yes", + denyButtonText: 'No', + customClass: { + confirmButton: "btn btn-light-primary", + denyButton: "btn btn-danger" + } + }).then((result) => { + if (result.isConfirmed) { + Swal.fire({ + text: 'Your account has been deactivated.', + icon: 'success', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }) + } else if (result.isDenied) { + Swal.fire({ + text: 'Account not deactivated.', + icon: 'info', + confirmButtonText: "Ok", + buttonsStyling: false, + customClass: { + confirmButton: "btn btn-light-primary" + } + }) + } + }); + + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + form = document.querySelector('#kt_account_deactivate_form'); + submitButton = document.querySelector('#kt_account_deactivate_account_submit'); + + initValidation(); + handleForm(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsDeactivateAccount.init(); +}); diff --git a/resources/assets/core/js/custom/account/settings/overview.js b/resources/assets/core/js/custom/account/settings/overview.js new file mode 100644 index 0000000..9c47829 --- /dev/null +++ b/resources/assets/core/js/custom/account/settings/overview.js @@ -0,0 +1,21 @@ +"use strict"; + +// Class definition +var KTAccountSettingsOverview = function () { + // Private functions + var initSettings = function() { + + } + + // Public methods + return { + init: function () { + initSettings(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsOverview.init(); +}); diff --git a/resources/assets/core/js/custom/account/settings/profile-details.js b/resources/assets/core/js/custom/account/settings/profile-details.js new file mode 100644 index 0000000..9516fec --- /dev/null +++ b/resources/assets/core/js/custom/account/settings/profile-details.js @@ -0,0 +1,150 @@ +"use strict"; + +// Class definition +var KTAccountSettingsProfileDetails = function () { + // Private variables + var form; + var submitButton; + var validation; + + // Private functions + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validation = FormValidation.formValidation( + form, + { + fields: { + fname: { + validators: { + notEmpty: { + message: 'First name is required' + } + } + }, + lname: { + validators: { + notEmpty: { + message: 'Last name is required' + } + } + }, + company: { + validators: { + notEmpty: { + message: 'Company name is required' + } + } + }, + phone: { + validators: { + notEmpty: { + message: 'Contact phone number is required' + } + } + }, + country: { + validators: { + notEmpty: { + message: 'Please select a country' + } + } + }, + timezone: { + validators: { + notEmpty: { + message: 'Please select a timezone' + } + } + }, + 'communication[]': { + validators: { + notEmpty: { + message: 'Please select at least one communication method' + } + } + }, + language: { + validators: { + notEmpty: { + message: 'Please select a language' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + submitButton: new FormValidation.plugins.SubmitButton(), + //defaultSubmit: new FormValidation.plugins.DefaultSubmit(), // Uncomment this line to enable normal button submit after form validation + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Select2 validation integration + $(form.querySelector('[name="country"]')).on('change', function() { + // Revalidate the color field when an option is chosen + validation.revalidateField('country'); + }); + + $(form.querySelector('[name="language"]')).on('change', function() { + // Revalidate the color field when an option is chosen + validation.revalidateField('language'); + }); + + $(form.querySelector('[name="timezone"]')).on('change', function() { + // Revalidate the color field when an option is chosen + validation.revalidateField('timezone'); + }); + } + + var handleForm = function () { + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + validation.validate().then(function (status) { + if (status == 'Valid') { + + swal.fire({ + text: "Thank you! You've updated your basic info", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }); + + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + form = document.getElementById('kt_account_profile_details_form'); + submitButton = form.querySelector('#kt_account_profile_details_submit'); + + initValidation(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsProfileDetails.init(); +}); diff --git a/resources/assets/core/js/custom/account/settings/signin-methods.js b/resources/assets/core/js/custom/account/settings/signin-methods.js new file mode 100644 index 0000000..83be6c9 --- /dev/null +++ b/resources/assets/core/js/custom/account/settings/signin-methods.js @@ -0,0 +1,218 @@ +"use strict"; + +// Class definition +var KTAccountSettingsSigninMethods = function () { + // Private functions + var initSettings = function () { + + // UI elements + var signInMainEl = document.getElementById('kt_signin_email'); + var signInEditEl = document.getElementById('kt_signin_email_edit'); + var passwordMainEl = document.getElementById('kt_signin_password'); + var passwordEditEl = document.getElementById('kt_signin_password_edit'); + + // button elements + var signInChangeEmail = document.getElementById('kt_signin_email_button'); + var signInCancelEmail = document.getElementById('kt_signin_cancel'); + var passwordChange = document.getElementById('kt_signin_password_button'); + var passwordCancel = document.getElementById('kt_password_cancel'); + + // toggle UI + signInChangeEmail.querySelector('button').addEventListener('click', function () { + toggleChangeEmail(); + }); + + signInCancelEmail.addEventListener('click', function () { + toggleChangeEmail(); + }); + + passwordChange.querySelector('button').addEventListener('click', function () { + toggleChangePassword(); + }); + + passwordCancel.addEventListener('click', function () { + toggleChangePassword(); + }); + + var toggleChangeEmail = function () { + signInMainEl.classList.toggle('d-none'); + signInChangeEmail.classList.toggle('d-none'); + signInEditEl.classList.toggle('d-none'); + } + + var toggleChangePassword = function () { + passwordMainEl.classList.toggle('d-none'); + passwordChange.classList.toggle('d-none'); + passwordEditEl.classList.toggle('d-none'); + } + } + + var handleChangeEmail = function (e) { + var validation; + + // form elements + var signInForm = document.getElementById('kt_signin_change_email'); + + validation = FormValidation.formValidation( + signInForm, + { + fields: { + emailaddress: { + validators: { + notEmpty: { + message: 'Email is required' + }, + emailAddress: { + message: 'The value is not a valid email address' + } + } + }, + + confirmemailpassword: { + validators: { + notEmpty: { + message: 'Password is required' + } + } + } + }, + + plugins: { //Learn more: https://formvalidation.io/guide/plugins + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row' + }) + } + } + ); + + signInForm.querySelector('#kt_signin_submit').addEventListener('click', function (e) { + e.preventDefault(); + console.log('click'); + + validation.validate().then(function (status) { + if (status == 'Valid') { + swal.fire({ + text: "Sent password reset. Please check your email", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }).then(function(){ + signInForm.reset(); + validation.resetForm(); // Reset formvalidation --- more info: https://formvalidation.io/guide/api/reset-form/ + }); + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }); + } + }); + }); + } + + var handleChangePassword = function (e) { + var validation; + + // form elements + var passwordForm = document.getElementById('kt_signin_change_password'); + + validation = FormValidation.formValidation( + passwordForm, + { + fields: { + currentpassword: { + validators: { + notEmpty: { + message: 'Current Password is required' + } + } + }, + + newpassword: { + validators: { + notEmpty: { + message: 'New Password is required' + } + } + }, + + confirmpassword: { + validators: { + notEmpty: { + message: 'Confirm Password is required' + }, + identical: { + compare: function() { + return passwordForm.querySelector('[name="newpassword"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + }, + + plugins: { //Learn more: https://formvalidation.io/guide/plugins + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row' + }) + } + } + ); + + passwordForm.querySelector('#kt_password_submit').addEventListener('click', function (e) { + e.preventDefault(); + console.log('click'); + + validation.validate().then(function (status) { + if (status == 'Valid') { + swal.fire({ + text: "Sent password reset. Please check your email", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }).then(function(){ + passwordForm.reset(); + validation.resetForm(); // Reset formvalidation --- more info: https://formvalidation.io/guide/api/reset-form/ + }); + } else { + swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn font-weight-bold btn-light-primary" + } + }); + } + }); + }); + } + + // Public methods + return { + init: function () { + initSettings(); + handleChangeEmail(); + handleChangePassword(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTAccountSettingsSigninMethods.init(); +}); diff --git a/resources/assets/core/js/custom/apps/calendar/calendar.js b/resources/assets/core/js/custom/apps/calendar/calendar.js new file mode 100644 index 0000000..071de4b --- /dev/null +++ b/resources/assets/core/js/custom/apps/calendar/calendar.js @@ -0,0 +1,894 @@ +"use strict"; + +// Class definition +var KTAppCalendar = function () { + // Shared variables + // Calendar variables + var calendar; + var data = { + id: '', + eventName: '', + eventDescription: '', + eventLocation: '', + startDate: '', + endDate: '', + allDay: false + }; + var popover; + var popoverState = false; + + // Add event variables + var eventName; + var eventDescription; + var eventLocation; + var startDatepicker; + var startFlatpickr; + var endDatepicker; + var endFlatpickr; + var startTimepicker; + var startTimeFlatpickr; + var endTimepicker + var endTimeFlatpickr; + var modal; + var modalTitle; + var form; + var validator; + var addButton; + var submitButton; + var cancelButton; + var closeButton; + + // View event variables + var viewEventName; + var viewAllDay; + var viewEventDescription; + var viewEventLocation; + var viewStartDate; + var viewEndDate; + var viewModal; + var viewEditButton; + var viewDeleteButton; + + + // Private functions + var initCalendarApp = function () { + // Define variables + var calendarEl = document.getElementById('kt_calendar_app'); + var todayDate = moment().startOf('day'); + var YM = todayDate.format('YYYY-MM'); + var YESTERDAY = todayDate.clone().subtract(1, 'day').format('YYYY-MM-DD'); + var TODAY = todayDate.format('YYYY-MM-DD'); + var TOMORROW = todayDate.clone().add(1, 'day').format('YYYY-MM-DD'); + + // Init calendar --- more info: https://fullcalendar.io/docs/initialize-globals + calendar = new FullCalendar.Calendar(calendarEl, { + headerToolbar: { + left: 'prev,next today', + center: 'title', + right: 'dayGridMonth,timeGridWeek,timeGridDay' + }, + initialDate: TODAY, + navLinks: true, // can click day/week names to navigate views + selectable: true, + selectMirror: true, + + // Select dates action --- more info: https://fullcalendar.io/docs/select-callback + select: function (arg) { + hidePopovers(); + formatArgs(arg); + handleNewEvent(); + }, + + // Click event --- more info: https://fullcalendar.io/docs/eventClick + eventClick: function (arg) { + hidePopovers(); + + formatArgs({ + id: arg.event.id, + title: arg.event.title, + description: arg.event.extendedProps.description, + location: arg.event.extendedProps.location, + startStr: arg.event.startStr, + endStr: arg.event.endStr, + allDay: arg.event.allDay + }); + handleViewEvent(); + }, + + // MouseEnter event --- more info: https://fullcalendar.io/docs/eventMouseEnter + eventMouseEnter: function (arg) { + formatArgs({ + id: arg.event.id, + title: arg.event.title, + description: arg.event.extendedProps.description, + location: arg.event.extendedProps.location, + startStr: arg.event.startStr, + endStr: arg.event.endStr, + allDay: arg.event.allDay + }); + + // Show popover preview + initPopovers(arg.el); + }, + + editable: true, + dayMaxEvents: true, // allow "more" link when too many events + events: [ + { + id: uid(), + title: 'All Day Event', + start: YM + '-01', + end: YM + '-02', + description: 'Toto lorem ipsum dolor sit incid idunt ut', + className: "fc-event-danger fc-event-solid-warning", + location: 'Federation Square' + }, + { + id: uid(), + title: 'Reporting', + start: YM + '-14T13:30:00', + description: 'Lorem ipsum dolor incid idunt ut labore', + end: YM + '-14T14:30:00', + className: "fc-event-success", + location: 'Meeting Room 7.03' + }, + { + id: uid(), + title: 'Company Trip', + start: YM + '-02', + description: 'Lorem ipsum dolor sit tempor incid', + end: YM + '-03', + className: "fc-event-primary", + location: 'Seoul, Korea' + + }, + { + id: uid(), + title: 'ICT Expo 2021 - Product Release', + start: YM + '-03', + description: 'Lorem ipsum dolor sit tempor inci', + end: YM + '-05', + className: "fc-event-light fc-event-solid-primary", + location: 'Melbourne Exhibition Hall' + }, + { + id: uid(), + title: 'Dinner', + start: YM + '-12', + description: 'Lorem ipsum dolor sit amet, conse ctetur', + end: YM + '-13', + location: 'Squire\'s Loft' + }, + { + id: uid(), + title: 'Repeating Event', + start: YM + '-09T16:00:00', + end: YM + '-09T17:00:00', + description: 'Lorem ipsum dolor sit ncididunt ut labore', + className: "fc-event-danger", + location: 'General Area' + }, + { + id: uid(), + title: 'Repeating Event', + description: 'Lorem ipsum dolor sit amet, labore', + start: YM + '-16T16:00:00', + end: YM + '-16T17:00:00', + location: 'General Area' + }, + { + id: uid(), + title: 'Conference', + start: YESTERDAY, + end: TOMORROW, + description: 'Lorem ipsum dolor eius mod tempor labore', + className: "fc-event-primary", + location: 'Conference Hall A' + }, + { + id: uid(), + title: 'Meeting', + start: TODAY + 'T10:30:00', + end: TODAY + 'T12:30:00', + description: 'Lorem ipsum dolor eiu idunt ut labore', + location: 'Meeting Room 11.06' + }, + { + id: uid(), + title: 'Lunch', + start: TODAY + 'T12:00:00', + end: TODAY + 'T14:00:00', + className: "fc-event-info", + description: 'Lorem ipsum dolor sit amet, ut labore', + location: 'Cafeteria' + }, + { + id: uid(), + title: 'Meeting', + start: TODAY + 'T14:30:00', + end: TODAY + 'T15:30:00', + className: "fc-event-warning", + description: 'Lorem ipsum conse ctetur adipi scing', + location: 'Meeting Room 11.10' + }, + { + id: uid(), + title: 'Happy Hour', + start: TODAY + 'T17:30:00', + end: TODAY + 'T21:30:00', + className: "fc-event-info", + description: 'Lorem ipsum dolor sit amet, conse ctetur', + location: 'The English Pub' + }, + { + id: uid(), + title: 'Dinner', + start: TOMORROW + 'T18:00:00', + end: TOMORROW + 'T21:00:00', + className: "fc-event-solid-danger fc-event-light", + description: 'Lorem ipsum dolor sit ctetur adipi scing', + location: 'New York Steakhouse' + }, + { + id: uid(), + title: 'Birthday Party', + start: TOMORROW + 'T12:00:00', + end: TOMORROW + 'T14:00:00', + className: "fc-event-primary", + description: 'Lorem ipsum dolor sit amet, scing', + location: 'The English Pub' + }, + { + id: uid(), + title: 'Site visit', + start: YM + '-28', + end: YM + '-29', + className: "fc-event-solid-info fc-event-light", + description: 'Lorem ipsum dolor sit amet, labore', + location: '271, Spring Street' + } + ], + + // Reset popovers when changing calendar views --- more info: https://fullcalendar.io/docs/datesSet + datesSet: function(){ + hidePopovers(); + } + }); + + calendar.render(); + } + + // Initialize popovers --- more info: https://getbootstrap.com/docs/4.0/components/popovers/ + const initPopovers = (element) => { + hidePopovers(); + + // Generate popover content + const startDate = data.allDay ? moment(data.startDate).format('Do MMM, YYYY') : moment(data.startDate).format('Do MMM, YYYY - h:mm a'); + const endDate = data.allDay ? moment(data.endDate).format('Do MMM, YYYY') : moment(data.endDate).format('Do MMM, YYYY - h:mm a'); + const popoverHtml = '
' + data.eventName + '
Start: ' + startDate + '
End: ' + endDate + '
View More
'; + + // Popover options + var options = { + container: 'body', + trigger: 'manual', + boundary: 'window', + placement: 'auto', + dismiss: true, + html: true, + title: 'Event Summary', + content: popoverHtml, + } + + // Initialize popover + popover = KTApp.initBootstrapPopover(element, options); + + // Show popover + popover.show(); + + // Update popover state + popoverState = true; + + // Open view event modal + handleViewButton(); + } + + // Hide active popovers + const hidePopovers = () => { + if (popoverState) { + popover.dispose(); + popoverState = false; + } + } + + // Init validator + const initValidator = () => { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'calendar_event_name': { + validators: { + notEmpty: { + message: 'Event name is required' + } + } + }, + 'calendar_event_start_date': { + validators: { + notEmpty: { + message: 'Start date is required' + } + } + }, + 'calendar_event_end_date': { + validators: { + notEmpty: { + message: 'End date is required' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + } + + // Initialize datepickers --- more info: https://flatpickr.js.org/ + const initDatepickers = () => { + startFlatpickr = flatpickr(startDatepicker, { + enableTime: false, + dateFormat: "Y-m-d", + }); + + endFlatpickr = flatpickr(endDatepicker, { + enableTime: false, + dateFormat: "Y-m-d", + }); + + startTimeFlatpickr = flatpickr(startTimepicker, { + enableTime: true, + noCalendar: true, + dateFormat: "H:i", + }); + + endTimeFlatpickr = flatpickr(endTimepicker, { + enableTime: true, + noCalendar: true, + dateFormat: "H:i", + }); + } + + // Handle add button + const handleAddButton = () => { + addButton.addEventListener('click', e => { + hidePopovers(); + + // Reset form data + data = { + id: '', + eventName: '', + eventDescription: '', + startDate: new Date(), + endDate: new Date(), + allDay: false + }; + handleNewEvent(); + }); + } + + // Handle add new event + const handleNewEvent = () => { + // Update modal title + modalTitle.innerText = "Add a New Event"; + + modal.show(); + + // Select datepicker wrapper elements + const datepickerWrappers = form.querySelectorAll('[data-kt-calendar="datepicker"]'); + + // Handle all day toggle + const allDayToggle = form.querySelector('#kt_calendar_datepicker_allday'); + allDayToggle.addEventListener('click', e => { + if (e.target.checked) { + datepickerWrappers.forEach(dw => { + dw.classList.add('d-none'); + }); + } else { + endFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + datepickerWrappers.forEach(dw => { + dw.classList.remove('d-none'); + }); + } + }); + + populateForm(data); + + // Handle submit form + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "New event added to calendar!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Detect if is all day event + let allDayEvent = false; + if (allDayToggle.checked) { allDayEvent = true; } + if (startTimeFlatpickr.selectedDates.length === 0) { allDayEvent = true; } + + // Merge date & time + var startDateTime = moment(startFlatpickr.selectedDates[0]).format(); + var endDateTime = moment(endFlatpickr.selectedDates[endFlatpickr.selectedDates.length - 1]).format(); + if (!allDayEvent) { + const startDate = moment(startFlatpickr.selectedDates[0]).format('YYYY-MM-DD'); + const endDate = startDate; + const startTime = moment(startTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + const endTime = moment(endTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + + startDateTime = startDate + 'T' + startTime; + endDateTime = endDate + 'T' + endTime; + } + + // Add new event to calendar + calendar.addEvent({ + id: uid(), + title: eventName.value, + description: eventDescription.value, + location: eventLocation.value, + start: startDateTime, + end: endDateTime, + allDay: allDayEvent + }); + calendar.render(); + + // Reset form for demo purposes only + form.reset(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Handle edit event + const handleEditEvent = () => { + // Update modal title + modalTitle.innerText = "Edit an Event"; + + modal.show(); + + // Select datepicker wrapper elements + const datepickerWrappers = form.querySelectorAll('[data-kt-calendar="datepicker"]'); + + // Handle all day toggle + const allDayToggle = form.querySelector('#kt_calendar_datepicker_allday'); + allDayToggle.addEventListener('click', e => { + if (e.target.checked) { + datepickerWrappers.forEach(dw => { + dw.classList.add('d-none'); + }); + } else { + endFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + datepickerWrappers.forEach(dw => { + dw.classList.remove('d-none'); + }); + } + }); + + populateForm(data); + + // Handle submit form + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + // Simulate form submission + setTimeout(function () { + // Simulate form submission + submitButton.removeAttribute('data-kt-indicator'); + + // Show popup confirmation + Swal.fire({ + text: "New event added to calendar!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + + // Remove old event + calendar.getEventById(data.id).remove(); + + // Detect if is all day event + let allDayEvent = false; + if (allDayToggle.checked) { allDayEvent = true; } + if (startTimeFlatpickr.selectedDates.length === 0) { allDayEvent = true; } + + // Merge date & time + var startDateTime = moment(startFlatpickr.selectedDates[0]).format(); + var endDateTime = moment(endFlatpickr.selectedDates[endFlatpickr.selectedDates.length - 1]).format(); + if (!allDayEvent) { + const startDate = moment(startFlatpickr.selectedDates[0]).format('YYYY-MM-DD'); + const endDate = startDate; + const startTime = moment(startTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + const endTime = moment(endTimeFlatpickr.selectedDates[0]).format('HH:mm:ss'); + + startDateTime = startDate + 'T' + startTime; + endDateTime = endDate + 'T' + endTime; + } + + // Add new event to calendar + calendar.addEvent({ + id: uid(), + title: eventName.value, + description: eventDescription.value, + location: eventLocation.value, + start: startDateTime, + end: endDateTime, + allDay: allDayEvent + }); + calendar.render(); + + // Reset form for demo purposes only + form.reset(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Handle view event + const handleViewEvent = () => { + viewModal.show(); + + // Detect all day event + var eventNameMod; + var startDateMod; + var endDateMod; + + // Generate labels + if (data.allDay) { + eventNameMod = 'All Day'; + startDateMod = moment(data.startDate).format('Do MMM, YYYY'); + endDateMod = moment(data.endDate).format('Do MMM, YYYY'); + } else { + eventNameMod = ''; + startDateMod = moment(data.startDate).format('Do MMM, YYYY - h:mm a'); + endDateMod = moment(data.endDate).format('Do MMM, YYYY - h:mm a'); + } + + // Populate view data + viewEventName.innerText = data.eventName; + viewAllDay.innerText = eventNameMod; + viewEventDescription.innerText = data.eventDescription ? data.eventDescription : '--'; + viewEventLocation.innerText = data.eventLocation ? data.eventLocation : '--'; + viewStartDate.innerText = startDateMod; + viewEndDate.innerText = endDateMod; + } + + // Handle delete event + const handleDeleteEvent = () => { + viewDeleteButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to delete this event?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + calendar.getEventById(data.id).remove(); + + viewModal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your event was not deleted!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Handle edit button + const handleEditButton = () => { + viewEditButton.addEventListener('click', e => { + e.preventDefault(); + + viewModal.hide(); + handleEditEvent(); + }); + } + + // Handle cancel button + const handleCancelButton = () => { + // Edit event modal cancel button + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Handle close button + const handleCloseButton = () => { + // Edit event modal close button + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + // Handle view button + const handleViewButton = () => { + const viewButton = document.querySelector('#kt_calendar_event_view_button'); + viewButton.addEventListener('click', e => { + e.preventDefault(); + + hidePopovers(); + handleViewEvent(); + }); + } + + // Helper functions + + // Reset form validator on modal close + const resetFormValidator = (element) => { + // Target modal hidden event --- For more info: https://getbootstrap.com/docs/5.0/components/modal/#events + element.addEventListener('hidden.bs.modal', e => { + if (validator) { + // Reset form validator. For more info: https://formvalidation.io/guide/api/reset-form + validator.resetForm(true); + } + }); + } + + // Populate form + const populateForm = () => { + eventName.value = data.eventName ? data.eventName : ''; + eventDescription.value = data.eventDescription ? data.eventDescription : ''; + eventLocation.value = data.eventLocation ? data.eventLocation : ''; + startFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + + // Handle null end dates + const endDate = data.endDate ? data.endDate : moment(data.startDate).format(); + endFlatpickr.setDate(endDate, true, 'Y-m-d'); + + const allDayToggle = form.querySelector('#kt_calendar_datepicker_allday'); + const datepickerWrappers = form.querySelectorAll('[data-kt-calendar="datepicker"]'); + if (data.allDay) { + allDayToggle.checked = true; + datepickerWrappers.forEach(dw => { + dw.classList.add('d-none'); + }); + } else { + startTimeFlatpickr.setDate(data.startDate, true, 'Y-m-d H:i'); + endTimeFlatpickr.setDate(data.endDate, true, 'Y-m-d H:i'); + endFlatpickr.setDate(data.startDate, true, 'Y-m-d'); + allDayToggle.checked = false; + datepickerWrappers.forEach(dw => { + dw.classList.remove('d-none'); + }); + } + } + + // Format FullCalendar reponses + const formatArgs = (res) => { + data.id = res.id; + data.eventName = res.title; + data.eventDescription = res.description; + data.eventLocation = res.location; + data.startDate = res.startStr; + data.endDate = res.endStr; + data.allDay = res.allDay; + } + + // Generate unique IDs for events + const uid = () => { + return Date.now().toString() + Math.floor(Math.random() * 1000).toString(); + } + + return { + // Public Functions + init: function () { + // Define variables + // Add event modal + const element = document.getElementById('kt_modal_add_event'); + form = element.querySelector('#kt_modal_add_event_form'); + eventName = form.querySelector('[name="calendar_event_name"]'); + eventDescription = form.querySelector('[name="calendar_event_description"]'); + eventLocation = form.querySelector('[name="calendar_event_location"]'); + startDatepicker = form.querySelector('#kt_calendar_datepicker_start_date'); + endDatepicker = form.querySelector('#kt_calendar_datepicker_end_date'); + startTimepicker = form.querySelector('#kt_calendar_datepicker_start_time'); + endTimepicker = form.querySelector('#kt_calendar_datepicker_end_time'); + addButton = document.querySelector('[data-kt-calendar="add"]'); + submitButton = form.querySelector('#kt_modal_add_event_submit'); + cancelButton = form.querySelector('#kt_modal_add_event_cancel'); + closeButton = element.querySelector('#kt_modal_add_event_close'); + modalTitle = form.querySelector('[data-kt-calendar="title"]'); + modal = new bootstrap.Modal(element); + + // View event modal + const viewElement = document.getElementById('kt_modal_view_event'); + viewModal = new bootstrap.Modal(viewElement); + viewEventName = viewElement.querySelector('[data-kt-calendar="event_name"]'); + viewAllDay = viewElement.querySelector('[data-kt-calendar="all_day"]'); + viewEventDescription = viewElement.querySelector('[data-kt-calendar="event_description"]'); + viewEventLocation = viewElement.querySelector('[data-kt-calendar="event_location"]'); + viewStartDate = viewElement.querySelector('[data-kt-calendar="event_start_date"]'); + viewEndDate = viewElement.querySelector('[data-kt-calendar="event_end_date"]'); + viewEditButton = viewElement.querySelector('#kt_modal_view_event_edit'); + viewDeleteButton = viewElement.querySelector('#kt_modal_view_event_delete'); + + initCalendarApp(); + initValidator(); + initDatepickers(); + handleEditButton(); + handleAddButton(); + handleDeleteEvent(); + handleCancelButton(); + handleCloseButton(); + resetFormValidator(element); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppCalendar.init(); +}); diff --git a/resources/assets/core/js/custom/apps/chat/chat.js b/resources/assets/core/js/custom/apps/chat/chat.js new file mode 100644 index 0000000..f591103 --- /dev/null +++ b/resources/assets/core/js/custom/apps/chat/chat.js @@ -0,0 +1,72 @@ +"use strict"; + +// Class definition +var KTAppChat = function () { + // Private functions + var handeSend = function (element) { + if (!element) { + return; + } + + // Handle send + KTUtil.on(element, '[data-kt-element="input"]', 'keydown', function(e) { + if (e.keyCode == 13) { + handeMessaging(element); + e.preventDefault(); + + return false; + } + }); + + KTUtil.on(element, '[data-kt-element="send"]', 'click', function(e) { + handeMessaging(element); + }); + } + + var handeMessaging = function(element) { + var messages = element.querySelector('[data-kt-element="messages"]'); + var input = element.querySelector('[data-kt-element="input"]'); + + if (input.value.length === 0 ) { + return; + } + + var messageOutTemplate = messages.querySelector('[data-kt-element="template-out"]'); + var messageInTemplate = messages.querySelector('[data-kt-element="template-in"]'); + var message; + + // Show example outgoing message + message = messageOutTemplate.cloneNode(true); + message.classList.remove('d-none'); + message.querySelector('[data-kt-element="message-text"]').innerText = input.value; + input.value = ''; + messages.appendChild(message); + messages.scrollTop = messages.scrollHeight; + + + setTimeout(function() { + // Show example incoming message + message = messageInTemplate.cloneNode(true); + message.classList.remove('d-none'); + message.querySelector('[data-kt-element="message-text"]').innerText = 'Thank you for your awesome support!'; + messages.appendChild(message); + messages.scrollTop = messages.scrollHeight; + }, 2000); + } + + // Public methods + return { + init: function(element) { + handeSend(element); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + // Init inline chat messenger + KTAppChat.init(document.querySelector('#kt_chat_messenger')); + + // Init drawer chat messenger + KTAppChat.init(document.querySelector('#kt_drawer_chat_messenger')); +}); diff --git a/resources/assets/core/js/custom/apps/inbox/compose.js b/resources/assets/core/js/custom/apps/inbox/compose.js new file mode 100644 index 0000000..3e218e5 --- /dev/null +++ b/resources/assets/core/js/custom/apps/inbox/compose.js @@ -0,0 +1,294 @@ +"use strict"; + +// Class definition +var KTAppInboxCompose = function () { + // Private functions + // Init reply form + const initForm = () => { + // Set variables + const form = document.querySelector('#kt_inbox_compose_form'); + const allTagify = form.querySelectorAll('[data-kt-inbox-form="tagify"]'); + + // Handle CC and BCC + handleCCandBCC(form); + + // Handle submit form + handleSubmit(form); + + // Init tagify + allTagify.forEach(tagify => { + initTagify(tagify); + }); + + // Init quill editor + initQuill(form); + + // Init dropzone + initDropzone(form); + } + + // Handle CC and BCC toggle + const handleCCandBCC = (el) => { + // Get elements + const ccElement = el.querySelector('[data-kt-inbox-form="cc"]'); + const ccButton = el.querySelector('[data-kt-inbox-form="cc_button"]'); + const ccClose = el.querySelector('[data-kt-inbox-form="cc_close"]'); + const bccElement = el.querySelector('[data-kt-inbox-form="bcc"]'); + const bccButton = el.querySelector('[data-kt-inbox-form="bcc_button"]'); + const bccClose = el.querySelector('[data-kt-inbox-form="bcc_close"]'); + + // Handle CC button click + ccButton.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.remove('d-none'); + ccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + ccClose.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.add('d-none'); + ccElement.classList.remove('d-flex'); + }); + + // Handle BCC button click + bccButton.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.remove('d-none'); + bccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + bccClose.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.add('d-none'); + bccElement.classList.remove('d-flex'); + }); + } + + // Handle submit form + const handleSubmit = (el) => { + const submitButton = el.querySelector('[data-kt-inbox-form="send"]'); + + // Handle button click event + submitButton.addEventListener("click", function () { + // Activate indicator + submitButton.setAttribute("data-kt-indicator", "on"); + + // Disable indicator after 3 seconds + setTimeout(function () { + submitButton.removeAttribute("data-kt-indicator"); + }, 3000); + }); + } + + // Init tagify + const initTagify = (el) => { + var inputElm = el; + + const usersList = [ + { value: 1, name: 'Emma Smith', avatar: 'avatars/300-6.jpg', email: 'e.smith@kpmg.com.au' }, + { value: 2, name: 'Max Smith', avatar: 'avatars/300-1.jpg', email: 'max@kt.com' }, + { value: 3, name: 'Sean Bean', avatar: 'avatars/300-5.jpg', email: 'sean@dellito.com' }, + { value: 4, name: 'Brian Cox', avatar: 'avatars/300-25.jpg', email: 'brian@exchange.com' }, + { value: 5, name: 'Francis Mitcham', avatar: 'avatars/300-9.jpg', email: 'f.mitcham@kpmg.com.au' }, + { value: 6, name: 'Dan Wilson', avatar: 'avatars/300-23.jpg', email: 'dam@consilting.com' }, + { value: 7, name: 'Ana Crown', avatar: 'avatars/300-12.jpg', email: 'ana.cf@limtel.com' }, + { value: 8, name: 'John Miller', avatar: 'avatars/300-13.jpg', email: 'miller@mapple.com' } + ]; + + function tagTemplate(tagData) { + return ` + + +
+
+ +
+ ${tagData.name} +
+
+ ` + } + + function suggestionItemTemplate(tagData) { + return ` +
+ + ${tagData.avatar ? ` +
+ +
` : '' + } + +
+ ${tagData.name} + ${tagData.email} +
+
+ ` + } + + // initialize Tagify on the above input node reference + var tagify = new Tagify(inputElm, { + tagTextProp: 'name', // very important since a custom template is used with this property as text. allows typing a "value" or a "name" to match input with whitelist + enforceWhitelist: true, + skipInvalid: true, // do not remporarily add invalid tags + dropdown: { + closeOnSelect: false, + enabled: 0, + classname: 'users-list', + searchKeys: ['name', 'email'] // very important to set by which keys to search for suggesttions when typing + }, + templates: { + tag: tagTemplate, + dropdownItem: suggestionItemTemplate + }, + whitelist: usersList + }) + + tagify.on('dropdown:show dropdown:updated', onDropdownShow) + tagify.on('dropdown:select', onSelectSuggestion) + + var addAllSuggestionsElm; + + function onDropdownShow(e) { + var dropdownContentElm = e.detail.tagify.DOM.dropdown.content; + + if (tagify.suggestedListItems.length > 1) { + addAllSuggestionsElm = getAddAllSuggestionsElm(); + + // insert "addAllSuggestionsElm" as the first element in the suggestions list + dropdownContentElm.insertBefore(addAllSuggestionsElm, dropdownContentElm.firstChild) + } + } + + function onSelectSuggestion(e) { + if (e.detail.elm == addAllSuggestionsElm) + tagify.dropdown.selectAll.call(tagify); + } + + // create a "add all" custom suggestion element every time the dropdown changes + function getAddAllSuggestionsElm() { + // suggestions items should be based on "dropdownItem" template + return tagify.parseTemplate('dropdownItem', [{ + class: "addAll", + name: "Add all", + email: tagify.settings.whitelist.reduce(function (remainingSuggestions, item) { + return tagify.isTagDuplicate(item.value) ? remainingSuggestions : remainingSuggestions + 1 + }, 0) + " Members" + }] + ) + } + } + + // Init quill editor + const initQuill = (el) => { + var quill = new Quill('#kt_inbox_form_editor', { + modules: { + toolbar: [ + [{ + header: [1, 2, false] + }], + ['bold', 'italic', 'underline'], + ['image', 'code-block'] + ] + }, + placeholder: 'Type your text here...', + theme: 'snow' // or 'bubble' + }); + + // Customize editor + const toolbar = el.querySelector('.ql-toolbar'); + + if (toolbar) { + const classes = ['px-5', 'border-top-0', 'border-start-0', 'border-end-0']; + toolbar.classList.add(...classes); + } + } + + // Init dropzone + const initDropzone = (el) => { + // set the dropzone container id + const id = '[data-kt-inbox-form="dropzone"]'; + const dropzone = el.querySelector(id); + const uploadButton = el.querySelector('[data-kt-inbox-form="dropzone_upload"]'); + + // set the preview element template + var previewNode = dropzone.querySelector(".dropzone-item"); + previewNode.id = ""; + var previewTemplate = previewNode.parentNode.innerHTML; + previewNode.parentNode.removeChild(previewNode); + + var myDropzone = new Dropzone(id, { // Make the whole body a dropzone + url: "https://preview.keenthemes.com/api/dropzone/void.php", // Set the url for your upload script location + parallelUploads: 20, + maxFilesize: 1, // Max filesize in MB + previewTemplate: previewTemplate, + previewsContainer: id + " .dropzone-items", // Define the container to display the previews + clickable: uploadButton // Define the element that should be used as click trigger to select files. + }); + + + myDropzone.on("addedfile", function (file) { + // Hookup the start button + const dropzoneItems = dropzone.querySelectorAll('.dropzone-item'); + dropzoneItems.forEach(dropzoneItem => { + dropzoneItem.style.display = ''; + }); + }); + + // Update the total progress bar + myDropzone.on("totaluploadprogress", function (progress) { + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.width = progress + "%"; + }); + }); + + myDropzone.on("sending", function (file) { + // Show the total progress bar when upload starts + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.opacity = "1"; + }); + }); + + // Hide the total progress bar when nothing"s uploading anymore + myDropzone.on("complete", function (progress) { + const progressBars = dropzone.querySelectorAll('.dz-complete'); + + setTimeout(function () { + progressBars.forEach(progressBar => { + progressBar.querySelector('.progress-bar').style.opacity = "0"; + progressBar.querySelector('.progress').style.opacity = "0"; + }); + }, 300); + }); + } + + + // Public methods + return { + init: function () { + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInboxCompose.init(); +}); diff --git a/resources/assets/core/js/custom/apps/inbox/listing.js b/resources/assets/core/js/custom/apps/inbox/listing.js new file mode 100644 index 0000000..4a6412c --- /dev/null +++ b/resources/assets/core/js/custom/apps/inbox/listing.js @@ -0,0 +1,58 @@ +"use strict"; + +// Class definition +var KTAppInboxListing = function () { + var table; + var datatable; + + // Private functions + var initDatatable = function () { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + // 'paging': false, + // 'pageLength': false, + }); + + datatable.on('draw', function () { + handleDatatableFooter(); + }); + } + + // Handle datatable footer spacings + var handleDatatableFooter = () => { + const footerElement = document.querySelector('#kt_inbox_listing_wrapper > .row'); + const spacingClasses = ['px-9', 'pt-3', 'pb-5']; + footerElement.classList.add(...spacingClasses); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-inbox-listing-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + + // Public methods + return { + init: function () { + table = document.querySelector('#kt_inbox_listing'); + + if (!table) { + return; + } + + initDatatable(); + handleSearchDatatable(); + handleDatatableFooter(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInboxListing.init(); +}); diff --git a/resources/assets/core/js/custom/apps/inbox/reply.js b/resources/assets/core/js/custom/apps/inbox/reply.js new file mode 100644 index 0000000..d5c7c2a --- /dev/null +++ b/resources/assets/core/js/custom/apps/inbox/reply.js @@ -0,0 +1,323 @@ +"use strict"; + +// Class definition +var KTAppInboxReply = function () { + + // Private functions + const handlePreviewText = () => { + // Get all messages + const accordions = document.querySelectorAll('[data-kt-inbox-message="message_wrapper"]'); + accordions.forEach(accordion => { + // Set variables + const header = accordion.querySelector('[data-kt-inbox-message="header"]'); + const previewText = accordion.querySelector('[data-kt-inbox-message="preview"]'); + const details = accordion.querySelector('[data-kt-inbox-message="details"]'); + const message = accordion.querySelector('[data-kt-inbox-message="message"]'); + + // Init bootstrap collapse -- more info: https://getbootstrap.com/docs/5.1/components/collapse/#via-javascript + const collapse = new bootstrap.Collapse(message, { toggle: false }); + + // Handle header click action + header.addEventListener('click', e => { + // Return if KTMenu or buttons are clicked + if (e.target.closest('[data-kt-menu-trigger="click"]') || e.target.closest('.btn')) { + return; + } else { + previewText.classList.toggle('d-none'); + details.classList.toggle('d-none'); + collapse.toggle(); + } + }); + }); + } + + // Init reply form + const initForm = () => { + // Set variables + const form = document.querySelector('#kt_inbox_reply_form'); + const allTagify = form.querySelectorAll('[data-kt-inbox-form="tagify"]'); + + // Handle CC and BCC + handleCCandBCC(form); + + // Handle submit form + handleSubmit(form); + + // Init tagify + allTagify.forEach(tagify => { + initTagify(tagify); + }); + + // Init quill editor + initQuill(form); + + // Init dropzone + initDropzone(form); + } + + // Handle CC and BCC toggle + const handleCCandBCC = (el) => { + // Get elements + const ccElement = el.querySelector('[data-kt-inbox-form="cc"]'); + const ccButton = el.querySelector('[data-kt-inbox-form="cc_button"]'); + const ccClose = el.querySelector('[data-kt-inbox-form="cc_close"]'); + const bccElement = el.querySelector('[data-kt-inbox-form="bcc"]'); + const bccButton = el.querySelector('[data-kt-inbox-form="bcc_button"]'); + const bccClose = el.querySelector('[data-kt-inbox-form="bcc_close"]'); + + // Handle CC button click + ccButton.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.remove('d-none'); + ccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + ccClose.addEventListener('click', e => { + e.preventDefault(); + + ccElement.classList.add('d-none'); + ccElement.classList.remove('d-flex'); + }); + + // Handle BCC button click + bccButton.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.remove('d-none'); + bccElement.classList.add('d-flex'); + }); + + // Handle CC close button click + bccClose.addEventListener('click', e => { + e.preventDefault(); + + bccElement.classList.add('d-none'); + bccElement.classList.remove('d-flex'); + }); + } + + // Handle submit form + const handleSubmit = (el) => { + const submitButton = el.querySelector('[data-kt-inbox-form="send"]'); + + // Handle button click event + submitButton.addEventListener("click", function () { + // Activate indicator + submitButton.setAttribute("data-kt-indicator", "on"); + + // Disable indicator after 3 seconds + setTimeout(function () { + submitButton.removeAttribute("data-kt-indicator"); + }, 3000); + }); + } + + // Init tagify + const initTagify = (el) => { + var inputElm = el; + + const usersList = [ + { value: 1, name: 'Emma Smith', avatar: 'avatars/300-6.jpg', email: 'e.smith@kpmg.com.au' }, + { value: 2, name: 'Max Smith', avatar: 'avatars/300-1.jpg', email: 'max@kt.com' }, + { value: 3, name: 'Sean Bean', avatar: 'avatars/300-5.jpg', email: 'sean@dellito.com' }, + { value: 4, name: 'Brian Cox', avatar: 'avatars/300-25.jpg', email: 'brian@exchange.com' }, + { value: 5, name: 'Francis Mitcham', avatar: 'avatars/300-9.jpg', email: 'f.mitcham@kpmg.com.au' }, + { value: 6, name: 'Dan Wilson', avatar: 'avatars/300-23.jpg', email: 'dam@consilting.com' }, + { value: 7, name: 'Ana Crown', avatar: 'avatars/300-12.jpg', email: 'ana.cf@limtel.com' }, + { value: 8, name: 'John Miller', avatar: 'avatars/300-13.jpg', email: 'miller@mapple.com' } + ]; + + function tagTemplate(tagData) { + return ` + + +
+
+ +
+ ${tagData.name} +
+
+ ` + } + + function suggestionItemTemplate(tagData) { + return ` +
+ + ${tagData.avatar ? ` +
+ +
` : '' + } + +
+ ${tagData.name} + ${tagData.email} +
+
+ ` + } + + // initialize Tagify on the above input node reference + var tagify = new Tagify(inputElm, { + tagTextProp: 'name', // very important since a custom template is used with this property as text. allows typing a "value" or a "name" to match input with whitelist + enforceWhitelist: true, + skipInvalid: true, // do not remporarily add invalid tags + dropdown: { + closeOnSelect: false, + enabled: 0, + classname: 'users-list', + searchKeys: ['name', 'email'] // very important to set by which keys to search for suggesttions when typing + }, + templates: { + tag: tagTemplate, + dropdownItem: suggestionItemTemplate + }, + whitelist: usersList + }) + + tagify.on('dropdown:show dropdown:updated', onDropdownShow) + tagify.on('dropdown:select', onSelectSuggestion) + + var addAllSuggestionsElm; + + function onDropdownShow(e) { + var dropdownContentElm = e.detail.tagify.DOM.dropdown.content; + + if (tagify.suggestedListItems.length > 1) { + addAllSuggestionsElm = getAddAllSuggestionsElm(); + + // insert "addAllSuggestionsElm" as the first element in the suggestions list + dropdownContentElm.insertBefore(addAllSuggestionsElm, dropdownContentElm.firstChild) + } + } + + function onSelectSuggestion(e) { + if (e.detail.elm == addAllSuggestionsElm) + tagify.dropdown.selectAll.call(tagify); + } + + // create a "add all" custom suggestion element every time the dropdown changes + function getAddAllSuggestionsElm() { + // suggestions items should be based on "dropdownItem" template + return tagify.parseTemplate('dropdownItem', [{ + class: "addAll", + name: "Add all", + email: tagify.settings.whitelist.reduce(function (remainingSuggestions, item) { + return tagify.isTagDuplicate(item.value) ? remainingSuggestions : remainingSuggestions + 1 + }, 0) + " Members" + }] + ) + } + } + + // Init quill editor + const initQuill = (el) => { + var quill = new Quill('#kt_inbox_form_editor', { + modules: { + toolbar: [ + [{ + header: [1, 2, false] + }], + ['bold', 'italic', 'underline'], + ['image', 'code-block'] + ] + }, + placeholder: 'Type your text here...', + theme: 'snow' // or 'bubble' + }); + + // Customize editor + const toolbar = el.querySelector('.ql-toolbar'); + + if (toolbar) { + const classes = ['px-5', 'border-top-0', 'border-start-0', 'border-end-0']; + toolbar.classList.add(...classes); + } + } + + // Init dropzone + const initDropzone = (el) => { + // set the dropzone container id + const id = '[data-kt-inbox-form="dropzone"]'; + const dropzone = el.querySelector(id); + const uploadButton = el.querySelector('[data-kt-inbox-form="dropzone_upload"]'); + + // set the preview element template + var previewNode = dropzone.querySelector(".dropzone-item"); + previewNode.id = ""; + var previewTemplate = previewNode.parentNode.innerHTML; + previewNode.parentNode.removeChild(previewNode); + + var myDropzone = new Dropzone(id, { // Make the whole body a dropzone + url: "https://preview.keenthemes.com/api/dropzone/void.php", // Set the url for your upload script location + parallelUploads: 20, + maxFilesize: 1, // Max filesize in MB + previewTemplate: previewTemplate, + previewsContainer: id + " .dropzone-items", // Define the container to display the previews + clickable: uploadButton // Define the element that should be used as click trigger to select files. + }); + + + myDropzone.on("addedfile", function (file) { + // Hookup the start button + const dropzoneItems = dropzone.querySelectorAll('.dropzone-item'); + dropzoneItems.forEach(dropzoneItem => { + dropzoneItem.style.display = ''; + }); + }); + + // Update the total progress bar + myDropzone.on("totaluploadprogress", function (progress) { + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.width = progress + "%"; + }); + }); + + myDropzone.on("sending", function (file) { + // Show the total progress bar when upload starts + const progressBars = dropzone.querySelectorAll('.progress-bar'); + progressBars.forEach(progressBar => { + progressBar.style.opacity = "1"; + }); + }); + + // Hide the total progress bar when nothing"s uploading anymore + myDropzone.on("complete", function (progress) { + const progressBars = dropzone.querySelectorAll('.dz-complete'); + + setTimeout(function () { + progressBars.forEach(progressBar => { + progressBar.querySelector('.progress-bar').style.opacity = "0"; + progressBar.querySelector('.progress').style.opacity = "0"; + }); + }, 300); + }); + } + + + // Public methods + return { + init: function () { + handlePreviewText(); + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInboxReply.init(); +}); diff --git a/resources/assets/core/js/custom/apps/invoices/create.js b/resources/assets/core/js/custom/apps/invoices/create.js new file mode 100644 index 0000000..1c61b67 --- /dev/null +++ b/resources/assets/core/js/custom/apps/invoices/create.js @@ -0,0 +1,111 @@ +"use strict"; + +// Class definition +var KTAppInvoicesCreate = function () { + var form; + + // Private functions + var updateTotal = function() { + var items = [].slice.call(form.querySelectorAll('[data-kt-element="items"] [data-kt-element="item"]')); + var grandTotal = 0; + + var format = wNumb({ + //prefix: '$ ', + decimals: 2, + thousand: ',' + }); + + items.map(function (item) { + var quantity = item.querySelector('[data-kt-element="quantity"]'); + var price = item.querySelector('[data-kt-element="price"]'); + + var priceValue = format.from(price.value); + priceValue = (!priceValue || priceValue < 0) ? 0 : priceValue; + + var quantityValue = parseInt(quantity.value); + quantityValue = (!quantityValue || quantityValue < 0) ? 1 : quantityValue; + + price.value = format.to(priceValue); + quantity.value = quantityValue; + + item.querySelector('[data-kt-element="total"]').innerText = format.to(priceValue * quantityValue); + + grandTotal += priceValue * quantityValue; + }); + + form.querySelector('[data-kt-element="sub-total"]').innerText = format.to(grandTotal); + form.querySelector('[data-kt-element="grand-total"]').innerText = format.to(grandTotal); + } + + var handleEmptyState = function() { + if (form.querySelectorAll('[data-kt-element="items"] [data-kt-element="item"]').length === 0) { + var item = form.querySelector('[data-kt-element="empty-template"] tr').cloneNode(true); + form.querySelector('[data-kt-element="items"] tbody').appendChild(item); + } else { + KTUtil.remove(form.querySelector('[data-kt-element="items"] [data-kt-element="empty"]')); + } + } + + var handeForm = function (element) { + // Add item + form.querySelector('[data-kt-element="items"] [data-kt-element="add-item"]').addEventListener('click', function(e) { + e.preventDefault(); + + var item = form.querySelector('[data-kt-element="item-template"] tr').cloneNode(true); + + form.querySelector('[data-kt-element="items"] tbody').appendChild(item); + + handleEmptyState(); + updateTotal(); + }); + + // Remove item + KTUtil.on(form, '[data-kt-element="items"] [data-kt-element="remove-item"]', 'click', function(e) { + e.preventDefault(); + + KTUtil.remove(this.closest('[data-kt-element="item"]')); + + handleEmptyState(); + updateTotal(); + }); + + // Handle price and quantity changes + KTUtil.on(form, '[data-kt-element="items"] [data-kt-element="quantity"], [data-kt-element="items"] [data-kt-element="price"]', 'change', function(e) { + e.preventDefault(); + + updateTotal(); + }); + } + + var initForm = function(element) { + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var invoiceDate = $(form.querySelector('[name="invoice_date"]')); + invoiceDate.flatpickr({ + enableTime: false, + dateFormat: "d, M Y", + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="invoice_due_date"]')); + dueDate.flatpickr({ + enableTime: false, + dateFormat: "d, M Y", + }); + } + + // Public methods + return { + init: function(element) { + form = document.querySelector('#kt_invoice_form'); + + handeForm(); + initForm(); + updateTotal(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTAppInvoicesCreate.init(); +}); diff --git a/resources/assets/core/js/custom/apps/subscriptions/add/advanced.js b/resources/assets/core/js/custom/apps/subscriptions/add/advanced.js new file mode 100644 index 0000000..bf2c886 --- /dev/null +++ b/resources/assets/core/js/custom/apps/subscriptions/add/advanced.js @@ -0,0 +1,126 @@ +"use strict"; + +var KTSubscriptionsAdvanced = function () { + // Shared variables + var table; + var datatable; + + var initCustomFieldsDatatable = function () { + // Define variables + const addButton = document.getElementById('kt_create_new_custom_fields_add'); + + // Duplicate input fields + const fieldName = table.querySelector('tbody tr td:first-child').innerHTML; + const fieldValue = table.querySelector('tbody tr td:nth-child(2)').innerHTML; + const deleteButton = table.querySelector('tbody tr td:last-child').innerHTML; + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'ordering': false, + 'paging': false, + "lengthChange": false + }); + + // Define datatable row node + var rowNode; + + // Handle add button + addButton.addEventListener('click', function (e) { + e.preventDefault(); + + rowNode = datatable.row.add([ + fieldName, + fieldValue, + deleteButton + ]).draw().node(); + + // Add custom class to last column -- more info: https://datatables.net/forums/discussion/22341/row-add-cell-class + $(rowNode).find('td').eq(2).addClass('text-end'); + + // Re-calculate index + initCustomFieldRowIndex(); + }); + } + + // Handle row index count + var initCustomFieldRowIndex = function() { + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach((tr, index) => { + // add index number to input names & id + const fieldNameInput = tr.querySelector('td:first-child input'); + const fieldValueInput = tr.querySelector('td:nth-child(2) input'); + const fieldNameLabel = fieldNameInput.getAttribute('id'); + const fieldValueLabel = fieldValueInput.getAttribute('id'); + + fieldNameInput.setAttribute('name', fieldNameLabel + '-' + index); + fieldValueInput.setAttribute('name', fieldValueLabel + '-' + index); + }); + } + + // Delete product + var deleteCustomField = function() { + KTUtil.on(table, '[data-kt-action="field_remove"]', 'click', function(e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete this field ?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted it!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "It was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }) + } + }); + }); + } + + return { + init: function () { + table = document.getElementById('kt_create_new_custom_fields'); + + initCustomFieldsDatatable(); + initCustomFieldRowIndex(); + deleteCustomField(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsAdvanced.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/subscriptions/add/customer-select.js b/resources/assets/core/js/custom/apps/subscriptions/add/customer-select.js new file mode 100644 index 0000000..3718907 --- /dev/null +++ b/resources/assets/core/js/custom/apps/subscriptions/add/customer-select.js @@ -0,0 +1,85 @@ +"use strict"; + +// Class definition +var KTModalCustomerSelect = function() { + // Private variables + var element; + var suggestionsElement; + var resultsElement; + var wrapperElement; + var emptyElement; + var searchObject; + + var modal; + + // Private functions + var processs = function(search) { + var timeout = setTimeout(function() { + var number = KTUtil.getRandomInt(1, 6); + + // Hide recently viewed + suggestionsElement.classList.add('d-none'); + + if (number === 3) { + // Hide results + resultsElement.classList.add('d-none'); + // Show empty message + emptyElement.classList.remove('d-none'); + } else { + // Show results + resultsElement.classList.remove('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Complete search + search.complete(); + }, 1500); + } + + var clear = function(search) { + // Show recently viewed + suggestionsElement.classList.remove('d-none'); + // Hide results + resultsElement.classList.add('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Public methods + return { + init: function() { + // Elements + element = document.querySelector('#kt_modal_customer_search_handler'); + modal = new bootstrap.Modal(document.querySelector('#kt_modal_customer_search')); + + if (!element) { + return; + } + + wrapperElement = element.querySelector('[data-kt-search-element="wrapper"]'); + suggestionsElement = element.querySelector('[data-kt-search-element="suggestions"]'); + resultsElement = element.querySelector('[data-kt-search-element="results"]'); + emptyElement = element.querySelector('[data-kt-search-element="empty"]'); + + // Initialize search handler + searchObject = new KTSearch(element); + + // Search handler + searchObject.on('kt.search.process', processs); + + // Clear handler + searchObject.on('kt.search.clear', clear); + + // Handle select + KTUtil.on(element, '[data-kt-search-element="customer"]', 'click', function() { + modal.hide(); + }); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalCustomerSelect.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/subscriptions/add/products.js b/resources/assets/core/js/custom/apps/subscriptions/add/products.js new file mode 100644 index 0000000..2f33c38 --- /dev/null +++ b/resources/assets/core/js/custom/apps/subscriptions/add/products.js @@ -0,0 +1,157 @@ +"use strict"; + +var KTSubscriptionsProducts = function () { + // Shared variables + var table; + var datatable; + var modalEl; + var modal; + + var initDatatable = function() { + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'ordering': false, + 'paging': false, + "lengthChange": false + }); + } + + // Delete product + var deleteProduct = function() { + KTUtil.on(table, '[data-kt-action="product_remove"]', 'click', function(e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const productName = parent.querySelectorAll('td')[0].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + productName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + productName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Modal handlers + var addProduct = function() { + // Select modal buttons + const closeButton = modalEl.querySelector('#kt_modal_add_product_close'); + const cancelButton = modalEl.querySelector('#kt_modal_add_product_cancel'); + const submitButton = modalEl.querySelector('#kt_modal_add_product_submit'); + + // Cancel button action + cancelButton.addEventListener('click', function(e){ + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Add customer button handler + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Check all radio buttons + var radio = modalEl.querySelector('input[type="radio"]:checked'); + + // Define datatable row node + var rowNode; + + if (radio && radio.checked === true) { + rowNode = datatable.row.add( [ + radio.getAttribute('data-kt-product-name'), + '1', + radio.getAttribute('data-kt-product-price') + ' / ' + radio.getAttribute('data-kt-product-frequency'), + table.querySelector('tbody tr td:last-child').innerHTML + ]).draw().node(); + + // Add custom class to last column -- more info: https://datatables.net/forums/discussion/22341/row-add-cell-class + $( rowNode ).find('td').eq(3).addClass('text-end'); + } + + modal.hide(); // Remove modal + }); + } + + return { + init: function () { + modalEl = document.getElementById('kt_modal_add_product'); + + // Select modal -- more info on Bootstrap modal: https://getbootstrap.com/docs/5.0/components/modal/ + modal = new bootstrap.Modal(modalEl); + + table = document.querySelector('#kt_subscription_products_table'); + + initDatatable(); + deleteProduct(); + addProduct(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsProducts.init(); +}); diff --git a/resources/assets/core/js/custom/apps/subscriptions/list/export.js b/resources/assets/core/js/custom/apps/subscriptions/list/export.js new file mode 100644 index 0000000..9f5949f --- /dev/null +++ b/resources/assets/core/js/custom/apps/subscriptions/list/export.js @@ -0,0 +1,189 @@ +"use strict"; + +// Class definition +var KTSubscriptionsExport = function () { + var element; + var submitButton; + var cancelButton; + var closeButton; + var validator; + var form; + var modal; + + // Init form inputs + var handleForm = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'date': { + validators: { + notEmpty: { + message: 'Date range is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "Customer list has been successfully exported!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + var initForm = function () { + const datepicker = form.querySelector("[name=date]"); + + // Handle datepicker range -- For more info on flatpickr plugin, please visit: https://flatpickr.js.org/ + $(datepicker).flatpickr({ + altInput: true, + altFormat: "F j, Y", + dateFormat: "Y-m-d", + mode: "range" + }); + } + + return { + // Public functions + init: function () { + // Elements + element = document.querySelector('#kt_subscriptions_export_modal'); + modal = new bootstrap.Modal(element); + + form = document.querySelector('#kt_subscriptions_export_form'); + submitButton = form.querySelector('#kt_subscriptions_export_submit'); + cancelButton = form.querySelector('#kt_subscriptions_export_cancel'); + closeButton = element.querySelector('#kt_subscriptions_export_close'); + + handleForm(); + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsExport.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/subscriptions/list/list.js b/resources/assets/core/js/custom/apps/subscriptions/list/list.js new file mode 100644 index 0000000..2dee53d --- /dev/null +++ b/resources/assets/core/js/custom/apps/subscriptions/list/list.js @@ -0,0 +1,277 @@ +"use strict"; + +var KTSubscriptionsList = function () { + // Define shared variables + var table; + var datatable; + var toolbarBase; + var toolbarSelected; + var selectedCount; + + // Private functions + var initDatatable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[5].innerHTML, "DD MMM YYYY, LT").format(); // select date from 4th column in table + dateRow[5].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 6 }, // Disable ordering on column 6 (actions) + ] + }); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleRowDeletion(); + toggleToolbars(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearch = function () { + const filterSearch = document.querySelector('[data-kt-subscription-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Filter Datatable + var handleFilter = function () { + // Select filter options + const filterForm = document.querySelector('[data-kt-subscription-table-filter="form"]'); + const filterButton = filterForm.querySelector('[data-kt-subscription-table-filter="filter"]'); + const resetButton = filterForm.querySelector('[data-kt-subscription-table-filter="reset"]'); + const selectOptions = filterForm.querySelectorAll('select'); + + // Filter datatable on submit + filterButton.addEventListener('click', function () { + var filterString = ''; + + // Get filter values + selectOptions.forEach((item, index) => { + if (item.value && item.value !== '') { + if (index !== 0) { + filterString += ' '; + } + + // Build filter value options + filterString += item.value; + } + }); + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search(filterString).draw(); + }); + + // Reset datatable + resetButton.addEventListener('click', function () { + // Reset filter form + selectOptions.forEach((item, index) => { + // Reset Select2 dropdown --- official docs reference: https://select2.org/programmatic-control/add-select-clear-items + $(item).val(null).trigger('change'); + }); + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search('').draw(); + }); + } + + // Delete subscirption + var handleRowDeletion = function () { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-subscriptions-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const customerName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + customerName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + customerName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }).then(function () { + // Detect checked checkboxes + toggleToolbars(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + toolbarBase = document.querySelector('[data-kt-subscription-table-toolbar="base"]'); + toolbarSelected = document.querySelector('[data-kt-subscription-table-toolbar="selected"]'); + selectedCount = document.querySelector('[data-kt-subscription-table-select="selected_count"]'); + const deleteSelected = document.querySelector('[data-kt-subscription-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }).then(function () { + toggleToolbars(); // Detect checked checkboxes + initToggleToolbar(); // Re-init toolbar to recalculate checkboxes + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + return { + // Public functions + init: function () { + table = document.getElementById('kt_subscriptions_table'); + + if (!table) { + return; + } + + initDatatable(); + initToggleToolbar(); + handleSearch(); + handleRowDeletion(); + handleFilter(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSubscriptionsList.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/support-center/tickets/create.js b/resources/assets/core/js/custom/apps/support-center/tickets/create.js new file mode 100644 index 0000000..a11a649 --- /dev/null +++ b/resources/assets/core/js/custom/apps/support-center/tickets/create.js @@ -0,0 +1,219 @@ +"use strict"; + +// Class definition +var KTModalNewTicket = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Ticket attachments + // For more info about Dropzone plugin visit: https://www.dropzonejs.com/#usage + var myDropzone = new Dropzone("#kt_modal_create_ticket_attachments", { + url: "https://keenthemes.com/scripts/void.php", // Set the url for your upload script location + paramName: "file", // The name that will be used to transfer the file + maxFiles: 10, + maxFilesize: 10, // MB + addRemoveLinks: true, + accept: function(file, done) { + if (file.name == "justinbieber.jpg") { + done("Naha, you don't."); + } else { + done(); + } + } + }); + + // Due date. For more info, please visit the official plugin site: https://flatpickr.js.org/ + var dueDate = $(form.querySelector('[name="due_date"]')); + dueDate.flatpickr({ + enableTime: true, + dateFormat: "d, M Y, H:i", + }); + + // Ticket user. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="user"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('user'); + }); + + // Ticket status. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="status"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('status'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + subject: { + validators: { + notEmpty: { + message: 'Ticket subject is required' + } + } + }, + user: { + validators: { + notEmpty: { + message: 'Ticket user is required' + } + } + }, + due_date: { + validators: { + notEmpty: { + message: 'Ticket due date is required' + } + } + }, + description: { + validators: { + notEmpty: { + message: 'Target description is required' + } + } + }, + 'notifications[]': { + validators: { + notEmpty: { + message: 'Please select at least one notifications method' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_new_ticket'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_new_ticket_form'); + submitButton = document.getElementById('kt_modal_new_ticket_submit'); + cancelButton = document.getElementById('kt_modal_new_ticket_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalNewTicket.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/permissions/add-permission.js b/resources/assets/core/js/custom/apps/user-management/permissions/add-permission.js new file mode 100644 index 0000000..f9a1368 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/permissions/add-permission.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersAddPermission = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_permission'); + const form = element.querySelector('#kt_modal_add_permission_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddPermission = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'permission_name': { + validators: { + notEmpty: { + message: 'Permission name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-permissions-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-permissions-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-permissions-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddPermission(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddPermission.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/permissions/list.js b/resources/assets/core/js/custom/apps/user-management/permissions/list.js new file mode 100644 index 0000000..02b3fef --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/permissions/list.js @@ -0,0 +1,117 @@ +"use strict"; + +// Class definition +var KTUsersPermissionsList = function () { + // Shared variables + var datatable; + var table; + + // Init add schedule modal + var initPermissionsList = () => { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[2].innerHTML, "DD MMM YYYY, LT").format(); // select date from 2nd column in table + dateRow[2].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + 'columnDefs': [ + { orderable: false, targets: 1 }, // Disable ordering on column 1 (assigned) + { orderable: false, targets: 3 }, // Disable ordering on column 3 (actions) + ] + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-permissions-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete user + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-permissions-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get permission name + const permissionName = parent.querySelectorAll('td')[0].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + permissionName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + permissionName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + + return { + // Public functions + init: function () { + table = document.querySelector('#kt_permissions_table'); + + if (!table) { + return; + } + + initPermissionsList(); + handleSearchDatatable(); + handleDeleteRows(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersPermissionsList.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/permissions/update-permission.js b/resources/assets/core/js/custom/apps/user-management/permissions/update-permission.js new file mode 100644 index 0000000..c589428 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/permissions/update-permission.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePermission = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_permission'); + const form = element.querySelector('#kt_modal_update_permission_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePermission = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'permission_name': { + validators: { + notEmpty: { + message: 'Permission name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-permissions-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-permissions-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-permissions-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdatePermission(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePermission.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/roles/list/add.js b/resources/assets/core/js/custom/apps/user-management/roles/list/add.js new file mode 100644 index 0000000..7b86b8f --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/roles/list/add.js @@ -0,0 +1,185 @@ +"use strict"; + +// Class definition +var KTUsersAddRole = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_role'); + const form = element.querySelector('#kt_modal_add_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddRole = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'role_name': { + validators: { + notEmpty: { + message: 'Role name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-roles-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-roles-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-roles-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + + } + + // Select all handler + const handleSelectAll = () =>{ + // Define variables + const selectAll = form.querySelector('#kt_roles_select_all'); + const allCheckboxes = form.querySelectorAll('[type="checkbox"]'); + + // Handle check state + selectAll.addEventListener('change', e => { + + // Apply check state to all checkboxes + allCheckboxes.forEach(c => { + c.checked = e.target.checked; + }); + }); + } + + return { + // Public functions + init: function () { + initAddRole(); + handleSelectAll(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddRole.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/roles/list/update-role.js b/resources/assets/core/js/custom/apps/user-management/roles/list/update-role.js new file mode 100644 index 0000000..6b00118 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/roles/list/update-role.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePermissions = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_role'); + const form = element.querySelector('#kt_modal_update_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePermissions = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'role_name': { + validators: { + notEmpty: { + message: 'Role name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-roles-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-roles-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-roles-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Select all handler + const handleSelectAll = () => { + // Define variables + const selectAll = form.querySelector('#kt_roles_select_all'); + const allCheckboxes = form.querySelectorAll('[type="checkbox"]'); + + // Handle check state + selectAll.addEventListener('change', e => { + + // Apply check state to all checkboxes + allCheckboxes.forEach(c => { + c.checked = e.target.checked; + }); + }); + } + + return { + // Public functions + init: function () { + initUpdatePermissions(); + handleSelectAll(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePermissions.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/roles/view/update-role.js b/resources/assets/core/js/custom/apps/user-management/roles/view/update-role.js new file mode 100644 index 0000000..6b00118 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/roles/view/update-role.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePermissions = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_role'); + const form = element.querySelector('#kt_modal_update_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePermissions = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'role_name': { + validators: { + notEmpty: { + message: 'Role name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-roles-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-roles-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-roles-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Select all handler + const handleSelectAll = () => { + // Define variables + const selectAll = form.querySelector('#kt_roles_select_all'); + const allCheckboxes = form.querySelectorAll('[type="checkbox"]'); + + // Handle check state + selectAll.addEventListener('change', e => { + + // Apply check state to all checkboxes + allCheckboxes.forEach(c => { + c.checked = e.target.checked; + }); + }); + } + + return { + // Public functions + init: function () { + initUpdatePermissions(); + handleSelectAll(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePermissions.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/roles/view/view.js b/resources/assets/core/js/custom/apps/user-management/roles/view/view.js new file mode 100644 index 0000000..732b982 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/roles/view/view.js @@ -0,0 +1,225 @@ +"use strict"; + +// Class definition +var KTUsersViewRole = function () { + // Shared variables + var datatable; + var table; + + // Init add schedule modal + var initViewRole = () => { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const realDate = moment(dateRow[3].innerHTML, "DD MMM YYYY, LT").format(); // select date from 5th column in table + dateRow[3].setAttribute('data-order', realDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 5, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 4 }, // Disable ordering on column 4 (actions) + ] + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-roles-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Delete user + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-roles-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get customer name + const userName = parent.querySelectorAll('td')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + userName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + userName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + const deleteSelected = document.querySelector('[data-kt-view-roles-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }).then(function(){ + toggleToolbars(); // Detect checked checkboxes + initToggleToolbar(); // Re-init toolbar to recalculate checkboxes + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Define variables + const toolbarBase = document.querySelector('[data-kt-view-roles-table-toolbar="base"]'); + const toolbarSelected = document.querySelector('[data-kt-view-roles-table-toolbar="selected"]'); + const selectedCount = document.querySelector('[data-kt-view-roles-table-select="selected_count"]'); + + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + return { + // Public functions + init: function () { + table = document.querySelector('#kt_roles_view_table'); + + if (!table) { + return; + } + + initViewRole(); + handleSearchDatatable(); + handleDeleteRows(); + initToggleToolbar(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersViewRole.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/list/add.js b/resources/assets/core/js/custom/apps/user-management/users/list/add.js new file mode 100644 index 0000000..1b75a8c --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/list/add.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTUsersAddUser = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_user'); + const form = element.querySelector('#kt_modal_add_user_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddUser = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'user_name': { + validators: { + notEmpty: { + message: 'Full name is required' + } + } + }, + 'user_email': { + validators: { + notEmpty: { + message: 'Valid email address is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + initAddUser(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddUser.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/list/export-users.js b/resources/assets/core/js/custom/apps/user-management/users/list/export-users.js new file mode 100644 index 0000000..0de7636 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/list/export-users.js @@ -0,0 +1,170 @@ +"use strict"; + +// Class definition +var KTModalExportUsers = function () { + // Shared variables + const element = document.getElementById('kt_modal_export_users'); + const form = element.querySelector('#kt_modal_export_users_form'); + const modal = new bootstrap.Modal(element); + + // Init form inputs + var initForm = function () { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'format': { + validators: { + notEmpty: { + message: 'File format is required' + } + } + }, + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable submit button whilst loading + submitButton.disabled = true; + + setTimeout(function () { + submitButton.removeAttribute('data-kt-indicator'); + + Swal.fire({ + text: "User list has been successfully exported!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + + // Enable submit button after loading + submitButton.disabled = false; + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', function (e) { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + initForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalExportUsers.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/list/table.js b/resources/assets/core/js/custom/apps/user-management/users/list/table.js new file mode 100644 index 0000000..87e9ce3 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/list/table.js @@ -0,0 +1,315 @@ +"use strict"; + +var KTUsersList = function () { + // Define shared variables + var table = document.getElementById('kt_table_users'); + var datatable; + var toolbarBase; + var toolbarSelected; + var selectedCount; + + // Private functions + var initUserTable = function () { + // Set date data order + const tableRows = table.querySelectorAll('tbody tr'); + + tableRows.forEach(row => { + const dateRow = row.querySelectorAll('td'); + const lastLogin = dateRow[3].innerText.toLowerCase(); // Get last login time + let timeCount = 0; + let timeFormat = 'minutes'; + + // Determine date & time format -- add more formats when necessary + if (lastLogin.includes('yesterday')) { + timeCount = 1; + timeFormat = 'days'; + } else if (lastLogin.includes('mins')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'minutes'; + } else if (lastLogin.includes('hours')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'hours'; + } else if (lastLogin.includes('days')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'days'; + } else if (lastLogin.includes('weeks')) { + timeCount = parseInt(lastLogin.replace(/\D/g, '')); + timeFormat = 'weeks'; + } + + // Subtract date/time from today -- more info on moment datetime subtraction: https://momentjs.com/docs/#/durations/subtract/ + const realDate = moment().subtract(timeCount, timeFormat).format(); + + // Insert real date to last login attribute + dateRow[3].setAttribute('data-order', realDate); + + // Set real date for joined column + const joinedDate = moment(dateRow[5].innerHTML, "DD MMM YYYY, LT").format(); // select date from 5th column in table + dateRow[5].setAttribute('data-order', joinedDate); + }); + + // Init datatable --- more info on datatables: https://datatables.net/manual/ + datatable = $(table).DataTable({ + "info": false, + 'order': [], + "pageLength": 10, + "lengthChange": false, + 'columnDefs': [ + { orderable: false, targets: 0 }, // Disable ordering on column 0 (checkbox) + { orderable: false, targets: 6 }, // Disable ordering on column 6 (actions) + ] + }); + + // Re-init functions on every table re-draw -- more info: https://datatables.net/reference/event/draw + datatable.on('draw', function () { + initToggleToolbar(); + handleDeleteRows(); + toggleToolbars(); + }); + } + + // Search Datatable --- official docs reference: https://datatables.net/reference/api/search() + var handleSearchDatatable = () => { + const filterSearch = document.querySelector('[data-kt-user-table-filter="search"]'); + filterSearch.addEventListener('keyup', function (e) { + datatable.search(e.target.value).draw(); + }); + } + + // Filter Datatable + var handleFilterDatatable = () => { + // Select filter options + const filterForm = document.querySelector('[data-kt-user-table-filter="form"]'); + const filterButton = filterForm.querySelector('[data-kt-user-table-filter="filter"]'); + const selectOptions = filterForm.querySelectorAll('select'); + + // Filter datatable on submit + filterButton.addEventListener('click', function () { + var filterString = ''; + + // Get filter values + selectOptions.forEach((item, index) => { + if (item.value && item.value !== '') { + if (index !== 0) { + filterString += ' '; + } + + // Build filter value options + filterString += item.value; + } + }); + + // Filter datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search(filterString).draw(); + }); + } + + // Reset Filter + var handleResetForm = () => { + // Select reset button + const resetButton = document.querySelector('[data-kt-user-table-filter="reset"]'); + + // Reset datatable + resetButton.addEventListener('click', function () { + // Select filter options + const filterForm = document.querySelector('[data-kt-user-table-filter="form"]'); + const selectOptions = filterForm.querySelectorAll('select'); + + // Reset select2 values -- more info: https://select2.org/programmatic-control/add-select-clear-items + selectOptions.forEach(select => { + $(select).val('').trigger('change'); + }); + + // Reset datatable --- official docs reference: https://datatables.net/reference/api/search() + datatable.search('').draw(); + }); + } + + + // Delete subscirption + var handleDeleteRows = () => { + // Select all delete buttons + const deleteButtons = table.querySelectorAll('[data-kt-users-table-filter="delete_row"]'); + + deleteButtons.forEach(d => { + // Delete button on click + d.addEventListener('click', function (e) { + e.preventDefault(); + + // Select parent row + const parent = e.target.closest('tr'); + + // Get user name + const userName = parent.querySelectorAll('td')[1].querySelectorAll('a')[1].innerText; + + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete " + userName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted " + userName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove current row + datatable.row($(parent)).remove().draw(); + }).then(function () { + // Detect checked checkboxes + toggleToolbars(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: customerName + " was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }) + }); + } + + // Init toggle toolbar + var initToggleToolbar = () => { + // Toggle selected action toolbar + // Select all checkboxes + const checkboxes = table.querySelectorAll('[type="checkbox"]'); + + // Select elements + toolbarBase = document.querySelector('[data-kt-user-table-toolbar="base"]'); + toolbarSelected = document.querySelector('[data-kt-user-table-toolbar="selected"]'); + selectedCount = document.querySelector('[data-kt-user-table-select="selected_count"]'); + const deleteSelected = document.querySelector('[data-kt-user-table-select="delete_selected"]'); + + // Toggle delete selected toolbar + checkboxes.forEach(c => { + // Checkbox on click event + c.addEventListener('click', function () { + setTimeout(function () { + toggleToolbars(); + }, 50); + }); + }); + + // Deleted selected rows + deleteSelected.addEventListener('click', function () { + // SweetAlert2 pop up --- official docs reference: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you want to delete selected customers?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, delete!", + cancelButtonText: "No, cancel", + customClass: { + confirmButton: "btn fw-bold btn-danger", + cancelButton: "btn fw-bold btn-active-light-primary" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have deleted all selected customers!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }).then(function () { + // Remove all selected customers + checkboxes.forEach(c => { + if (c.checked) { + datatable.row($(c.closest('tbody tr'))).remove().draw(); + } + }); + + // Remove header checked box + const headerCheckbox = table.querySelectorAll('[type="checkbox"]')[0]; + headerCheckbox.checked = false; + }).then(function () { + toggleToolbars(); // Detect checked checkboxes + initToggleToolbar(); // Re-init toolbar to recalculate checkboxes + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Selected customers was not deleted.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn fw-bold btn-primary", + } + }); + } + }); + }); + } + + // Toggle toolbars + const toggleToolbars = () => { + // Select refreshed checkbox DOM elements + const allCheckboxes = table.querySelectorAll('tbody [type="checkbox"]'); + + // Detect checkboxes state & count + let checkedState = false; + let count = 0; + + // Count checked boxes + allCheckboxes.forEach(c => { + if (c.checked) { + checkedState = true; + count++; + } + }); + + // Toggle toolbars + if (checkedState) { + selectedCount.innerHTML = count; + toolbarBase.classList.add('d-none'); + toolbarSelected.classList.remove('d-none'); + } else { + toolbarBase.classList.remove('d-none'); + toolbarSelected.classList.add('d-none'); + } + } + + return { + // Public functions + init: function () { + if (!table) { + return; + } + + initUserTable(); + initToggleToolbar(); + handleSearchDatatable(); + handleResetForm(); + handleDeleteRows(); + handleFilterDatatable(); + + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersList.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/add-auth-app.js b/resources/assets/core/js/custom/apps/user-management/users/view/add-auth-app.js new file mode 100644 index 0000000..ca71185 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/add-auth-app.js @@ -0,0 +1,81 @@ +"use strict"; + +// Class definition +var KTUsersAddAuthApp = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_auth_app'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddAuthApp = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + } + + // QR code to text code swapper + var initCodeSwap = () => { + const qrCode = element.querySelector('[ data-kt-add-auth-action="qr-code"]'); + const textCode = element.querySelector('[ data-kt-add-auth-action="text-code"]'); + const qrCodeButton = element.querySelector('[ data-kt-add-auth-action="qr-code-button"]'); + const textCodeButton = element.querySelector('[ data-kt-add-auth-action="text-code-button"]'); + const qrCodeLabel = element.querySelector('[ data-kt-add-auth-action="qr-code-label"]'); + const textCodeLabel = element.querySelector('[ data-kt-add-auth-action="text-code-label"]'); + + const toggleClass = () =>{ + qrCode.classList.toggle('d-none'); + qrCodeButton.classList.toggle('d-none'); + qrCodeLabel.classList.toggle('d-none'); + textCode.classList.toggle('d-none'); + textCodeButton.classList.toggle('d-none'); + textCodeLabel.classList.toggle('d-none'); + } + + // Swap to text code handler + textCodeButton.addEventListener('click', e =>{ + e.preventDefault(); + + toggleClass(); + }); + + qrCodeButton.addEventListener('click', e =>{ + e.preventDefault(); + + toggleClass(); + }); + } + + return { + // Public functions + init: function () { + initAddAuthApp(); + initCodeSwap(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddAuthApp.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/add-one-time-password.js b/resources/assets/core/js/custom/apps/user-management/users/view/add-one-time-password.js new file mode 100644 index 0000000..af78deb --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/add-one-time-password.js @@ -0,0 +1,173 @@ +"use strict"; + +// Class definition +var KTUsersAddOneTimePassword = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_one_time_password'); + const form = element.querySelector('#kt_modal_add_one_time_password_form'); + const modal = new bootstrap.Modal(element); + + // Init one time password modal + var initAddOneTimePassword = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'otp_mobile_number': { + validators: { + notEmpty: { + message: 'Valid mobile number is required' + } + } + }, + 'otp_confirm_password': { + validators: { + notEmpty: { + message: 'Password confirmation is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to close?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, close it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + modal.hide(); // Hide modal + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddOneTimePassword(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddOneTimePassword.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/add-schedule.js b/resources/assets/core/js/custom/apps/user-management/users/view/add-schedule.js new file mode 100644 index 0000000..7e91b55 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/add-schedule.js @@ -0,0 +1,223 @@ +"use strict"; + +// Class definition +var KTUsersAddSchedule = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_schedule'); + const form = element.querySelector('#kt_modal_add_schedule_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initAddSchedule = () => { + + // Init flatpickr -- for more info: https://flatpickr.js.org/ + $("#kt_modal_add_schedule_datepicker").flatpickr({ + enableTime: true, + dateFormat: "Y-m-d H:i", + }); + + // Init tagify -- for more info: https://yaireo.github.io/tagify/ + const tagifyInput = form.querySelector('#kt_modal_add_schedule_tagify'); + new Tagify(tagifyInput, { + whitelist: ["sean@dellito.com", "brian@exchange.com", "mikaela@pexcom.com", "f.mitcham@kpmg.com.au", "olivia@corpmail.com", "owen.neil@gmail.com", "dam@consilting.com", "emma@intenso.com", "ana.cf@limtel.com", "robert@benko.com", "lucy.m@fentech.com", "ethan@loop.com.au"], + maxTags: 10, + dropdown: { + maxItems: 20, // <- mixumum allowed rendered suggestions + classname: "tagify__inline__suggestions", // <- custom classname for this dropdown, so it could be targeted + enabled: 0, // <- show suggestions on focus + closeOnSelect: false // <- do not hide the suggestions dropdown once an item has been selected + } + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'event_datetime': { + validators: { + notEmpty: { + message: 'Event date & time is required' + } + } + }, + 'event_name': { + validators: { + notEmpty: { + message: 'Event name is required' + } + } + }, + 'event_org': { + validators: { + notEmpty: { + message: 'Event organiser is required' + } + } + }, + 'event_invitees': { + validators: { + notEmpty: { + message: 'Event invitees is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="event_invitees"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('event_invitees'); + }); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function() { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initAddSchedule(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddSchedule.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/add-task.js b/resources/assets/core/js/custom/apps/user-management/users/view/add-task.js new file mode 100644 index 0000000..2986672 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/add-task.js @@ -0,0 +1,324 @@ +"use strict"; + +// Class definition +var KTUsersAddTask = function () { + // Shared variables + const element = document.getElementById('kt_modal_add_task'); + const form = element.querySelector('#kt_modal_add_task_form'); + const modal = new bootstrap.Modal(element); + + // Init add task modal + var initAddTask = () => { + + // Init flatpickr -- for more info: https://flatpickr.js.org/ + $("#kt_modal_add_task_datepicker").flatpickr({ + dateFormat: "Y-m-d", + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'task_duedate': { + validators: { + notEmpty: { + message: 'Task due date is required' + } + } + }, + 'task_name': { + validators: { + notEmpty: { + message: 'Task name is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Init update task status + var initUpdateTaskStatus = () => { + const allTaskMenus = document.querySelectorAll('[data-kt-menu-id="kt-users-tasks"]'); + + allTaskMenus.forEach(el => { + const resetButton = el.querySelector('[data-kt-users-update-task-status="reset"]'); + const submitButton = el.querySelector('[data-kt-users-update-task-status="submit"]'); + const taskForm = el.querySelector('[data-kt-menu-id="kt-users-tasks-form"]'); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + taskForm, + { + fields: { + 'task_status': { + validators: { + notEmpty: { + message: 'Task due date is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Revalidate country field. For more info, plase visit the official plugin site: https://select2.org/ + $(taskForm.querySelector('[name="task_status"]')).on('change', function () { + // Revalidate the field when an option is chosen + validator.revalidateField('task_status'); + }); + + // Reset action handler + resetButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to reset?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, reset it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + taskForm.reset(); // Reset form + el.hide(); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form was not reset!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit action handler + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + el.hide(); + } + }); + + //taskForm.submit(); // Submit form + }, 2000); + } else { + // Show popup warning. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function(){ + //el.show(); + }); + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + initAddTask(); + initUpdateTaskStatus(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersAddTask.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/update-details.js b/resources/assets/core/js/custom/apps/user-management/users/view/update-details.js new file mode 100644 index 0000000..17c2c66 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/update-details.js @@ -0,0 +1,132 @@ +"use strict"; + +// Class definition +var KTUsersUpdateDetails = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_details'); + const form = element.querySelector('#kt_modal_update_user_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateDetails = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + } + + return { + // Public functions + init: function () { + initUpdateDetails(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateDetails.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/update-email.js b/resources/assets/core/js/custom/apps/user-management/users/view/update-email.js new file mode 100644 index 0000000..cd8773c --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/update-email.js @@ -0,0 +1,166 @@ +"use strict"; + +// Class definition +var KTUsersUpdateEmail = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_email'); + const form = element.querySelector('#kt_modal_update_email_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateEmail = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'profile_email': { + validators: { + notEmpty: { + message: 'Email address is required' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdateEmail(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateEmail.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/update-password.js b/resources/assets/core/js/custom/apps/user-management/users/view/update-password.js new file mode 100644 index 0000000..9110a89 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/update-password.js @@ -0,0 +1,194 @@ +"use strict"; + +// Class definition +var KTUsersUpdatePassword = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_password'); + const form = element.querySelector('#kt_modal_update_password_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdatePassword = () => { + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + { + fields: { + 'current_password': { + validators: { + notEmpty: { + message: 'Current password is required' + } + } + }, + 'new_password': { + validators: { + notEmpty: { + message: 'The password is required' + }, + callback: { + message: 'Please enter valid password', + callback: function (input) { + if (input.value.length > 0) { + return validatePassword(); + } + } + } + } + }, + 'confirm_password': { + validators: { + notEmpty: { + message: 'The password confirmation is required' + }, + identical: { + compare: function () { + return form.querySelector('[name="new_password"]').value; + }, + message: 'The password and its confirm are not the same' + } + } + }, + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } + }); + } + }); + } + + return { + // Public functions + init: function () { + initUpdatePassword(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdatePassword.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/update-role.js b/resources/assets/core/js/custom/apps/user-management/users/view/update-role.js new file mode 100644 index 0000000..a7e7589 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/update-role.js @@ -0,0 +1,132 @@ +"use strict"; + +// Class definition +var KTUsersUpdateRole = function () { + // Shared variables + const element = document.getElementById('kt_modal_update_role'); + const form = element.querySelector('#kt_modal_update_role_form'); + const modal = new bootstrap.Modal(element); + + // Init add schedule modal + var initUpdateRole = () => { + + // Close button handler + const closeButton = element.querySelector('[data-kt-users-modal-action="close"]'); + closeButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Cancel button handler + const cancelButton = element.querySelector('[data-kt-users-modal-action="cancel"]'); + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + + // Submit button handler + const submitButton = element.querySelector('[data-kt-users-modal-action="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + } + + return { + // Public functions + init: function () { + initUpdateRole(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersUpdateRole.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/apps/user-management/users/view/view.js b/resources/assets/core/js/custom/apps/user-management/users/view/view.js new file mode 100644 index 0000000..7a50ff2 --- /dev/null +++ b/resources/assets/core/js/custom/apps/user-management/users/view/view.js @@ -0,0 +1,234 @@ +"use strict"; + +// Class definition +var KTUsersViewMain = function () { + + // Init login session button + var initLoginSession = () => { + const button = document.getElementById('kt_modal_sign_out_sesions'); + + button.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like sign out all sessions?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, sign out!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have signed out all sessions!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your sessions are still preserved!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + + // Init sign out single user + var initSignOutUser = () => { + const signOutButtons = document.querySelectorAll('[data-kt-users-sign-out="single_user"]'); + + signOutButtons.forEach(button => { + button.addEventListener('click', e => { + e.preventDefault(); + + const deviceName = button.closest('tr').querySelectorAll('td')[1].innerText; + + Swal.fire({ + text: "Are you sure you would like sign out " + deviceName + "?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, sign out!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have signed out " + deviceName + "!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }).then(function(){ + button.closest('tr').remove(); + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: deviceName + "'s session is still preserved!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + }); + + + } + + // Delete two step authentication handler + const initDeleteTwoStep = () => { + const deleteButton = document.getElementById('kt_users_delete_two_step'); + + deleteButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like remove this two-step authentication?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, remove it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + Swal.fire({ + text: "You have removed this two-step authentication!.", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your two-step authentication is still valid!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }) + } + + // Email preference form handler + const initEmailPreferenceForm = () => { + // Define variables + const form = document.getElementById('kt_users_email_notification_form'); + const submitButton = form.querySelector('#kt_users_email_notification_submit'); + const cancelButton = form.querySelector('#kt_users_email_notification_cancel'); + + // Submit action handler + submitButton.addEventListener('click', e => { + e.preventDefault(); + + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + + //form.submit(); // Submit form + }, 2000); + }); + + cancelButton.addEventListener('click', e => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + + return { + // Public functions + init: function () { + initLoginSession(); + initSignOutUser(); + initDeleteTwoStep(); + initEmailPreferenceForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTUsersViewMain.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/pages/pricing/general.js b/resources/assets/core/js/custom/pages/pricing/general.js new file mode 100644 index 0000000..d1ca24d --- /dev/null +++ b/resources/assets/core/js/custom/pages/pricing/general.js @@ -0,0 +1,57 @@ +"use strict"; + +// Class definition +var KTPricingGeneral = function () { + // Private variables + var element; + var planPeriodMonthButton; + var planPeriodAnnualButton; + + var changePlanPrices = function(type) { + var items = [].slice.call(element.querySelectorAll('[data-kt-plan-price-month]')); + + items.map(function (item) { + var monthPrice = item.getAttribute('data-kt-plan-price-month'); + var annualPrice = item.getAttribute('data-kt-plan-price-annual'); + + if ( type === 'month' ) { + item.innerHTML = monthPrice; + } else if ( type === 'annual' ) { + item.innerHTML = annualPrice; + } + }); + } + + var handlePlanPeriodSelection = function(e) { + + // Handle period change + planPeriodMonthButton.addEventListener('click', function (e) { + e.preventDefault(); + + changePlanPrices('month'); + }); + + planPeriodAnnualButton.addEventListener('click', function (e) { + e.preventDefault(); + + changePlanPrices('annual'); + }); + } + + // Public methods + return { + init: function () { + element = document.querySelector('#kt_pricing'); + planPeriodMonthButton = element.querySelector('[data-kt-plan="month"]'); + planPeriodAnnualButton = element.querySelector('[data-kt-plan="annual"]'); + + // Handlers + handlePlanPeriodSelection(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTPricingGeneral.init(); +}); diff --git a/resources/assets/core/js/custom/pages/user-profile/followers.js b/resources/assets/core/js/custom/pages/user-profile/followers.js new file mode 100644 index 0000000..65b73b4 --- /dev/null +++ b/resources/assets/core/js/custom/pages/user-profile/followers.js @@ -0,0 +1,49 @@ +"use strict"; + +// Class definition +var KTProfileFollowers = function () { + // init variables + var showMoreButton = document.getElementById('kt_followers_show_more_button'); + var showMoreCards = document.getElementById('kt_followers_show_more_cards'); + + // Private functions + var handleShowMore = function () { + // Show more click + showMoreButton.addEventListener('click', function (e) { + showMoreButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + showMoreButton.disabled = true; + + setTimeout(function() { + // Hide loading indication + showMoreButton.removeAttribute('data-kt-indicator'); + + // Enable button + showMoreButton.disabled = false; + + // Hide button + showMoreButton.classList.add('d-none'); + + // Show card + showMoreCards.classList.remove('d-none'); + + // Scroll to card + KTUtil.scrollTo(showMoreCards, 200); + }, 2000); + }); + } + + // Public methods + return { + init: function () { + handleShowMore(); + } + } +}(); + + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTProfileFollowers.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/utilities/modals/bidding.js b/resources/assets/core/js/custom/utilities/modals/bidding.js new file mode 100644 index 0000000..25bf3ec --- /dev/null +++ b/resources/assets/core/js/custom/utilities/modals/bidding.js @@ -0,0 +1,264 @@ +"use strict"; + +// Class definition +var KTModalBidding = function () { + // Shared variables + var element; + var form; + var modal; + + // Private functions + const initForm = () => { + // Dynamically create validation non-empty rule + const requiredFields = form.querySelectorAll('.required'); + var detectedField; + var validationFields = { + fields: {}, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + + // Detect required fields + requiredFields.forEach(el => { + const input = el.closest('.fv-row').querySelector('input'); + if (input) { + detectedField = input; + } + + const textarea = el.closest('.fv-row').querySelector('textarea'); + if (textarea) { + detectedField = textarea; + } + + const select = el.closest('.fv-row').querySelector('select'); + if (select) { + detectedField = select; + } + + // Add validation rule + const name = detectedField.getAttribute('name'); + validationFields.fields[name] = { + validators: { + notEmpty: { + message: el.innerText + ' is required' + } + } + } + }); + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + var validator = FormValidation.formValidation( + form, + validationFields + ); + + // Submit button handler + const submitButton = form.querySelector('[data-kt-modal-action-type="submit"]'); + submitButton.addEventListener('click', function (e) { + // Prevent default button action + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + // Simulate form submission. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + setTimeout(function () { + // Remove loading indication + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + // Show popup confirmation + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function () { + //form.submit(); // Submit form + form.reset(); + modal.hide(); + }); + }, 2000); + } else { + // Show popup error + Swal.fire({ + text: "Oops! There are some error(s) detected.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + } + + // Init Select2 template options + const initSelect2Templates = () => { + const elements = form.querySelectorAll('[data-kt-modal-bidding-type] select'); + + if (!elements) { + return; + } + + // Format options + const format = (item) => { + if (!item.id) { + return item.text; + } + + var url = 'assets/media/' + item.element.getAttribute('data-kt-bidding-modal-option-icon'); + var img = $("", { + class: "rounded-circle me-2", + width: 26, + src: url + }); + var span = $("", { + text: " " + item.text + }); + span.prepend(img); + return span; + } + + elements.forEach(el => { + // Init Select2 --- more info: https://select2.org/ + $(el).select2({ + minimumResultsForSearch: Infinity, + templateResult: function (item) { + return format(item); + } + }); + }); + } + + // Handle bid options + const handleBidOptions = () => { + const options = form.querySelectorAll('[data-kt-modal-bidding="option"]'); + const inputEl = form.querySelector('[name="bid_amount"]'); + options.forEach(option => { + option.addEventListener('click', e => { + e.preventDefault(); + + inputEl.value = e.target.innerText; + }); + }); + } + + // Handle currency selector + const handleCurrencySelector = () => { + const element = form.querySelector('.form-select[name="currency_type"]'); + + // Select2 event listener + $(element).on('select2:select', function (e) { + const value = e.params.data; + swapCurrency(value); + }); + + const swapCurrency = (target) => { + console.log(target); + const currencies = form.querySelectorAll('[data-kt-modal-bidding-type]'); + currencies.forEach(currency => { + currency.classList.add('d-none'); + + if (currency.getAttribute('data-kt-modal-bidding-type') === target.id) { + currency.classList.remove('d-none'); + } + }); + } + } + + // Handle cancel modal + const handleCancelAction = () => { + const cancelButton = element.querySelector('[data-kt-modal-action-type="cancel"]'); + const closeButton = element.querySelector('[data-kt-modal-action-type="close"]'); + cancelButton.addEventListener('click', e => { + cancelAction(e); + }); + + closeButton.addEventListener('click', e => { + cancelAction(e); + }); + + const cancelAction = (e) => { + e.preventDefault(); + + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + } + } + + + // Public methods + return { + init: function () { + // Elements + element = document.querySelector('#kt_modal_bidding'); + form = document.getElementById('kt_modal_bidding_form'); + modal = new bootstrap.Modal(element); + + if (!form) { + return; + } + + initForm(); + initSelect2Templates(); + handleBidOptions(); + handleCurrencySelector(); + handleCancelAction(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalBidding.init(); +}); diff --git a/resources/assets/core/js/custom/utilities/modals/create-account.js b/resources/assets/core/js/custom/utilities/modals/create-account.js new file mode 100644 index 0000000..4908578 --- /dev/null +++ b/resources/assets/core/js/custom/utilities/modals/create-account.js @@ -0,0 +1,363 @@ +"use strict"; + +// Class definition +var KTCreateAccount = function () { + // Elements + var modal; + var modalEl; + + var stepper; + var form; + var formSubmitButton; + var formContinueButton; + + // Variables + var stepperObj; + var validations = []; + + // Private Functions + var initStepper = function () { + // Initialize Stepper + stepperObj = new KTStepper(stepper); + + // Stepper change event + stepperObj.on('kt.stepper.changed', function (stepper) { + if (stepperObj.getCurrentStepIndex() === 4) { + formSubmitButton.classList.remove('d-none'); + formSubmitButton.classList.add('d-inline-block'); + formContinueButton.classList.add('d-none'); + } else if (stepperObj.getCurrentStepIndex() === 5) { + formSubmitButton.classList.add('d-none'); + formContinueButton.classList.add('d-none'); + } else { + formSubmitButton.classList.remove('d-inline-block'); + formSubmitButton.classList.remove('d-none'); + formContinueButton.classList.remove('d-none'); + } + }); + + // Validation before going to next page + stepperObj.on('kt.stepper.next', function (stepper) { + console.log('stepper.next'); + + // Validate form before change stepper step + var validator = validations[stepper.getCurrentStepIndex() - 1]; // get validator for currnt step + + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + stepper.goNext(); + + KTUtil.scrollTop(); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + KTUtil.scrollTop(); + }); + } + }); + } else { + stepper.goNext(); + + KTUtil.scrollTop(); + } + }); + + // Prev event + stepperObj.on('kt.stepper.previous', function (stepper) { + console.log('stepper.previous'); + + stepper.goPrevious(); + KTUtil.scrollTop(); + }); + } + + var handleForm = function() { + formSubmitButton.addEventListener('click', function (e) { + // Validate form before change stepper step + var validator = validations[3]; // get validator for last form + + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Prevent default button action + e.preventDefault(); + + // Disable button to avoid multiple click + formSubmitButton.disabled = true; + + // Show loading indication + formSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Simulate form submission + setTimeout(function() { + // Hide loading indication + formSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + formSubmitButton.disabled = false; + + stepperObj.goNext(); + //KTUtil.scrollTop(); + }, 2000); + } else { + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-light" + } + }).then(function () { + KTUtil.scrollTop(); + }); + } + }); + }); + + // Expiry month. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_month"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[3].revalidateField('card_expiry_month'); + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="card_expiry_year"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[3].revalidateField('card_expiry_year'); + }); + + // Expiry year. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="business_type"]')).on('change', function() { + // Revalidate the field when an option is chosen + validations[2].revalidateField('business_type'); + }); + } + + var initValidation = function () { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + // Step 1 + validations.push(FormValidation.formValidation( + form, + { + fields: { + account_type: { + validators: { + notEmpty: { + message: 'Account type is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 2 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'account_team_size': { + validators: { + notEmpty: { + message: 'Time size is required' + } + } + }, + 'account_name': { + validators: { + notEmpty: { + message: 'Account name is required' + } + } + }, + 'account_plan': { + validators: { + notEmpty: { + message: 'Account plan is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 3 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'business_name': { + validators: { + notEmpty: { + message: 'Busines name is required' + } + } + }, + 'business_descriptor': { + validators: { + notEmpty: { + message: 'Busines descriptor is required' + } + } + }, + 'business_type': { + validators: { + notEmpty: { + message: 'Busines type is required' + } + } + }, + 'business_description': { + validators: { + notEmpty: { + message: 'Busines description is required' + } + } + }, + 'business_email': { + validators: { + notEmpty: { + message: 'Busines email is required' + }, + emailAddress: { + message: 'The value is not a valid email address' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + + // Step 4 + validations.push(FormValidation.formValidation( + form, + { + fields: { + 'card_name': { + validators: { + notEmpty: { + message: 'Name on card is required' + } + } + }, + 'card_number': { + validators: { + notEmpty: { + message: 'Card member is required' + }, + creditCard: { + message: 'Card number is not valid' + } + } + }, + 'card_expiry_month': { + validators: { + notEmpty: { + message: 'Month is required' + } + } + }, + 'card_expiry_year': { + validators: { + notEmpty: { + message: 'Year is required' + } + } + }, + 'card_cvv': { + validators: { + notEmpty: { + message: 'CVV is required' + }, + digits: { + message: 'CVV must contain only digits' + }, + stringLength: { + min: 3, + max: 4, + message: 'CVV must contain 3 to 4 digits only' + } + } + } + }, + + plugins: { + trigger: new FormValidation.plugins.Trigger(), + // Bootstrap Framework Integration + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + )); + } + + var handleFormSubmit = function() { + + } + + return { + // Public Functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_create_account'); + if (modalEl) { + modal = new bootstrap.Modal(modalEl); + } + + stepper = document.querySelector('#kt_create_account_stepper'); + form = stepper.querySelector('#kt_create_account_form'); + formSubmitButton = stepper.querySelector('[data-kt-stepper-action="submit"]'); + formContinueButton = stepper.querySelector('[data-kt-stepper-action="next"]'); + + initStepper(); + initValidation(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTCreateAccount.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/utilities/modals/create-api-key.js b/resources/assets/core/js/custom/utilities/modals/create-api-key.js new file mode 100644 index 0000000..0db049a --- /dev/null +++ b/resources/assets/core/js/custom/utilities/modals/create-api-key.js @@ -0,0 +1,183 @@ +"use strict"; + +// Class definition +var KTModalCreateApiKey = function () { + var submitButton; + var cancelButton; + var validator; + var form; + var modal; + var modalEl; + + // Init form inputs + var initForm = function() { + // Team assign. For more info, plase visit the official plugin site: https://select2.org/ + $(form.querySelector('[name="category"]')).on('change', function() { + // Revalidate the field when an option is chosen + validator.revalidateField('category'); + }); + } + + // Handle form validation and submittion + var handleForm = function() { + // Stepper custom navigation + + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + validator = FormValidation.formValidation( + form, + { + fields: { + 'name': { + validators: { + notEmpty: { + message: 'API name is required' + } + } + }, + 'description': { + validators: { + notEmpty: { + message: 'Description is required' + } + } + }, + 'category': { + validators: { + notEmpty: { + message: 'Country is required' + } + } + }, + 'method': { + validators: { + notEmpty: { + message: 'API method is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Action buttons + submitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (validator) { + validator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + submitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + submitButton.disabled = true; + + setTimeout(function() { + submitButton.removeAttribute('data-kt-indicator'); + + // Enable button + submitButton.disabled = false; + + Swal.fire({ + text: "Form has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modal.hide(); + } + }); + + //form.submit(); // Submit form + }, 2000); + } else { + // Show error popuo. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + cancelButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Show confirmation popup. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Are you sure you would like to cancel?", + icon: "warning", + showCancelButton: true, + buttonsStyling: false, + confirmButtonText: "Yes, cancel it!", + cancelButtonText: "No, return", + customClass: { + confirmButton: "btn btn-primary", + cancelButton: "btn btn-active-light" + } + }).then(function (result) { + if (result.value) { + form.reset(); // Reset form + modal.hide(); // Hide modal + } else if (result.dismiss === 'cancel') { + // Show success message. + Swal.fire({ + text: "Your form has not been cancelled!.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary", + } + }); + } + }); + }); + } + + return { + // Public functions + init: function () { + // Elements + modalEl = document.querySelector('#kt_modal_create_api_key'); + + if (!modalEl) { + return; + } + + modal = new bootstrap.Modal(modalEl); + + form = document.querySelector('#kt_modal_create_api_key_form'); + submitButton = document.getElementById('kt_modal_create_api_key_submit'); + cancelButton = document.getElementById('kt_modal_create_api_key_cancel'); + + initForm(); + handleForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalCreateApiKey.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/utilities/modals/create-project.js b/resources/assets/core/js/custom/utilities/modals/create-project.js new file mode 100644 index 0000000..e69de29 diff --git a/resources/assets/core/js/custom/utilities/modals/two-factor-authentication.js b/resources/assets/core/js/custom/utilities/modals/two-factor-authentication.js new file mode 100644 index 0000000..29488f2 --- /dev/null +++ b/resources/assets/core/js/custom/utilities/modals/two-factor-authentication.js @@ -0,0 +1,266 @@ +"use strict"; + +// Class definition +var KTModalTwoFactorAuthentication = function () { + // Private variables + var modal; + var modalObject; + + var optionsWrapper; + var optionsSelectButton; + + var smsWrapper; + var smsForm; + var smsSubmitButton; + var smsCancelButton; + var smsValidator; + + var appsWrapper; + var appsForm; + var appsSubmitButton; + var appsCancelButton; + var appsValidator; + + // Private functions + var handleOptionsForm = function() { + // Handle options selection + optionsSelectButton.addEventListener('click', function (e) { + e.preventDefault(); + var option = optionsWrapper.querySelector('[name="auth_option"]:checked'); + + optionsWrapper.classList.add('d-none'); + + if (option.value == 'sms') { + smsWrapper.classList.remove('d-none'); + } else { + appsWrapper.classList.remove('d-none'); + } + }); + } + + var showOptionsForm = function() { + optionsWrapper.classList.remove('d-none'); + smsWrapper.classList.add('d-none'); + appsWrapper.classList.add('d-none'); + } + + var handleSMSForm = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + smsValidator = FormValidation.formValidation( + smsForm, + { + fields: { + 'mobile': { + validators: { + notEmpty: { + message: 'Mobile no is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle apps submition + smsSubmitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (smsValidator) { + smsValidator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + // Show loading indication + smsSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + smsSubmitButton.disabled = true; + + // Simulate ajax process + setTimeout(function() { + // Remove loading indication + smsSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + smsSubmitButton.disabled = false; + + // Show success message. For more info check the plugin's official documentation: https://sweetalert2.github.io/ + Swal.fire({ + text: "Mobile number has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modalObject.hide(); + showOptionsForm(); + } + }); + + //smsForm.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Handle sms cancelation + smsCancelButton.addEventListener('click', function (e) { + e.preventDefault(); + var option = optionsWrapper.querySelector('[name="auth_option"]:checked'); + + optionsWrapper.classList.remove('d-none'); + smsWrapper.classList.add('d-none'); + }); + } + + var handleAppsForm = function() { + // Init form validation rules. For more info check the FormValidation plugin's official documentation:https://formvalidation.io/ + appsValidator = FormValidation.formValidation( + appsForm, + { + fields: { + 'code': { + validators: { + notEmpty: { + message: 'Code is required' + } + } + } + }, + plugins: { + trigger: new FormValidation.plugins.Trigger(), + bootstrap: new FormValidation.plugins.Bootstrap5({ + rowSelector: '.fv-row', + eleInvalidClass: '', + eleValidClass: '' + }) + } + } + ); + + // Handle apps submition + appsSubmitButton.addEventListener('click', function (e) { + e.preventDefault(); + + // Validate form before submit + if (appsValidator) { + appsValidator.validate().then(function (status) { + console.log('validated!'); + + if (status == 'Valid') { + appsSubmitButton.setAttribute('data-kt-indicator', 'on'); + + // Disable button to avoid multiple click + appsSubmitButton.disabled = true; + + setTimeout(function() { + appsSubmitButton.removeAttribute('data-kt-indicator'); + + // Enable button + appsSubmitButton.disabled = false; + + // Show success message. + Swal.fire({ + text: "Code has been successfully submitted!", + icon: "success", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }).then(function (result) { + if (result.isConfirmed) { + modalObject.hide(); + showOptionsForm(); + } + }); + + //appsForm.submit(); // Submit form + }, 2000); + } else { + // Show error message. + Swal.fire({ + text: "Sorry, looks like there are some errors detected, please try again.", + icon: "error", + buttonsStyling: false, + confirmButtonText: "Ok, got it!", + customClass: { + confirmButton: "btn btn-primary" + } + }); + } + }); + } + }); + + // Handle apps cancelation + appsCancelButton.addEventListener('click', function (e) { + e.preventDefault(); + var option = optionsWrapper.querySelector('[name="auth_option"]:checked'); + + optionsWrapper.classList.remove('d-none'); + appsWrapper.classList.add('d-none'); + }); + } + + // Public methods + return { + init: function () { + // Elements + modal = document.querySelector('#kt_modal_two_factor_authentication'); + + if (!modal) { + return; + } + + modalObject = new bootstrap.Modal(modal); + + optionsWrapper = modal.querySelector('[data-kt-element="options"]'); + optionsSelectButton = modal.querySelector('[data-kt-element="options-select"]'); + + smsWrapper = modal.querySelector('[data-kt-element="sms"]'); + smsForm = modal.querySelector('[data-kt-element="sms-form"]'); + smsSubmitButton = modal.querySelector('[data-kt-element="sms-submit"]'); + smsCancelButton = modal.querySelector('[data-kt-element="sms-cancel"]'); + + appsWrapper = modal.querySelector('[data-kt-element="apps"]'); + appsForm = modal.querySelector('[data-kt-element="apps-form"]'); + appsSubmitButton = modal.querySelector('[data-kt-element="apps-submit"]'); + appsCancelButton = modal.querySelector('[data-kt-element="apps-cancel"]'); + + // Handle forms + handleOptionsForm(); + handleSMSForm(); + handleAppsForm(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTModalTwoFactorAuthentication.init(); +}); diff --git a/resources/assets/core/js/custom/utilities/modals/upgrade-plan.js b/resources/assets/core/js/custom/utilities/modals/upgrade-plan.js new file mode 100644 index 0000000..1d81f0d --- /dev/null +++ b/resources/assets/core/js/custom/utilities/modals/upgrade-plan.js @@ -0,0 +1,65 @@ +"use strict"; + +// Class definition +var KTModalUpgradePlan = function () { + // Private variables + var modal; + var planPeriodMonthButton; + var planPeriodAnnualButton; + + var changePlanPrices = function(type) { + var items = [].slice.call(modal.querySelectorAll('[data-kt-plan-price-month]')); + + items.map(function (item) { + var monthPrice = item.getAttribute('data-kt-plan-price-month'); + var annualPrice = item.getAttribute('data-kt-plan-price-annual'); + + if ( type === 'month' ) { + item.innerHTML = monthPrice; + } else if ( type === 'annual' ) { + item.innerHTML = annualPrice; + } + }); + } + + var handlePlanPeriodSelection = function() { + // Handle period change + planPeriodMonthButton.addEventListener('click', function (e) { + changePlanPrices('month'); + }); + + planPeriodAnnualButton.addEventListener('click', function (e) { + changePlanPrices('annual'); + }); + } + + var handleTabs = function() { + KTUtil.on(modal, '[data-bs-toggle="tab"]', 'click', function(e) { + this.querySelector('[type="radio"]').checked = true; + }); + } + + // Public methods + return { + init: function () { + // Elements + modal = document.querySelector('#kt_modal_upgrade_plan'); + + if (!modal) { + return; + } + + planPeriodMonthButton = modal.querySelector('[data-kt-plan="month"]'); + planPeriodAnnualButton = modal.querySelector('[data-kt-plan="annual"]'); + + // Handlers + handlePlanPeriodSelection(); + handleTabs(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTModalUpgradePlan.init(); +}); diff --git a/resources/assets/core/js/custom/utilities/modals/users-search.js b/resources/assets/core/js/custom/utilities/modals/users-search.js new file mode 100644 index 0000000..1ac2964 --- /dev/null +++ b/resources/assets/core/js/custom/utilities/modals/users-search.js @@ -0,0 +1,77 @@ +"use strict"; + +// Class definition +var KTModalUserSearch = function () { + // Private variables + var element; + var suggestionsElement; + var resultsElement; + var wrapperElement; + var emptyElement; + var searchObject; + + // Private functions + var processs = function (search) { + var timeout = setTimeout(function () { + var number = KTUtil.getRandomInt(1, 3); + + // Hide recently viewed + suggestionsElement.classList.add('d-none'); + + if (number === 3) { + // Hide results + resultsElement.classList.add('d-none'); + // Show empty message + emptyElement.classList.remove('d-none'); + } else { + // Show results + resultsElement.classList.remove('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Complete search + search.complete(); + }, 1500); + } + + var clear = function (search) { + // Show recently viewed + suggestionsElement.classList.remove('d-none'); + // Hide results + resultsElement.classList.add('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Public methods + return { + init: function () { + // Elements + element = document.querySelector('#kt_modal_users_search_handler'); + + if (!element) { + return; + } + + wrapperElement = element.querySelector('[data-kt-search-element="wrapper"]'); + suggestionsElement = element.querySelector('[data-kt-search-element="suggestions"]'); + resultsElement = element.querySelector('[data-kt-search-element="results"]'); + emptyElement = element.querySelector('[data-kt-search-element="empty"]'); + + // Initialize search handler + searchObject = new KTSearch(element); + + // Search handler + searchObject.on('kt.search.process', processs); + + // Clear handler + searchObject.on('kt.search.clear', clear); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTModalUserSearch.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/custom/utilities/search/horizontal.js b/resources/assets/core/js/custom/utilities/search/horizontal.js new file mode 100644 index 0000000..2ad9dd7 --- /dev/null +++ b/resources/assets/core/js/custom/utilities/search/horizontal.js @@ -0,0 +1,40 @@ +"use strict"; + +// Class definition +var KTSearchHorizontal = function () { + // Private functions + var initAdvancedSearchForm = function () { + var form = document.querySelector('#kt_advanced_search_form'); + + // Init tags + var tags = form.querySelector('[name="tags"]'); + new Tagify(tags); + } + + var handleAdvancedSearchToggle = function () { + var link = document.querySelector('#kt_horizontal_search_advanced_link'); + + link.addEventListener('click', function (e) { + e.preventDefault(); + + if (link.innerHTML === "Advanced Search") { + link.innerHTML = "Hide Advanced Search"; + } else { + link.innerHTML = "Advanced Search"; + } + }) + } + + // Public methods + return { + init: function () { + initAdvancedSearchForm(); + handleAdvancedSearchToggle(); + } + } +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function () { + KTSearchHorizontal.init(); +}); diff --git a/resources/assets/core/js/layout/app.js b/resources/assets/core/js/layout/app.js new file mode 100644 index 0000000..3c2e334 --- /dev/null +++ b/resources/assets/core/js/layout/app.js @@ -0,0 +1,659 @@ +"use strict"; + +// Class definition +var KTApp = function () { + var select2FocusFixInitialized = false; + + var initPageLoader = function () { + // CSS3 Transitions only after page load(.page-loading class added to body tag and remove with JS on page load) + KTUtil.removeClass(document.body, 'page-loading'); + } + + var initBootstrapTooltip = function (el, options) { + var delay = {}; + + // Handle delay options + if (el.hasAttribute('data-bs-delay-hide')) { + delay['hide'] = el.getAttribute('data-bs-delay-hide'); + } + + if (el.hasAttribute('data-bs-delay-show')) { + delay['show'] = el.getAttribute('data-bs-delay-show'); + } + + if (delay) { + options['delay'] = delay; + } + + // Check dismiss options + if (el.hasAttribute('data-bs-dismiss') && el.getAttribute('data-bs-dismiss') == 'click') { + options['dismiss'] = 'click'; + } + + // Initialize popover + var tp = new bootstrap.Tooltip(el, options); + + // Handle dismiss + if (options['dismiss'] && options['dismiss'] === 'click') { + // Hide popover on element click + el.addEventListener("click", function (e) { + tp.hide(); + }); + } + + return tp; + } + + var initBootstrapTooltips = function (el, options) { + var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')); + + var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { + initBootstrapTooltip(tooltipTriggerEl, {}); + }); + } + + var initBootstrapPopover = function (el, options) { + var delay = {}; + + // Handle delay options + if (el.hasAttribute('data-bs-delay-hide')) { + delay['hide'] = el.getAttribute('data-bs-delay-hide'); + } + + if (el.hasAttribute('data-bs-delay-show')) { + delay['show'] = el.getAttribute('data-bs-delay-show'); + } + + if (delay) { + options['delay'] = delay; + } + + // Handle dismiss option + if (el.getAttribute('data-bs-dismiss') == 'true') { + options['dismiss'] = true; + } + + if (options['dismiss'] === true) { + options['template'] = '' + } + + // Initialize popover + var popover = new bootstrap.Popover(el, options); + + // Handle dismiss click + if (options['dismiss'] === true) { + var dismissHandler = function (e) { + popover.hide(); + } + + el.addEventListener('shown.bs.popover', function () { + var dismissEl = document.getElementById(el.getAttribute('aria-describedby')); + dismissEl.addEventListener('click', dismissHandler); + }); + + el.addEventListener('hide.bs.popover', function () { + var dismissEl = document.getElementById(el.getAttribute('aria-describedby')); + dismissEl.removeEventListener('click', dismissHandler); + }); + } + + return popover; + } + + var initBootstrapPopovers = function () { + var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]')); + + var popoverList = popoverTriggerList.map(function (popoverTriggerEl) { + initBootstrapPopover(popoverTriggerEl, {}); + }); + } + + var initBootstrapScrollSpy = function () { + var elements = [].slice.call(document.querySelectorAll('[data-bs-spy="scroll"]')); + + elements.map(function (element) { + var sel = element.getAttribute('data-bs-target'); + var scrollContent = document.querySelector(element.getAttribute('data-bs-target')); + var scrollSpy = bootstrap.ScrollSpy.getInstance(scrollContent); + if (scrollSpy) { + scrollSpy.refresh(); + } + }); + } + + var initBootstrapToast = function () { + var toastElList = [].slice.call(document.querySelectorAll('.toast')); + var toastList = toastElList.map(function (toastEl) { + return new bootstrap.Toast(toastEl, {}) + }); + } + + var initBootstrapCollapse = function() { + KTUtil.on(document.body, '.collapsible[data-bs-toggle="collapse"]', 'click', function(e) { + if (this.classList.contains('collapsed')) { + this.classList.remove('active'); + this.blur(); + } else { + this.classList.add('active'); + } + + if (this.hasAttribute('data-kt-toggle-text')) { + var text = this.getAttribute('data-kt-toggle-text'); + var target = this.querySelector('[data-kt-toggle-text-target="true"]'); + var target = target ? target : this; + + this.setAttribute('data-kt-toggle-text', target.innerText); + target.innerText = text; + } + }); + } + + var initBootstrapRotate = function() { + KTUtil.on(document.body, '[data-kt-rotate="true"]', 'click', function(e) { + if (this.classList.contains('active')) { + this.classList.remove('active'); + this.blur(); + } else { + this.classList.add('active'); + } + }); + } + + var initButtons = function () { + var buttonsGroup = [].slice.call(document.querySelectorAll('[data-kt-buttons="true"]')); + + buttonsGroup.map(function (group) { + var selector = group.hasAttribute('data-kt-buttons-target') ? group.getAttribute('data-kt-buttons-target') : '.btn'; + + // Toggle Handler + KTUtil.on(group, selector, 'click', function (e) { + var buttons = [].slice.call(group.querySelectorAll(selector + '.active')); + + buttons.map(function (button) { + button.classList.remove('active'); + }); + + this.classList.add('active'); + }); + }); + } + + var initDaterangepicker = function() { + // Check if jQuery included + if (typeof jQuery == 'undefined') { + return; + } + + // Check if daterangepicker included + if (typeof $.fn.daterangepicker === 'undefined') { + return; + } + + var elements = [].slice.call(document.querySelectorAll('[data-kt-daterangepicker="true"]')); + var start = moment().subtract(29, 'days'); + var end = moment(); + + elements.map(function (element) { + var display = element.querySelector('div'); + var attrOpens = element.hasAttribute('data-kt-daterangepicker-opens') ? element.getAttribute('data-kt-daterangepicker-opens') : 'left'; + + var cb = function(start, end) { + if (display) { + display.innerHTML = start.format('D MMM YYYY') + ' - ' + end.format('D MMM YYYY'); + } + } + + $(element).daterangepicker({ + startDate: start, + endDate: end, + opens: attrOpens, + ranges: { + 'Today': [moment(), moment()], + 'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')], + 'Last 7 Days': [moment().subtract(6, 'days'), moment()], + 'Last 30 Days': [moment().subtract(29, 'days'), moment()], + 'This Month': [moment().startOf('month'), moment().endOf('month')], + 'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')] + } + }, cb); + + cb(start, end); + }); + } + + var initCheck = function () { + // Toggle Handler + KTUtil.on(document.body, '[data-kt-check="true"]', 'change', function (e) { + var check = this; + var targets = document.querySelectorAll(check.getAttribute('data-kt-check-target')); + + KTUtil.each(targets, function (target) { + if (target.type == 'checkbox') { + target.checked = check.checked; + } else { + target.classList.toggle('active'); + } + }); + }); + } + + var initSelect2 = function () { + // Check if jQuery included + if (typeof jQuery == 'undefined') { + return; + } + + // Check if select2 included + if (typeof $.fn.select2 === 'undefined') { + return; + } + + var elements = [].slice.call(document.querySelectorAll('[data-control="select2"], [data-kt-select2="true"]')); + + elements.map(function (element) { + var options = { + dir: document.body.getAttribute('direction') + }; + + if (element.getAttribute('data-hide-search') == 'true') { + options.minimumResultsForSearch = Infinity; + } + + $(element).select2(options); + }); + + /* + * Hacky fix for a bug in select2 with jQuery 3.6.0's new nested-focus "protection" + * see: https://github.com/select2/select2/issues/5993 + * see: https://github.com/jquery/jquery/issues/4382 + * + * TODO: Recheck with the select2 GH issue and remove once this is fixed on their side + */ + + if (select2FocusFixInitialized === false) { + select2FocusFixInitialized = true; + + $(document).on('select2:open', function(e) { + var elements = document.querySelectorAll('.select2-container--open .select2-search__field'); + if (elements.length > 0) { + elements[elements.length - 1].focus(); + } + }); + } + } + + var initModal = function() { + // Apply fix for Firefox's known bug with Flatpickr and other inputs focus state + if (navigator.userAgent.toLowerCase().indexOf('firefox') !== -1) { + const allModals = document.querySelectorAll('.modal:not(.initialized)'); + + allModals.forEach(modal => { + modal.addEventListener('shown.bs.modal', function() { + bootstrap.Modal.getInstance(this).handleUpdate(); + this.classList.add('initialized'); + alert(2); + }); + }); + } + } + + var initAutosize = function () { + var inputs = [].slice.call(document.querySelectorAll('[data-kt-autosize="true"]')); + + inputs.map(function (input) { + autosize(input); + }); + } + + var initCountUp = function () { + var elements = [].slice.call(document.querySelectorAll('[data-kt-countup="true"]:not(.counted)')); + + elements.map(function (element) { + if (KTUtil.isInViewport(element) && KTUtil.visible(element)) { + var options = {}; + + var value = element.getAttribute('data-kt-countup-value'); + value = parseFloat(value.replace(/,/g, "")); + + if (element.hasAttribute('data-kt-countup-start-val')) { + options.startVal = parseFloat(element.getAttribute('data-kt-countup-start-val')); + } + + if (element.hasAttribute('data-kt-countup-duration')) { + options.duration = parseInt(element.getAttribute('data-kt-countup-duration')); + } + + if (element.hasAttribute('data-kt-countup-decimal-places')) { + options.decimalPlaces = parseInt(element.getAttribute('data-kt-countup-decimal-places')); + } + + if (element.hasAttribute('data-kt-countup-prefix')) { + options.prefix = element.getAttribute('data-kt-countup-prefix'); + } + + if (element.hasAttribute('data-kt-countup-separator')) { + options.separator = element.getAttribute('data-kt-countup-separator'); + } + + if (element.hasAttribute('data-kt-countup-suffix')) { + options.suffix = element.getAttribute('data-kt-countup-suffix'); + } + + var count = new countUp.CountUp(element, value, options); + + count.start(); + + element.classList.add('counted'); + } + }); + } + + var initCountUpTabs = function () { + // Initial call + initCountUp(); + + // Window scroll event handler + window.addEventListener('scroll', initCountUp); + + // Tabs shown event handler + var tabs = [].slice.call(document.querySelectorAll('[data-kt-countup-tabs="true"][data-bs-toggle="tab"]')); + tabs.map(function (tab) { + tab.addEventListener('shown.bs.tab', initCountUp); + }); + } + + var initTinySliders = function () { + // Init Slider + var initSlider = function (el) { + if (!el) { + return; + } + + const tnsOptions = {}; + + // Convert string boolean + const checkBool = function (val) { + if (val === 'true') { + return true; + } + if (val === 'false') { + return false; + } + return val; + }; + + // get extra options via data attributes + el.getAttributeNames().forEach(function (attrName) { + // more options; https://github.com/ganlanyuan/tiny-slider#options + if ((/^data-tns-.*/g).test(attrName)) { + let optionName = attrName.replace('data-tns-', '').toLowerCase().replace(/(?:[\s-])\w/g, function (match) { + return match.replace('-', '').toUpperCase(); + }); + + if (attrName === 'data-tns-responsive') { + // fix string with a valid json + const jsonStr = el.getAttribute(attrName).replace(/(\w+:)|(\w+ :)/g, function (matched) { + return '"' + matched.substring(0, matched.length - 1) + '":'; + }); + try { + // convert json string to object + tnsOptions[optionName] = JSON.parse(jsonStr); + } + catch (e) { + } + } + else { + tnsOptions[optionName] = checkBool(el.getAttribute(attrName)); + } + } + }); + + const opt = Object.assign({}, { + container: el, + slideBy: 'page', + autoplay: true, + autoplayButtonOutput: false, + }, tnsOptions); + + if (el.closest('.tns')) { + KTUtil.addClass(el.closest('.tns'), 'tns-initiazlied'); + } + + return tns(opt); + } + + // Sliders + const elements = Array.prototype.slice.call(document.querySelectorAll('[data-tns="true"]'), 0); + + if (!elements && elements.length === 0) { + return; + } + + elements.forEach(function (el) { + initSlider(el); + }); + } + + var initSmoothScroll = function () { + if (SmoothScroll) { + + new SmoothScroll('a[data-kt-scroll-toggle][href*="#"]', { + speed: 1000, + speedAsDuration: true, + offset: function (anchor, toggle) { + // Integer or Function returning an integer. How far to offset the scrolling anchor location in pixels + // This example is a function, but you could do something as simple as `offset: 25` + + // An example returning different values based on whether the clicked link was in the header nav or not + if (anchor.hasAttribute('data-kt-scroll-offset')) { + var val = KTUtil.getResponsiveValue(anchor.getAttribute('data-kt-scroll-offset')); + + return val; + } else { + return 0; + } + } + }); + } + } + + var setThemeMode = function(mode, cb) { + // Load css file + var loadCssFile = function(fileName, newFileName) { + return new Promise(function(resolve, reject) { + var oldLink = document.querySelector("link[href*='" + fileName + "']"); + var link = document.createElement('link'); + var href = oldLink.href.replace(fileName, newFileName); + + link.rel = 'stylesheet'; + link.type = 'text/css'; + link.href = href; + + document.head.insertBefore(link, oldLink); + + // Important success and error for the promise + link.onload = function() { + resolve(href); + oldLink.remove(); + }; + + link.onerror = function() { + reject(href); + }; + }); + }; + + // Set page loading state + document.body.classList.add('page-loading'); + + if ( mode === 'dark' ) { + Promise.all([ + loadCssFile('plugins.bundle.css', 'plugins.dark.bundle.css'), + loadCssFile('style.bundle.css', 'style.dark.bundle.css') + ]).then(function() { + // Set dark mode class + document.body.classList.add("dark-mode"); + + // Remove page loading srate + document.body.classList.remove('page-loading'); + + if (cb instanceof Function) { + cb(); + } + }).catch(function() { + // error + }); + } else if ( mode === 'light' ) { + Promise.all([ + loadCssFile('plugins.dark.bundle.css', 'plugins.bundle.css'), + loadCssFile('style.dark.bundle.css', 'style.bundle.css') + ]).then(function() { + // Remove dark mode class + document.body.classList.remove("dark-mode"); + + // Remove page loading srate + document.body.classList.remove('page-loading'); + + // Callback + if (cb instanceof Function) { + cb(); + } + }).catch(function() { + // error + }); + } + } + + return { + init: function () { + this.initBootstrapTooltips(); + + this.initBootstrapPopovers(); + + this.initBootstrapScrollSpy(); + + this.initDaterangepicker(); + + this.initButtons(); + + this.initCheck(); + + this.initSelect2(); + + this.initCountUp(); + + this.initCountUpTabs(); + + this.initAutosize(); + + this.initTinySliders(); + + this.initSmoothScroll(); + + this.initBootstrapToast(); + + this.initBootstrapCollapse(); + + this.initBootstrapRotate(); + }, + + initPageLoader: function () { + initPageLoader(); + }, + + initDaterangepicker: function() { + initDaterangepicker(); + }, + + initBootstrapTooltip: function (el, options) { + return initBootstrapTooltip(el, options); + }, + + initBootstrapTooltips: function () { + initBootstrapTooltips(); + }, + + initBootstrapModal: function() { + initModal(); + }, + + initBootstrapPopovers: function () { + initBootstrapPopovers(); + }, + + initBootstrapPopover: function (el, options) { + return initBootstrapPopover(el, options); + }, + + initBootstrapScrollSpy: function () { + initBootstrapScrollSpy(); + }, + + initBootstrapToast: function () { + initBootstrapToast(); + }, + + initBootstrapCollapse: function() { + initBootstrapCollapse(); + }, + + initBootstrapRotate: function() { + initBootstrapRotate(); + }, + + initButtons: function () { + initButtons(); + }, + + initCheck: function () { + initCheck(); + }, + + initSelect2: function () { + initSelect2(); + }, + + initCountUp: function () { + initCountUp(); + }, + + initCountUpTabs: function () { + initCountUpTabs(); + }, + + initAutosize: function () { + initAutosize(); + }, + + initTinySliders: function () { + initTinySliders(); + }, + + initSmoothScroll: function () { + initSmoothScroll(); + }, + + isDarkMode: function () { + return document.body.classList.contains('dark-mode'); + }, + + setThemeMode: function(mode, cb) { + setThemeMode(mode, cb); + } + }; +}(); + +// Initialize app on document ready +KTUtil.onDOMContentLoaded(function () { + KTApp.init(); +}); + +// Initialize page loader on window load +window.addEventListener("load", function() { + KTApp.initPageLoader(); +}); + +// Declare KTApp for Webpack support +if (typeof module !== 'undefined' && typeof module.exports !== 'undefined') { + module.exports = KTApp; +} \ No newline at end of file diff --git a/resources/assets/core/js/layout/search.js b/resources/assets/core/js/layout/search.js new file mode 100644 index 0000000..99e9663 --- /dev/null +++ b/resources/assets/core/js/layout/search.js @@ -0,0 +1,135 @@ +"use strict"; + +// Class definition +var KTLayoutSearch = function() { + // Private variables + var element; + var formElement; + var mainElement; + var resultsElement; + var wrapperElement; + var emptyElement; + + var preferencesElement; + var preferencesShowElement; + var preferencesDismissElement; + + var advancedOptionsFormElement; + var advancedOptionsFormShowElement; + var advancedOptionsFormCancelElement; + var advancedOptionsFormSearchElement; + + var searchObject; + + // Private functions + var processs = function(search) { + var timeout = setTimeout(function() { + var number = KTUtil.getRandomInt(1, 3); + + // Hide recently viewed + mainElement.classList.add('d-none'); + + if (number === 3) { + // Hide results + resultsElement.classList.add('d-none'); + // Show empty message + emptyElement.classList.remove('d-none'); + } else { + // Show results + resultsElement.classList.remove('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + // Complete search + search.complete(); + }, 1500); + } + + var clear = function(search) { + // Show recently viewed + mainElement.classList.remove('d-none'); + // Hide results + resultsElement.classList.add('d-none'); + // Hide empty message + emptyElement.classList.add('d-none'); + } + + var handlePreferences = function() { + // Preference show handler + preferencesShowElement.addEventListener('click', function() { + wrapperElement.classList.add('d-none'); + preferencesElement.classList.remove('d-none'); + }); + + // Preference dismiss handler + preferencesDismissElement.addEventListener('click', function() { + wrapperElement.classList.remove('d-none'); + preferencesElement.classList.add('d-none'); + }); + } + + var handleAdvancedOptionsForm = function() { + // Show + advancedOptionsFormShowElement.addEventListener('click', function() { + wrapperElement.classList.add('d-none'); + advancedOptionsFormElement.classList.remove('d-none'); + }); + + // Cancel + advancedOptionsFormCancelElement.addEventListener('click', function() { + wrapperElement.classList.remove('d-none'); + advancedOptionsFormElement.classList.add('d-none'); + }); + + // Search + advancedOptionsFormSearchElement.addEventListener('click', function() { + + }); + } + + // Public methods + return { + init: function() { + // Elements + element = document.querySelector('#kt_header_search'); + + if (!element) { + return; + } + + wrapperElement = element.querySelector('[data-kt-search-element="wrapper"]'); + formElement = element.querySelector('[data-kt-search-element="form"]'); + mainElement = element.querySelector('[data-kt-search-element="main"]'); + resultsElement = element.querySelector('[data-kt-search-element="results"]'); + emptyElement = element.querySelector('[data-kt-search-element="empty"]'); + + preferencesElement = element.querySelector('[data-kt-search-element="preferences"]'); + preferencesShowElement = element.querySelector('[data-kt-search-element="preferences-show"]'); + preferencesDismissElement = element.querySelector('[data-kt-search-element="preferences-dismiss"]'); + + advancedOptionsFormElement = element.querySelector('[data-kt-search-element="advanced-options-form"]'); + advancedOptionsFormShowElement = element.querySelector('[data-kt-search-element="advanced-options-form-show"]'); + advancedOptionsFormCancelElement = element.querySelector('[data-kt-search-element="advanced-options-form-cancel"]'); + advancedOptionsFormSearchElement = element.querySelector('[data-kt-search-element="advanced-options-form-search"]'); + + // Initialize search handler + searchObject = new KTSearch(element); + + // Search handler + searchObject.on('kt.search.process', processs); + + // Clear handler + searchObject.on('kt.search.clear', clear); + + // Custom handlers + handlePreferences(); + handleAdvancedOptionsForm(); + } + }; +}(); + +// On document ready +KTUtil.onDOMContentLoaded(function() { + KTLayoutSearch.init(); +}); \ No newline at end of file diff --git a/resources/assets/core/js/vendors/plugins/apexchart.init.js b/resources/assets/core/js/vendors/plugins/apexchart.init.js new file mode 100644 index 0000000..0254779 --- /dev/null +++ b/resources/assets/core/js/vendors/plugins/apexchart.init.js @@ -0,0 +1,7 @@ +Apex.xaxis = { + labels: { + style: { + fontFamily: 'Montserrat' + } + } + } \ No newline at end of file diff --git a/resources/assets/core/js/vendors/plugins/bootstrap-markdown.init.js b/resources/assets/core/js/vendors/plugins/bootstrap-markdown.init.js new file mode 100644 index 0000000..9f5c565 --- /dev/null +++ b/resources/assets/core/js/vendors/plugins/bootstrap-markdown.init.js @@ -0,0 +1,10 @@ +"use strict"; + +// +// Markdown Initialization +// + +$.fn.markdown.defaults.iconlibrary = 'fa'; +$.fn.markdown.defaults.buttons[0][0]['data'][2]['icon']['fa'] = 'fa fa-heading'; +$.fn.markdown.defaults.buttons[0][1]['data'][1]['icon']['fa'] = 'fa fa-image'; +$.fn.markdown.defaults.buttons[0][2]['data'][1]['icon']['fa'] = 'fa fa-list-ol'; diff --git a/resources/assets/core/js/vendors/plugins/datatables.init.js b/resources/assets/core/js/vendors/plugins/datatables.init.js new file mode 100644 index 0000000..5287a92 --- /dev/null +++ b/resources/assets/core/js/vendors/plugins/datatables.init.js @@ -0,0 +1,212 @@ +"use strict"; + +// +// Datatables.net Initialization +// + +// Set Defaults + +var defaults = { + "language": { + "info": "Showing _START_ to _END_ of _TOTAL_ records", + "infoEmpty": "Showing no records", + "lengthMenu": "_MENU_", + "paginate": { + "first": '', + "last": '', + "next": '', + "previous": '' + } + } +}; + +$.extend(true, $.fn.dataTable.defaults, defaults); + +/*! DataTables Bootstrap 4 integration + * ©2011-2017 SpryMedia Ltd - datatables.net/license + */ + +/** + * DataTables integration for Bootstrap 4. This requires Bootstrap 4 and + * DataTables 1.10 or newer. + * + * This file sets the defaults and adds options to DataTables to style its + * controls using Bootstrap. See http://datatables.net/manual/styling/bootstrap + * for further information. + */ +(function( factory ){ + if ( typeof define === 'function' && define.amd ) { + // AMD + define( ['jquery', 'datatables.net'], function ( $ ) { + return factory( $, window, document ); + } ); + } + else if ( typeof exports === 'object' ) { + // CommonJS + module.exports = function (root, $) { + if ( ! root ) { + root = window; + } + + if ( ! $ || ! $.fn.dataTable ) { + // Require DataTables, which attaches to jQuery, including + // jQuery if needed and have a $ property so we can access the + // jQuery object that is used + $ = require('datatables.net')(root, $).$; + } + + return factory( $, root, root.document ); + }; + } + else { + // Browser + factory( jQuery, window, document ); + } +}(function( $, window, document, undefined ) { +'use strict'; +var DataTable = $.fn.dataTable; + + +/* Set the defaults for DataTables initialisation */ +$.extend( true, DataTable.defaults, { + dom: + "<'table-responsive'tr>" + + + "<'row'" + + "<'col-sm-12 col-md-5 d-flex align-items-center justify-content-center justify-content-md-start'li>" + + "<'col-sm-12 col-md-7 d-flex align-items-center justify-content-center justify-content-md-end'p>" + + ">", + + renderer: 'bootstrap' +} ); + + +/* Default class modification */ +$.extend( DataTable.ext.classes, { + sWrapper: "dataTables_wrapper dt-bootstrap4", + sFilterInput: "form-control form-control-sm form-control-solid", + sLengthSelect: "form-select form-select-sm form-select-solid", + sProcessing: "dataTables_processing", + sPageButton: "paginate_button page-item" +} ); + + +/* Bootstrap paging button renderer */ +DataTable.ext.renderer.pageButton.bootstrap = function ( settings, host, idx, buttons, page, pages ) { + var api = new DataTable.Api( settings ); + var classes = settings.oClasses; + var lang = settings.oLanguage.oPaginate; + var aria = settings.oLanguage.oAria.paginate || {}; + var btnDisplay, btnClass, counter=0; + + var attach = function( container, buttons ) { + var i, ien, node, button; + var clickHandler = function ( e ) { + e.preventDefault(); + if ( !$(e.currentTarget).hasClass('disabled') && api.page() != e.data.action ) { + api.page( e.data.action ).draw( 'page' ); + } + }; + + for ( i=0, ien=buttons.length ; i 0 ? + '' : ' disabled'); + break; + + case 'previous': + btnDisplay = lang.sPrevious; + btnClass = button + (page > 0 ? + '' : ' disabled'); + break; + + case 'next': + btnDisplay = lang.sNext; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + case 'last': + btnDisplay = lang.sLast; + btnClass = button + (page < pages-1 ? + '' : ' disabled'); + break; + + default: + btnDisplay = button + 1; + btnClass = page === button ? + 'active' : ''; + break; + } + + if ( btnDisplay ) { + node = $('
  • ', { + 'class': classes.sPageButton+' '+btnClass, + 'id': idx === 0 && typeof button === 'string' ? + settings.sTableId +'_'+ button : + null + } ) + .append( $('', { + 'href': '#', + 'aria-controls': settings.sTableId, + 'aria-label': aria[ button ], + 'data-dt-idx': counter, + 'tabindex': settings.iTabIndex, + 'class': 'page-link' + } ) + .html( btnDisplay ) + ) + .appendTo( container ); + + settings.oApi._fnBindAction( + node, {action: button}, clickHandler + ); + + counter++; + } + } + } + }; + + // IE9 throws an 'unknown error' if document.activeElement is used + // inside an iframe or frame. + var activeEl; + + try { + // Because this approach is destroying and recreating the paging + // elements, focus is lost on the select button which is bad for + // accessibility. So we want to restore focus once the draw has + // completed + activeEl = $(host).find(document.activeElement).data('dt-idx'); + } + catch (e) {} + + attach( + $(host).empty().html('