From 5aaf64ec54d4c49be13d82828b93bc576d3a9d16 Mon Sep 17 00:00:00 2001 From: Omur Date: Sat, 19 Jul 2025 15:21:14 +0200 Subject: [PATCH 1/2] quartz-manager-starter https://arxiv.org/pdf/2504.16833 https://github.com/fabioformosa/quartz-manager --- .../cs/rest/quartz-manager/.editorconfig | 9 + .../cs/rest/quartz-manager/.travis.yml | 3 + .../cs/rest/quartz-manager/CHANGELOG.md | 28 + jdk_11_maven/cs/rest/quartz-manager/LICENSE | 201 + jdk_11_maven/cs/rest/quartz-manager/README.md | 313 + .../quartz-manager-frontend/.browserslistrc | 12 + .../quartz-manager-frontend/.editorconfig | 13 + .../quartz-manager-frontend/.eslintrc.json | 214 + .../quartz-manager-frontend/.gitignore | 43 + .../quartz-manager-frontend/.prettierignore | 47 + .../quartz-manager-frontend/.prettierrc.json | 11 + .../quartz-manager-frontend/angular.json | 120 + .../e2e/app.e2e-spec.ts | 14 + .../quartz-manager-frontend/e2e/app.po.ts | 11 + .../e2e/tsconfig.e2e.json | 12 + .../quartz-manager-frontend/jest.setup.ts | 1 + .../quartz-manager-frontend/karma.conf.js | 42 + .../quartz-manager-frontend/package-lock.json | 33678 ++++++++++++++++ .../quartz-manager-frontend/package.json | 90 + .../protractor.conf.js | 30 + .../quartz-manager-frontend/proxy.conf.json | 8 + .../quartz-manager-frontend/src/_test.ts | 32 + .../quartz-manager-frontend/src/animate.css | 7 + .../src/app/app-routing.module.ts | 54 + .../src/app/app.component.html | 8 + .../src/app/app.component.scss | 10 + .../src/app/app.component.spec.ts | 51 + .../src/app/app.component.ts | 15 + .../src/app/app.module.ts | 187 + .../components/footer/footer.component.html | 8 + .../components/footer/footer.component.scss | 27 + .../app/components/footer/footer.component.ts | 15 + .../src/app/components/footer/index.ts | 1 + .../components/github/github.component.html | 4 + .../components/github/github.component.scss | 20 + .../app/components/github/github.component.ts | 15 + .../src/app/components/github/index.ts | 1 + .../account-menu/account-menu.component.html | 1 + .../account-menu/account-menu.component.scss | 0 .../account-menu.component.spec.ts | 53 + .../account-menu/account-menu.component.ts | 35 + .../components/header/header.component.html | 35 + .../components/header/header.component.scss | 59 + .../app/components/header/header.component.ts | 43 + .../src/app/components/header/index.ts | 1 + .../src/app/components/index.ts | 7 + .../src/app/components/logs-panel/index.ts | 1 + .../logs-panel/logs-panel.component.html | 35 + .../logs-panel/logs-panel.component.scss | 36 + .../logs-panel/logs-panel.component.ts | 58 + .../app/components/progress-panel/index.ts | 1 + .../progress-panel.component.html | 43 + .../progress-panel.component.scss | 33 + .../progress-panel.component.ts | 84 + .../app/components/scheduler-control/index.ts | 1 + .../scheduler-control.component.html | 26 + .../scheduler-control.component.scss | 17 + .../scheduler-control.component.spec.ts | 105 + .../scheduler-control.component.ts | 81 + .../components/simple-trigger-config/index.ts | 2 + .../simple-trigger-config.component.html | 189 + .../simple-trigger-config.component.scss | 29 + .../simple-trigger-config.component.spec.ts | 257 + .../simple-trigger-config.component.ts | 195 + .../src/app/components/trigger-list/index.ts | 1 + .../trigger-list/trigger-list.component.html | 17 + .../trigger-list/trigger-list.component.scss | 25 + .../trigger-list.component.spec.ts | 86 + .../trigger-list/trigger-list.component.ts | 97 + .../src/app/guards/admin.guard.ts | 31 + .../src/app/guards/guest.guard.ts | 19 + .../src/app/guards/index.ts | 4 + .../src/app/guards/login.guard.ts | 19 + .../src/app/model/SocketEndpoint.model.ts | 7 + .../src/app/model/SocketOption.model.ts | 20 + .../src/app/model/jobDetail.model.ts | 4 + .../src/app/model/jobKey.model.ts | 4 + .../app/model/misfire-instruction.model.ts | 56 + .../src/app/model/scheduler.model.ts | 15 + .../src/app/model/simple-trigger.command.ts | 9 + .../src/app/model/simple-trigger.form.ts | 11 + .../src/app/model/simple-trigger.model.ts | 7 + .../app/model/trigger-fired-bundle.model.ts | 10 + .../src/app/model/trigger.model.ts | 17 + .../src/app/model/triggerKey.model.ts | 9 + .../src/app/polyfills.ts | 74 + .../src/app/services/api.service.spec.ts | 83 + .../src/app/services/api.service.ts | 108 + .../src/app/services/auth.service.ts | 41 + .../src/app/services/config.service.ts | 57 + .../src/app/services/index.ts | 12 + .../src/app/services/job.service.ts | 18 + .../app/services/logs.websocket.service.ts | 12 + .../app/services/mocks/api.service.mock.ts | 21 + .../src/app/services/mocks/index.ts | 2 + .../app/services/mocks/user.service.mock.ts | 5 + .../services/progress.websocket.service.ts | 12 + .../src/app/services/scheduler.service.ts | 54 + .../src/app/services/trigger.service.ts | 20 + .../src/app/services/user.service.ts | 56 + .../src/app/services/websocket.service.ts | 136 + .../src/app/shared/models/display-message.ts | 4 + .../src/app/shared/utilities/loose-invalid.ts | 3 + .../src/app/shared/utilities/serialize.ts | 14 + .../views/error/genericError.component.css | 0 .../views/error/genericError.component.html | 13 + .../error/genericError.component.spec.ts | 25 + .../app/views/error/genericError.component.ts | 15 + .../views/forbidden/forbidden.component.css | 0 .../views/forbidden/forbidden.component.html | 13 + .../forbidden/forbidden.component.spec.ts | 25 + .../views/forbidden/forbidden.component.ts | 15 + .../src/app/views/forbidden/index.ts | 1 + .../src/app/views/login/index.ts | 1 + .../src/app/views/login/login.component.html | 32 + .../src/app/views/login/login.component.scss | 58 + .../app/views/login/login.component.spec.ts | 48 + .../src/app/views/login/login.component.ts | 76 + .../src/app/views/manager/index.ts | 1 + .../app/views/manager/manager.component.html | 40 + .../app/views/manager/manager.component.scss | 1 + .../app/views/manager/manager.component.ts | 46 + .../src/app/views/not-found/index.ts | 1 + .../views/not-found/not-found.component.css | 0 .../views/not-found/not-found.component.html | 12 + .../not-found/not-found.component.spec.ts | 32 + .../views/not-found/not-found.component.ts | 10 + .../src/assets/.gitkeep | 0 .../src/assets/image/access_denied.svg | 1 + .../src/assets/image/admin.png | Bin 0 -> 161826 bytes .../image/angular-white-transparent.svg | 21 + .../src/assets/image/error.svg | 1 + .../src/assets/image/foo.png | Bin 0 -> 117304 bytes .../src/assets/image/github.png | Bin 0 -> 1571 bytes .../src/assets/image/logs.svg | 1 + .../src/assets/image/page_not_found.svg | 1 + .../src/assets/image/settings.svg | 1 + .../src/assets/image/user.png | Bin 0 -> 223499 bytes .../src/environments/environment.prod.ts | 3 + .../src/environments/environment.ts | 8 + .../quartz-manager-frontend/src/favicon.ico | Bin 0 -> 5430 bytes .../quartz-manager-frontend/src/index.html | 23 + .../quartz-manager-frontend/src/main.ts | 11 + .../quartz-manager-frontend/src/polyfills.ts | 75 + .../quartz-manager-frontend/src/styles.css | 14 + .../src/tsconfig.app.json | 15 + .../quartz-manager-frontend/src/typings.d.ts | 5 + .../quartz-manager-frontend/tsconfig.json | 23 + .../tsconfig.spec.json | 19 + .../quartz-manager-frontend/tslint.json | 118 + .../quartz-manager-parent/.editorconfig | 12 + .../quartz-manager-parent/.gitignore | 7 + .../.mvn/wrapper/maven-wrapper.jar | Bin 0 -> 58727 bytes .../.mvn/wrapper/maven-wrapper.properties | 2 + .../quartz-manager-parent/README.md | 73 + .../quartz-manager-parent/lombok.config | 2 + .../quartz-manager/quartz-manager-parent/mvnw | 316 + .../quartz-manager-parent/mvnw.cmd | 188 + .../quartz-manager-parent/pom.xml | 300 + .../quartz-manager-common/pom.xml | 32 + .../common/config/OpenAPIConfigConsts.java | 9 + .../api/common/config/QuartzManagerPaths.java | 16 + .../properties/QuartzModuleProperties.java | 14 + .../api/common/utils/DateUtils.java | 26 + .../quartzmanager/api/common/utils/Try.java | 53 + .../api/common/utils/DateUtilsTest.java | 37 + .../api/common/utils/TryTest.java | 42 + .../quartz-manager-starter-api/.gitignore | 4 + .../quartz-manager-starter-api/pom.xml | 150 + .../api/configuration/ConversionConfig.java | 9 + .../api/configuration/OpenApiConfig.java | 51 + .../QuartzDefaultPropertiesConfig.java | 22 + .../configuration/QuartzManagerApiConfig.java | 9 + .../api/configuration/SchedulerConfig.java | 62 + .../api/configuration/WebsocketConfig.java | 30 + .../api/controllers/JobController.java | 41 + .../api/controllers/SchedulerController.java | 98 + .../controllers/SimpleTriggerController.java | 93 + .../api/controllers/TriggerController.java | 47 + .../api/controllers/WebsocketController.java | 20 + .../advices/ExceptionHandlingController.java | 31 + .../api/converters/JobKeyToJobDetailDTO.java | 27 + .../api/converters/JobKeyToJobKeyDTO.java | 15 + .../converters/SchedulerToSchedulerDTO.java | 33 + ...impleTriggerCommandDTOToSimpleTrigger.java | 60 + .../SimpleTriggerToSimpleTriggerDTO.java | 24 + .../converters/TriggerKeyToTriggerKeyDTO.java | 16 + .../api/converters/TriggerToTriggerDTO.java | 44 + .../quartzmanager/api/dto/JobDetailDTO.java | 14 + .../quartzmanager/api/dto/JobKeyDTO.java | 15 + .../api/dto/MisfireInstruction.java | 27 + .../quartzmanager/api/dto/SchedulerDTO.java | 21 + .../api/dto/SimpleTriggerCommandDTO.java | 13 + .../api/dto/SimpleTriggerDTO.java | 16 + .../api/dto/SimpleTriggerInputDTO.java | 25 + .../api/dto/TriggerCommandDTO.java | 30 + .../quartzmanager/api/dto/TriggerDTO.java | 28 + .../api/dto/TriggerFiredBundleDTO.java | 34 + .../quartzmanager/api/dto/TriggerKeyDTO.java | 15 + .../api/dto/TriggerPeriodDTO.java | 11 + .../api/dto/TriggerRepetitionDTO.java | 11 + .../api/enums/SchedulerStatus.java | 5 + .../api/exceptions/ExceptionResponse.java | 15 + .../exceptions/ResourceConflictException.java | 15 + .../exceptions/TriggerNotFoundException.java | 7 + .../api/jobs/AbstractQuartzManagerJob.java | 48 + .../api/jobs/entities/LogRecord.java | 35 + .../AutowiringSpringBeanJobFactory.java | 26 + .../services/AbstractSchedulerService.java | 28 + .../api/services/JobService.java | 50 + .../api/services/SchedulerService.java | 31 + .../api/services/SimpleTriggerService.java | 45 + .../api/services/TriggerService.java | 34 + .../validators/ValidRepetitionValidator.java | 15 + .../api/validators/ValidTriggerPeriod.java | 17 + .../ValidTriggerPeriodValidator.java | 15 + .../validators/ValidTriggerRepetition.java | 17 + .../api/websockets/WebSocketLogsNotifier.java | 20 + .../websockets/WebSocketProgressNotifier.java | 50 + .../api/websockets/WebhookSender.java | 14 + .../main/resources/META-INF/spring.factories | 2 + .../api/QuartManagerApplicationTests.java | 10 + ...hedulerConfigDefaultAppPropertiesTest.java | 29 + .../configuration/SchedulerConfigTest.java | 84 + .../api/controllers/JobControllerTest.java | 46 + .../ResourceConflictControllerTest.java | 28 + .../controllers/SchedulerControllerTest.java | 89 + .../SimpleTriggerControllerTest.java | 104 + ...SimpleTriggerControllerValidationTest.java | 113 + .../api/controllers/TestController.java | 19 + .../controllers/TriggerControllerTest.java | 30 + ...nvalidSimpleTriggerCommandDTOProvider.java | 49 + .../api/controllers/utils/TestUtils.java | 21 + .../api/controllers/utils/TriggerUtils.java | 127 + .../SchedulerToSchedulerDTOTest.java | 71 + ...eTriggerCommandDTOToSimpleTriggerTest.java | 41 + .../SimpleTriggerToSimpleTriggerDTOTest.java | 36 + .../api/dto/TriggerFiredBundleDTOTest.java | 33 + .../quartzmanager/api/jobs/SampleJob.java | 13 + .../quartzmanager/api/jobs/SampleJobTest.java | 79 + .../api/services/JobServiceTest.java | 45 + .../SchedulerServiceIntegrationTest.java | 57 + .../api/services/SchedulerServiceTest.java | 63 + .../SimpleTriggerServiceIntegrationTest.java | 84 + .../services/SimpleTriggerServiceTest.java | 132 + .../api/services/TriggerServiceTest.java | 50 + .../ValidRepetitionValidatorTest.java | 51 + .../samplepackage/SampleExtraJob.java | 15 + .../src/test/resources/application.yml | 11 + .../test/resources/managed-quartz.properties | 2 + .../org.mockito.plugins.MockMaker | 1 + .../pom.xml | 51 + .../api/persistence/PersistenceConfig.java | 68 + .../QuartzPersistencePropConfig.java | 17 + .../main/resources/META-INF/spring.factories | 2 + .../liquibase-changelog-master.xml | 10 + ...V202102190034_quartz_tables_postgresql.sql | 218 + .../resources/quartz-persistence.properties | 13 + .../quartz-manager-starter-security/pom.xml | 115 + .../security/QuartzManagerSecurityConfig.java | 173 + .../config/SecurityOpenApiConfig.java | 63 + .../security/controllers/UserController.java | 33 + .../api/security/helpers/LoginConfigurer.java | 21 + .../helpers/impl/AnonAuthentication.java | 30 + .../impl/AuthenticationFailureHandler.java | 7 + .../impl/AuthenticationSuccessHandler.java | 30 + .../helpers/impl/FormLoginConfig.java | 73 + .../helpers/impl/JwtAuthenticationFilter.java | 34 + .../impl/JwtAuthenticationSuccessHandler.java | 14 + .../JwtAuthenticationSuccessHandlerImpl.java | 75 + .../impl/JwtTokenAuthenticationFilter.java | 100 + .../impl/JwtTokenBasedAuthentication.java | 40 + .../security/helpers/impl/JwtTokenHelper.java | 142 + .../JwtUsernamePasswordFiterLoginConfig.java | 46 + .../security/helpers/impl/LogoutSuccess.java | 36 + .../impl/QuartzManagerHttpSecurity.java | 56 + .../impl/RestAuthenticationEntryPoint.java | 23 + .../api/security/models/UserTokenState.java | 19 + .../properties/InMemoryAccountProperties.java | 37 + .../properties/JwtSecurityProperties.java | 48 + .../main/resources/META-INF/spring.factories | 2 + .../security/AbstractSecurityLoginTest.java | 29 + .../api/security/SecurityControllerTest.java | 85 + .../security/SecurityLoginViaCookieTest.java | 40 + .../SecurityLoginViaDefaultStrategyTest.java | 30 + ...urityLoginViaHeaderAndLoginFilterTest.java | 37 + .../security/SecurityLoginViaHeaderTest.java | 36 + .../api/security/SpringApplicationTest.java | 7 + .../security/controllers/TestController.java | 27 + .../controllers/UserControllerTest.java | 41 + .../AbstractPropertyValidatorTest.java | 39 + ...InMemoryUsersValidationControllerTest.java | 54 + .../properties/JwtSecurityPropertiesTest.java | 39 + .../quartz-manager-starter-ui/pom.xml | 139 + .../quartz-manager-web-showcase/.gitignore | 12 + .../docker/quartzmanager/docker-compose.yml | 11 + .../docker/quartzmanager/init-db.sh | 9 + .../quartz-manager-web-showcase/pom.xml | 153 + .../QuartzManagerDemoApplication.java | 14 + .../it/fabioformosa/ServletInitializer.java | 21 + .../WebShowcaseOpenApiConfig.java | 32 + .../controllers/HealthCheckController.java | 29 + .../controllers/SessionController.java | 38 + .../quartzmanager/jobs/myjobs/SampleJob.java | 14 + .../jobs/tests/MisfireTestJob.java | 43 + .../src/main/resources/application.yml | 39 + .../src/main/resources/banner.txt | 8 + .../src/main/resources/logback.xml | 29 + .../main/resources/managed-quartz.properties | 2 + .../quartz-manager-2-screenshot_800.PNG | Bin 0 -> 100051 bytes .../resources/quartz-manager-4-screenshot.png | Bin 0 -> 80849 bytes .../resources/quartz-manager-4-swagger.png | Bin 0 -> 44733 bytes .../QuartManagerApplicationTests.java | 15 + .../jobs/tests/MisfireTestJobTest.java | 18 + 314 files changed, 45770 insertions(+) create mode 100644 jdk_11_maven/cs/rest/quartz-manager/.editorconfig create mode 100644 jdk_11_maven/cs/rest/quartz-manager/.travis.yml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/CHANGELOG.md create mode 100644 jdk_11_maven/cs/rest/quartz-manager/LICENSE create mode 100644 jdk_11_maven/cs/rest/quartz-manager/README.md create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.browserslistrc create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.editorconfig create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.eslintrc.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.gitignore create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierignore create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierrc.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/angular.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.po.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/jest.setup.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/karma.conf.js create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package-lock.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/protractor.conf.js create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/proxy.conf.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/_test.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/animate.css create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.module.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/angular-white-transparent.svg create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/github.png create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/logs.svg create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/user.png create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/environments/environment.prod.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/environments/environment.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/favicon.ico create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/index.html create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/main.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/polyfills.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/styles.css create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/typings.d.ts create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.spec.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tslint.json create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.editorconfig create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.gitignore create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/README.md create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/lombok.config create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw.cmd create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java create mode 100644 jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/.editorconfig b/jdk_11_maven/cs/rest/quartz-manager/.editorconfig new file mode 100644 index 000000000..a4450c659 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/.editorconfig @@ -0,0 +1,9 @@ +[*] +charset = utf-8 +end_of_line = lf +indent_size = 2 +indent_style = space +insert_final_newline = true +max_line_length = 120 +tab_width = 2 +ij_continuation_indent_size = 2 \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/.travis.yml b/jdk_11_maven/cs/rest/quartz-manager/.travis.yml new file mode 100644 index 000000000..f7c25af24 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/.travis.yml @@ -0,0 +1,3 @@ +language: java +jdk: openjdk8 +before_script: cd quartz-manager-parent diff --git a/jdk_11_maven/cs/rest/quartz-manager/CHANGELOG.md b/jdk_11_maven/cs/rest/quartz-manager/CHANGELOG.md new file mode 100644 index 000000000..2093f937b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/CHANGELOG.md @@ -0,0 +1,28 @@ +## **v4.0.9** +Fixed a bug which prevented to run the liquibase migration scripts in case of usage of quartz-manager-starter-persistence + +## **v4.0.8** +Upgraded the frontend to angular v14 + +## **v4.0.6** +Minor bug fixes + +## **v4.0.5** +Fixed potential security issues + +## **v4.0.4** +* Conformed the trigger configuration to the Simple Trigger of Quartz +* **BREAKING CHANGE** Changed accordingly the API and the UI +* Made Quartz Manager embeddable in projects with existing quartz instance, security layer, swagger ui. + +## **v3.1.0** +* Added a new persistence module to persist the quartz triggers in a postgresql database + +## **v3.0.1** + +Quartz-Manager is now publicly available into the maven central repo into 3 different packages. +You can import: + +* `quartz-manager-starter-api` to have a REST API layer to control your scheduler +* `quartz-manager-starter-ui` to import the UI also, in your spring webapp. +* `quartz-manager-starter-security` if you want to give access to the quartz-manager UI and API only to authenticated users diff --git a/jdk_11_maven/cs/rest/quartz-manager/LICENSE b/jdk_11_maven/cs/rest/quartz-manager/LICENSE new file mode 100644 index 000000000..261eeb9e9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/jdk_11_maven/cs/rest/quartz-manager/README.md b/jdk_11_maven/cs/rest/quartz-manager/README.md new file mode 100644 index 000000000..ea01088de --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/README.md @@ -0,0 +1,313 @@ +[![Java CI with Maven](https://github.com/fabioformosa/quartz-manager/actions/workflows/maven.yml/badge.svg)](https://github.com/fabioformosa/quartz-manager/actions/workflows/maven.yml) +[![npm CI](https://github.com/fabioformosa/quartz-manager/actions/workflows/npm.yml/badge.svg)](https://github.com/fabioformosa/quartz-manager/actions/workflows/npm.yml) +[![Maven Central](https://maven-badges.herokuapp.com/maven-central/it.fabioformosa.quartz-manager/quartz-manager-starter-api/badge.svg)](https://maven-badges.herokuapp.com/maven-central/it.fabioformosa.quartz-manager/quartz-manager-starter-api) +[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=fabioformosa_quartz-manager&metric=coverage)](https://sonarcloud.io/summary/new_code?id=fabioformosa_quartz-manager) [![Bugs](https://sonarcloud.io/api/project_badges/measure?project=fabioformosa_quartz-manager&metric=bugs)](https://sonarcloud.io/summary/new_code?id=fabioformosa_quartz-manager) [![Security Rating](https://sonarcloud.io/api/project_badges/measure?project=fabioformosa_quartz-manager&metric=security_rating)](https://sonarcloud.io/summary/new_code?id=fabioformosa_quartz-manager) [![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=fabioformosa_quartz-manager&metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=fabioformosa_quartz-manager) + +# Table Of Contents + + +[QUARTZ MANAGER](https://github.com/fabioformosa/quartz-manager#quartz-manager) +     [Quartz Manager UI](https://github.com/fabioformosa/quartz-manager#quartz-manager-ui) +     [Quartz Manager API](https://github.com/fabioformosa/quartz-manager#quartz-manager-api) +[HOW IT WORKS](https://github.com/fabioformosa/quartz-managerhttps://github.com/fabioformosa/quartz-manager#get-started) +     [Quartz Manager Starter API Lib](https://github.com/fabioformosa/quartz-manager#quartz-manager-starter-api-lib) +     [Quartz Manager Starter UI Lib](https://github.com/fabioformosa/quartz-manager#quartz-manager-starter-ui-lib) +     [Quartz Manager Starter Security Lib](https://github.com/fabioformosa/quartz-manager#quartz-manager-starter-security-lib) +     [Quartz Manager Persistence Lib](https://github.com/fabioformosa/quartz-manager#quartz-manager-starter-persistence-lib) +[EXAMPLES](https://github.com/fabioformosa/quartz-manager#examples) +[LIMITATIONS](https://github.com/fabioformosa/quartz-manager#limitations) +[ROADMAP](https://github.com/fabioformosa/quartz-manager#roadmap) +[REPOSITORY](https://github.com/fabioformosa/quartz-manager#repository) +[HOW TO CONTRIBUTE](https://github.com/fabioformosa/quartz-manager#how-to-contribute) +[SUPPORT THE PROJECT](https://github.com/fabioformosa/quartz-manager#%EF%B8%8F-support-the-project-%EF%B8%8F) + +# QUARTZ MANAGER +In the last decade, the [Quartz Scheduler](http://www.quartz-scheduler.org/) has become the most adopted opensource job scheduling library for Java applications. + +**Quartz Manager** enriches it with a **REST API** layer and a handy **UI console** to easily control and monitor a Quartz Scheduler. + +Quartz Manager is a Java library you can import in your Spring-Based Web Application to run scheduled jobs, start&stop them and get the job outcomes. You can do it through HTTP calls to the the Quartz Manager API or in a visual manner through the Quartz Manager UI dashboard. + + +## QUARTZ MANAGER UI +The **Quartz Manager UI** is a dashboard in the form of a single-page-application provided by the Quartz Manager Java library itself. You can have it embedded in your project, as well as you get embedded the Swagger UI. +It leverages the websockets to receive in real-time the trigger updates and the outcomes of the job executions. + +![](https://github.com/fabioformosa/quartz-manager/blob/master/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png) + +## QUARTZ MANAGER API +Quart-Manager exposes REST endpoints to interact with the Quartz Scheduler. This endpoints are invoked by Quartz Manager UI also. +The REST API are documented by an OpenAPI Specification interface. + +![](https://github.com/fabioformosa/quartz-manager/blob/master/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png) + + +# HOW IT WORKS +Quartz Manager can either coexist with your existing instance of Quartz or it can import itself the Quartz dependency. + +In the first case, Quartz Manager is compatible with Quartz v2.3.x . Quartz Manager creates and configures its own instance of Quartz Scheduler and it manages only the jobs and the triggers created through it. Your other jobs and triggers, running in the existing quartz instance, are out of the scope of Quartz Manager. + +In the latter case, in which there isn't an existing quartz instance, you can rely on Quartz Manager to speed up the setup of a Quartz instance, with a persistent storage also if you need it. Futhermore, if you start a bare project from scratch, just to run scheduled jobs, Quartz Manager comes with the option to enable a security layer to protect the API and the UI with an authentication model based on [JWT](https://jwt.io). + +**FEATURES** +* You can schedule a [Quartz Simple Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-05.html) which allows you to start a job now or in a specific date-time, to set it as a recurring job with a certain time frequency, unlimited or limited on the number of fires and within a certain end date. +* You can start, pause and resume the quartz scheduler via API or clicking the start/stop buttons at the UI console. +* Leveraging on an active web-socket, the `Quartz-Manager-UI` updates in real time the progress bar and it displays the list of the latest logs produced by your quartz job. +* You can enable a secure layer, if your project doesn't have any, to give access at the API and the UI only to authenticated users. +* You can enable a persistent layer, to persist the config and the progress of your trigger, in a postgresql database. + +# GET STARTED + +**Requirements** + Java 9+, Spring Framework 5+ (Spring Boot 2.x) + +Quart Manager is a modular library: +* quartz-manager-starter-api (mandatory) +* quartz-manager-starter-ui (optional) +* quartz-manager-starter-security (optional) +* quartz-manager-starter-persistence (optional) + +In order to decrease the overall configuration time for the project, all modules of the library follow the approach of Spring Starters. Thus, it's enough to import the dependency to get started. + +Below the list of the quartz-manager modules you can import. + +## Quartz Manager Starter API Lib +This is the only mandatory module of the library. +Add the dependency, make eligible for Quart Manager the job classes and set the props in your `application.properties` file. + +### Step 1. Dependency + +#### Maven +``` + + it.fabioformosa.quartz-manager + quartz-manager-starter-api + 4.0.9 + +``` +#### Gradle +``` +implementation group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-api', version: '4.0.9' +``` + +### Step 2. Quartz Manager Job Classes +The job classes, which can be eligible for triggers managed by Quartz Manager, must extend the super-class `AbstractLoggingJob`. +In this way, Quartz Manager is able to collect and display the outcomes at the UI console. + + ``` + public class SampleJob extends AbstractLoggingJob { + + @Override + public LogRecord doIt(JobExecutionContext jobExecutionContext) { + ... do stuff ... + return new LogRecord(LogType.INFO, "Hello from QuartManagerDemo!"); + } + +} +``` + +### Step 3. Quartz Manager API - App Props + +| Property | Values |Mandatory | Default | Description | +| :--- |:--- |:--- |:--- |:-- | +| quartz-manager.jobClassPackages | string | Yes | |java base package which contains your job classes | +| quartz-manager.oas.enabled | boolean | No | false |whether to create an OpenAPI instance to expose the OAS and the Swagger UI | + + +### REST API & OpenAPI Specification +Set the app prop `quartz-manager.oas.enabled=true` if you want to expose the OpenApi Specification of the Quartz Manager APIs. +Reach out the swagger-ui at the URL: +[http://localhost:8080/swagger-ui.html](http://localhost:8080/swagger-ui.html) + +If your project has already an OpenAPI instance and you've set `quartz-manager.oas.enabled=true`, then make sure to add an OpenApiGroup to group the API of your application. Quart Manager exposes its API in group called "Quartz Manager". If you use OAS Annotations: +``` + @Bean + public GroupedOpenApi simplySpringDemoGroupedOpenApi() { + return GroupedOpenApi.builder().group("myapp").packagesToScan("com.example.myapp").build(); + } +``` + +### QUARTZ SETTINGS +Quartz Manager creates its own instance of a [Quartz Scheduler](http://www.quartz-scheduler.org/). + +By default, the managed quartz instance is instantiated with the following props: + +``` +org.quartz.scheduler.instanceName=quartz-manager-scheduler +org.quartz.threadPool.threadCount=1 +``` + +You can customize the configuration of the Quartz managed by Quartz Manager creating a file `managed-quartz.properties` in the classpath (`src/main/resources`). +For further details about the quartz properties, click [here](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/configuration/). + +#### Existing Quartz Instance +Quarz Manager imports transitively the [Quartz Scheduler library](https://mvnrepository.com/artifact/org.quartz-scheduler/quartz) ver 2.3.2. +However, Quartz Manager can be imported even thought you've already imported the quartz scheduler lib. Indeed Quartz Manager coexists with the existing Quarz Scheduler Instance you've created in your project. In that case, Quartz Manager will manage the triggers created by it and it won't interfere with the other quartz instances. +The prerequesite is that you've imported a quartz scheduler ver 2.3.x. + +You can configure the Quartz instance managed by Quartz Manager through the file `managed-quartz.properties` and your own Quartz instance through the file `quartz.properties`. + +If you've created a `SchedulerFactoryBean`, tag it as `@Primary` to avoid conflicts in-type, since Quartz Manager creates another bean of the same type. + +``` + @Primary + @Bean + public SchedulerFactoryBean schedulerFactoryBean( JobFactory jobFactory, Properties quartzProperties) { + SchedulerFactoryBean factory = new SchedulerFactoryBean(); + ... + return factory; + } +``` + + +## Quartz Manager Starter UI Lib +You can optionally import the following dependency to have the UI Dashboard to interact with the Quartz Manager API. + +### Dependency + +#### Maven +``` + + it.fabioformosa.quartz-manager + quartz-manager-starter-ui + 4.0.9 + +``` +#### Gradle +``` +implementation group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-ui', version: '4.0.9' +``` + +### Reach out the UI Console at URL +if you run locally [http://localhost:8080/quartz-manager-ui/index.html](http://localhost:8080/quartz-manager-ui/index.html) + + + +## Quartz Manager Starter Security Lib + +Import this optional dependency, if you want to enable a security layer and allow the access to the REST API and UI only to authenticated users. +The authentication model of Quartz Manager is based on [JWT](https://jwt.io/). + +If you're going to import Quartz Manager in a project with an existing configuration of Spring Security, consider the following: +- Only if your existing security is cookie-based, actually you don't need to import the module `quartz-manager-security-lib`. Simply, Quartz Manager will be under the hat of your security setup. In all other cases (based on HTTP headers, query params, etc) Quartz Manager is not aware about your auth token and it will implement its own authentication model. +- Quartz Manager Security relies on Spring Security upon a dedicated *HTTP Spring Security Chain* applied to the base path `/quartz-manager`. So it doesn't interfere with your existing security setup. +- Quartz Manager Security keeps simple the authentication, adopting the InMemory Model. You have to define the users (in terms of username/credentials passed via `application.properties`) can access to Quartz Manager. +- By default, the UI attaches the JWT Token to each request in the authorization header in the "Bearer" format. + +Future development: the Quart Manager Security OAuth2 client. + + +### Dependency + +#### Maven + +``` + + it.fabioformosa.quartz-manager + quartz-manager-starter-security + 4.0.9 + +``` + +#### Gradle + +``` +compile group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-security', version: '4.0.9' +``` + + +### Quartz Manager Security Lib - App Props + +| Property | Values |Mandatory | Default | Description | +| :--- |:--- |:--- |:--- |:-- | +| quartz-manager.security.jwt.secret | string | | | Secret to sign the JWT Token | +| quartz-manager.security.jwt.expiration-in-sec | number | no | 28800 | | +| quartz-manager.security.accounts.in-memory.enabled | boolean | no | true | | +|quartz-manager.security.accounts.in-memory.users[0].username | string | yes (if enabled) | | | +|quartz-manager.security.accounts.in-memory.users[0].password | string | yes | | | +|quartz-manager.security.accounts.in-memory.users[0].roles[0] | string | yes | | set the value ADMIN | + + +## Quart Manager Starter Persistence Lib + +By default, Quartz Manager runs with a `org.quartz.simpl.RAMJobStore` that stores your managed scheduler in memory. The RAMJobStore is the simplest store and also the most performant. However it comes with the drawback that all scheduling data are lost if your applications ends or crashes. In case of a restarting of your app, you can't resume the scheduler from the point it stopped. +Import the Quartz Manager Persistence Module if you want to persist your scheduler data. +The pre-requesite is the availability of Postgresql database where Quartz Manager can store its information. You have to provide it a bare database and a postresql user granted for DDL and DML queries. About the DDL, consider that Quartz Manager Persistence will create all tables, it needs to work, at the bootstrap. + +### Dependency + +#### Maven + +``` + + it.fabioformosa.quartz-manager + quartz-manager-starter-persistence + 4.0.9 + +``` + +#### Gradle + +``` +compile group: 'it.fabioformosa.quartz-manager', name: 'quartz-manager-starter-persistence', version: '4.0.9' +``` + +### Quartz Manager Persistence Lib - App Props + +| Property | Values |Mandatory | Default | Description | +| :--- |:--- |:--- |:--- |:-- | +| quartz-manager.persistence.quartz.datasource.url | string | yes | |eg. jdbc:postgresql://localhost:5432/quartzmanager | +| quartz-manager.persistence.quartz.datasource.user | string | yes | | | +| quartz-manager.persistence.quartz.datasource.password | string | yes | | | + + + +## Examples + +You can find some examples of different scenarios of projects which import Quartz Manager at the repository [quartz-manager-use-cases](https://github.com/fabioformosa/quartz-manager-use-cases) +* *simply-spring* - tipical scenario in which you create a minimal spring project from scratch dedicated to launch your scheduled jobs. Imported libraries: Quartz Manager API, Quartz Manager UI and Quartz Manager Security. +* *simply-spring-no-security* - as simple-spring, without the security. Imported libraries: Quartz Manager API, Quartz Manager UI. +* *existing-security-cookie-based* - It demonstrates how Quartz Manager stays under the security of your project, in case of an auth model based on cookies. Imported libraries: Quartz Manager API, Quartz Manager UI. +* *existing-security-header-based* - It demonstrates how Quartz Manager Security can coexists with another Spring Security Config present in your project. Imported libraries: Quartz Manager API, Quartz Manager UI and Quartz Manager Security. +* *existing-quartz* - It demonstrates how to Quartz Manager can coexist with a Quartz instance already present in your project Imported libraries: Quartz Manager API, Quartz Manager UI. +* *existing-quartz-and-storage* - It demonstrates how to Quartz Manager Persistence can coexist with a Quartz instance already present in your project. Imported libraries: Quartz Manager API, Quartz Manager UI and Quartz Manager Persistence. +* *with-persistence* - It demonstrates how to import the Quartz Manager Persistence and get created the quartz tables automatically at the bootstrap + + +## Limitations + +> Step by step, day by day + +Quartz Manager has a work-in-progress roadmap to be full-fledged library to manage a [Quartz Scheduler](http://www.quartz-scheduler.org/). + +At this stage of the roadmap, these are the limitations: +* Currently you cannot start multiple triggers or multiple jobs. At the moment a workaround is to launch multiple projects based on Quartz Manager. +* Currently you can only start [Quartz Simple Trigger](http://www.quartz-scheduler.org/documentation/quartz-2.3.0/tutorials/tutorial-lesson-05.html). The support to other kind of triggers will come soon: [Calendar Interval Trigger](https://www.quartz-scheduler.org/api/2.3.0/org/quartz/CalendarIntervalTrigger.html), [Cron Interval Trigger](https://www.quartz-scheduler.org/api/2.3.0/org/quartz/CronTrigger.html), [Daily Interval Trigger](https://www.quartz-scheduler.org/api/2.3.0/org/quartz/DailyTimeIntervalTrigger.html) +* Currently the cluster mode is not supported +* Currently the persistence of Quartz Manager supports only the PostgreSQL. The support to other king of triggers will come soon: MySQL, MariaDB, SqlServer, Oracle, H2. + +## ROADMAP + +Take a look a the [Project Roadmap](https://github.com/users/fabioformosa/projects/1). +Don't hesitate to give your feedback, your opinion is important to understand the priority. + +Next steps in the roadmap are: +* Manage multiple triggers and jobs +* Cluster mode support +* Support to other all types of Quartz Triggers: [Calendar Interval Trigger](https://www.quartz-scheduler.org/api/2.3.0/org/quartz/CalendarIntervalTrigger.html), [Cron Interval Trigger](https://www.quartz-scheduler.org/api/2.3.0/org/quartz/CronTrigger.html), [Daily Interval Trigger](https://www.quartz-scheduler.org/api/2.3.0/org/quartz/DailyTimeIntervalTrigger.html) +* UI Re-styling +* OAuth Client +* Support to other DBMS than PostreSQL: MySQL, MariaDB, SqlServer, Oracle, H2. + +## Repository + +Checkout the **master branch** to get the sourcecode of the latest released versions. +Checkout the **develop branch** to take a look at the sourcecode of the incoming release. + +## HOW-TO CONTRIBUTE + +For tech details, how-to run locally the project and how-to contribute, reach out this other [README.md](https://github.com/fabioformosa/quartz-manager/blob/develop/quartz-manager-parent/README.md) + +## ❤️ SUPPORT THE PROJECT ❤️ + +Sometimes it's a matter of a kind action. You can support Quartz Manager and its continuous improvement turning on a github star on this project ⭐ diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.browserslistrc b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.browserslistrc new file mode 100644 index 000000000..80848532e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.browserslistrc @@ -0,0 +1,12 @@ +# This file is used by the build system to adjust CSS and JS output to support the specified browsers below. +# For additional information regarding the format and rule options, please see: +# https://github.com/browserslist/browserslist#queries + +# You can see what browsers were selected by your queries by running: +# npx browserslist + +> 0.5% +last 2 versions +Firefox ESR +not dead +not IE 9-11 # For IE 9-11 support, remove 'not'. \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.editorconfig b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.editorconfig new file mode 100644 index 000000000..6e87a003d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.editorconfig @@ -0,0 +1,13 @@ +# Editor configuration, see http://editorconfig.org +root = true + +[*] +charset = utf-8 +indent_style = space +indent_size = 2 +insert_final_newline = true +trim_trailing_whitespace = true + +[*.md] +max_line_length = off +trim_trailing_whitespace = false diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.eslintrc.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.eslintrc.json new file mode 100644 index 000000000..5401d2d69 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.eslintrc.json @@ -0,0 +1,214 @@ +/* +👋 Hi! This file was autogenerated by tslint-to-eslint-config. +https://github.com/typescript-eslint/tslint-to-eslint-config + +It represents the closest reasonable ESLint configuration to this +project's original TSLint configuration. + +We recommend eventually switching this configuration to extend from +the recommended rulesets in typescript-eslint. +https://github.com/typescript-eslint/tslint-to-eslint-config/blob/master/docs/FAQs.md + +Happy linting! 💖 +*/ +{ + "env": { + "browser": true, + "es6": true, + "node": true + }, + "extends": [ + "prettier" + ], + "parser": "@typescript-eslint/parser", + "parserOptions": { + "project": "tsconfig.json", + "sourceType": "module" + }, + "plugins": [ + "eslint-plugin-import", + "@angular-eslint/eslint-plugin", + "@typescript-eslint", + "@typescript-eslint/tslint" + ], + "root": true, + "rules": { + "@angular-eslint/component-class-suffix": "error", + "@angular-eslint/component-selector": [ + "error", + { + "type": "element", + "prefix": "app", + "style": "kebab-case" + } + ], + "@angular-eslint/directive-class-suffix": "error", + "@angular-eslint/directive-selector": [ + "error", + { + "type": "attribute", + "prefix": "app", + "style": "camelCase" + } + ], + "@angular-eslint/no-host-metadata-property": "error", + "@angular-eslint/no-input-rename": "error", + "@angular-eslint/no-inputs-metadata-property": "error", + "@angular-eslint/no-output-rename": "error", + "@angular-eslint/no-outputs-metadata-property": "error", + "@angular-eslint/use-lifecycle-interface": "error", + "@angular-eslint/use-pipe-transform-interface": "error", + "@typescript-eslint/consistent-type-definitions": "error", + "@typescript-eslint/dot-notation": "off", + "@typescript-eslint/explicit-member-accessibility": [ + "off", + { + "accessibility": "explicit" + } + ], + "@typescript-eslint/indent": "off", + "@typescript-eslint/member-delimiter-style": [ + "off", + { + "multiline": { + "delimiter": "none", + "requireLast": true + }, + "singleline": { + "delimiter": "semi", + "requireLast": false + } + } + ], + "@typescript-eslint/member-ordering": "error", + "@typescript-eslint/naming-convention": [ + "error", + { + "selector": "variable", + "format": [ + "camelCase", + "UPPER_CASE" + ], + "leadingUnderscore": "forbid", + "trailingUnderscore": "forbid" + } + ], + "@typescript-eslint/no-empty-function": "off", + "@typescript-eslint/no-empty-interface": "error", + "@typescript-eslint/no-inferrable-types": [ + "error", + { + "ignoreParameters": true + } + ], + "@typescript-eslint/no-shadow": [ + "error", + { + "hoist": "all" + } + ], + "@typescript-eslint/no-unused-expressions": "error", + "@typescript-eslint/prefer-function-type": "error", + "@typescript-eslint/quotes": [ + "error", + "single" + ], + "@typescript-eslint/semi": [ + "off", + null + ], + "@typescript-eslint/tslint/config": [ + "error", + { + "rules": { + "import-spacing": true, + "invoke-injectable": true, + "no-access-missing-member": true, + "templates-use-public": true, + "whitespace": true + } + } + ], + "@typescript-eslint/type-annotation-spacing": "off", + "@typescript-eslint/unified-signatures": "error", + "brace-style": [ + "error", + "1tbs" + ], + "curly": "error", + "dot-notation": "off", + "eol-last": "off", + "eqeqeq": [ + "error", + "smart" + ], + "guard-for-in": "error", + "id-denylist": "off", + "id-match": "off", + "import/no-deprecated": "warn", + "indent": "off", + "max-len": [ + "error", + { + "code": 140 + } + ], + "no-bitwise": "error", + "no-caller": "error", + "no-console": [ + "error", + { + "allow": [ + "log", + "warn", + "dir", + "timeLog", + "assert", + "clear", + "count", + "countReset", + "group", + "groupEnd", + "table", + "dirxml", + "error", + "groupCollapsed", + "Console", + "profile", + "profileEnd", + "timeStamp", + "context" + ] + } + ], + "no-debugger": "error", + "no-empty": "off", + "no-empty-function": "off", + "no-eval": "error", + "no-fallthrough": "error", + "no-new-wrappers": "error", + "no-redeclare": "error", + "no-restricted-imports": "error", + "no-shadow": "off", + "no-throw-literal": "error", + "no-trailing-spaces": "off", + "no-underscore-dangle": "off", + "no-unused-expressions": "off", + "no-unused-labels": "error", + "no-var": "error", + "prefer-const": "error", + "quotes": "off", + "radix": "error", + "semi": "off", + "spaced-comment": [ + "error", + "always", + { + "markers": [ + "/" + ] + } + ], + "valid-typeof": "error" + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.gitignore b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.gitignore new file mode 100644 index 000000000..13cbb7233 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.gitignore @@ -0,0 +1,43 @@ +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db +/.angular/ diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierignore b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierignore new file mode 100644 index 000000000..02d108956 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierignore @@ -0,0 +1,47 @@ +src/polyfills.ts +src/typings.d.ts +_test.ts + +# See http://help.github.com/ignore-files/ for more about ignoring files. + +# compiled output +/dist +/tmp +/out-tsc + +# dependencies +/node_modules + +# IDEs and editors +/.idea +.project +.classpath +.c9/ +*.launch +.settings/ +*.sublime-workspace + +# IDE - VSCode +.vscode/* +!.vscode/settings.json +!.vscode/tasks.json +!.vscode/launch.json +!.vscode/extensions.json + +# misc +/.sass-cache +/connect.lock +/coverage +/libpeerconnection.log +npm-debug.log +testem.log +/typings + +# e2e +/e2e/*.js +/e2e/*.map + +# System Files +.DS_Store +Thumbs.db +/.angular/ diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierrc.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierrc.json new file mode 100644 index 000000000..dd2d87bae --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierrc.json @@ -0,0 +1,11 @@ +{ + "tabWidth": 2, + "useTabs": false, + "singleQuote": true, + "semi": true, + "bracketSpacing": true, + "arrowParens": "avoid", + "trailingComma": "es5", + "bracketSameLine": true, + "printWidth": 80 +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/angular.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/angular.json new file mode 100644 index 000000000..86c6522b9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/angular.json @@ -0,0 +1,120 @@ +{ + "$schema": "./node_modules/@angular/cli/lib/config/schema.json", + "version": 1, + "newProjectRoot": "projects", + "projects": { + "angular-spring-starter": { + "root": "", + "prefix": "qrzmng", + "sourceRoot": "src", + "projectType": "application", + "architect": { + "build": { + "builder": "@angular-devkit/build-angular:browser", + "options": { + "aot": true, + "outputPath": "dist", + "index": "src/index.html", + "main": "src/main.ts", + "tsConfig": "src/tsconfig.app.json", + "polyfills": "src/polyfills.ts", + "allowedCommonJsDependencies": [ + "stompjs", "sockjs-client", "moment" + ], + "assets": [ + "src/assets", + "src/favicon.ico" + ], + "styles": [ + "src/styles.css" + ], + "scripts": [] + }, + "configurations": { + "production": { + "budgets": [ + { + "type": "anyComponentStyle", + "maximumWarning": "6kb" + } + ], + "optimization": true, + "outputHashing": "all", + "sourceMap": false, + "namedChunks": false, + "aot": true, + "extractLicenses": true, + "vendorChunk": false, + "buildOptimizer": true, + "fileReplacements": [ + { + "replace": "src/environments/environment.ts", + "with": "src/environments/environment.prod.ts" + } + ] + } + } + }, + "serve": { + "builder": "@angular-devkit/build-angular:dev-server", + "options": { + "browserTarget": "angular-spring-starter:build" + }, + "configurations": { + "production": { + "browserTarget": "angular-spring-starter:build:production" + } + } + }, + "extract-i18n": { + "builder": "@angular-devkit/build-angular:extract-i18n", + "options": { + "browserTarget": "angular-spring-starter:build" + } + }, + "lint": { + "builder": "@angular-eslint/builder:lint", + "options": { + "eslintConfig": ".eslintrc.json", + "lintFilePatterns": ["**/*.spec.ts", "**/*.ts"] + } + } + } + }, + "angular-spring-starter-e2e": { + "root": "e2e", + "sourceRoot": "e2e", + "projectType": "application", + "architect": { + "e2e": { + "builder": "@angular-devkit/build-angular:protractor", + "options": { + "protractorConfig": "./protractor.conf.js", + "devServerTarget": "angular-spring-starter:serve" + } + }, + "lint": { + "builder": "@angular-devkit/build-angular:tslint", + "options": { + "tsConfig": [ + "e2e/tsconfig.e2e.json" + ], + "exclude": [] + } + } + } + } + }, + "schematics": { + "@schematics/angular:component": { + "prefix": "qrzmng", + "style": "css" + }, + "@schematics/angular:directive": { + "prefix": "qrzmng" + } + }, + "cli": { + "analytics": false + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts new file mode 100644 index 000000000..2976b66b5 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts @@ -0,0 +1,14 @@ +import { WebUiPage } from './app.po'; + +describe('web-ui App', () => { + let page: WebUiPage; + + beforeEach(() => { + page = new WebUiPage(); + }); + + it('should display message saying app works', () => { + page.navigateTo(); + expect(page.getParagraphText()).toContain('ANGULAR-SPRING-JWT-STARTER'); + }); +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.po.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.po.ts new file mode 100644 index 000000000..092797abd --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.po.ts @@ -0,0 +1,11 @@ +import { browser, element, by } from 'protractor'; + +export class WebUiPage { + navigateTo() { + return browser.get('/'); + } + + getParagraphText() { + return element(by.css('app-root app-header span')).getText(); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json new file mode 100644 index 000000000..ac7a37325 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/e2e", + "module": "commonjs", + "target": "es5", + "types":[ + "jasmine", + "node" + ] + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/jest.setup.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/jest.setup.ts new file mode 100644 index 000000000..1100b3e8a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/jest.setup.ts @@ -0,0 +1 @@ +import 'jest-preset-angular/setup-jest'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/karma.conf.js b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/karma.conf.js new file mode 100644 index 000000000..c3b764021 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/karma.conf.js @@ -0,0 +1,42 @@ +// Karma configuration file, see link for more information +// https://karma-runner.github.io/0.13/config/configuration-file.html + +module.exports = function (config) { + config.set({ + basePath: '', + frameworks: ['jasmine', '@angular-devkit/build-angular'], + plugins: [ + require('karma-jasmine'), + require('karma-chrome-launcher'), + require('karma-jasmine-html-reporter'), + require('karma-coverage-istanbul-reporter'), + require('@angular-devkit/build-angular/plugins/karma') + ], + client:{ + clearContext: false // leave Jasmine Spec Runner output visible in browser + }, + files: [ + + ], + preprocessors: { + + }, + mime: { + 'text/x-typescript': ['ts','tsx'] + }, + coverageIstanbulReporter: { + dir: require('path').join(__dirname, 'coverage'), reports: [ 'html', 'lcovonly' ], + fixWebpackSourcePaths: true + }, + + reporters: config.angularCli && config.angularCli.codeCoverage + ? ['progress', 'coverage-istanbul'] + : ['progress', 'kjhtml'], + port: 9876, + colors: true, + logLevel: config.LOG_INFO, + autoWatch: true, + browsers: ['Chrome'], + singleRun: false + }); +}; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package-lock.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package-lock.json new file mode 100644 index 000000000..f3bbc29ec --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package-lock.json @@ -0,0 +1,33678 @@ +{ + "name": "quartz-manager-ui", + "version": "0.1.1", + "lockfileVersion": 2, + "requires": true, + "packages": { + "": { + "name": "quartz-manager-ui", + "version": "0.1.1", + "license": "MIT", + "dependencies": { + "@angular-material-components/datetime-picker": "8.0.0", + "@angular-material-components/moment-adapter": "8.0.0", + "@angular/animations": "14.2.12", + "@angular/cdk": "^14.0.1", + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/flex-layout": "14.0.0-beta.41", + "@angular/forms": "14.2.12", + "@angular/material": "^14.0.1", + "@angular/platform-browser": "14.2.12", + "@angular/platform-browser-dynamic": "14.2.12", + "@angular/platform-server": "14.2.12", + "@angular/router": "14.2.12", + "@auth0/angular-jwt": "5.1.0", + "@fortawesome/fontawesome": "^1.1.4", + "@fortawesome/fontawesome-free-regular": "^5.0.8", + "@fortawesome/fontawesome-free-solid": "^5.0.8", + "@stomp/ng2-stompjs": "^0.6.3", + "core-js": "2.5.1", + "hammerjs": "2.0.8", + "moment": "^2.29.1", + "net": "^1.0.2", + "rxjs": "6.5.5", + "sockjs-client": "^1.1.1", + "stompjs": "^2.3.3", + "tslib": "~2.4.1", + "zone.js": "~0.12.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "14.2.10", + "@angular-devkit/core": "^14.2.10", + "@angular-eslint/builder": "14.4.0", + "@angular-eslint/eslint-plugin": "14.4.0", + "@angular-eslint/eslint-plugin-template": "14.4.0", + "@angular-eslint/schematics": "14.4.0", + "@angular-eslint/template-parser": "14.4.0", + "@angular/cli": "14.2.10", + "@angular/compiler-cli": "14.2.12", + "@angular/language-service": "14.2.12", + "@types/hammerjs": "2.0.34", + "@types/jasmine": "2.5.54", + "@types/jasminewd2": "2.0.3", + "@types/jest": "28.1.1", + "@types/node": "^12.11.1", + "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.46.0", + "@typescript-eslint/parser": "5.43.0", + "codelyzer": "~6.0.2", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.2.1", + "jasmine-core": "~4.5.0", + "jasmine-spec-reporter": "~7.0.0", + "jest": "28.1.3", + "jest-preset-angular": "~12.2.3", + "karma": "~6.4.1", + "karma-chrome-launcher": "~3.1.1", + "karma-cli": "2.0.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "prettier": "^2.8.1", + "prettier-eslint": "^15.0.1", + "protractor": "~7.0.0", + "ts-node": "10.9.1", + "typescript": "4.6.4" + } + }, + "node_modules/@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "node_modules/@ampproject/remapping": { + "version": "2.2.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/architect/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/build-angular": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz", + "integrity": "sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/build-webpack": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "14.2.10", + "ansi-colors": "4.1.3", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "16.1.2", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.1", + "esbuild-wasm": "0.15.5", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.0.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "mini-css-extract-plugin": "2.6.1", + "minimatch": "5.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", + "postcss-loader": "7.0.1", + "postcss-preset-env": "7.8.0", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.54.4", + "sass-loader": "13.0.2", + "semver": "7.3.7", + "source-map-loader": "4.0.0", + "source-map-support": "0.5.21", + "stylus": "0.59.0", + "stylus-loader": "7.0.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.0", + "webpack": "5.74.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.0", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "optionalDependencies": { + "esbuild": "0.15.5" + }, + "peerDependencies": { + "@angular/compiler-cli": "^14.0.0", + "@angular/localize": "^14.0.0", + "@angular/service-worker": "^14.0.0", + "karma": "^6.3.0", + "ng-packagr": "^14.0.0", + "protractor": "^7.0.0", + "tailwindcss": "^2.0.0 || ^3.0.0", + "typescript": ">=4.6.2 <4.9" + }, + "peerDependenciesMeta": { + "@angular/localize": { + "optional": true + }, + "@angular/service-worker": { + "optional": true + }, + "karma": { + "optional": true + }, + "ng-packagr": { + "optional": true + }, + "protractor": { + "optional": true + }, + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs": { + "version": "6.6.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/@angular-devkit/build-angular/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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular-devkit/build-angular/node_modules/tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + }, + "node_modules/@angular-devkit/build-webpack": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz", + "integrity": "sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.10", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "webpack": "^5.30.0", + "webpack-dev-server": "^4.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/build-webpack/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "dependencies": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "chokidar": "^3.5.2" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@angular-devkit/core/node_modules/rxjs": { + "version": "6.6.7", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/core/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/@angular-devkit/schematics": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", + "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/@angular-devkit/schematics/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@angular-eslint/builder": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.4.0.tgz", + "integrity": "sha512-AhAUFvSg0urtb6Lsowvuxwu6DMXUy0BPwrnfNOBGjRt9vG7F9kgXXAsm5DnIS0GNy/mLZ9mSfa86fv++1e0KUA==", + "dev": true, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/bundled-angular-compiler": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.4.0.tgz", + "integrity": "sha512-KMHPHd24s0HVvAP/DxSSqhYBWhwW8FgS/r0Uwv8eWpsIdc/z/Chd2ush2SgPchmmquAXTgOZsbEY7ZmW+XkJfQ==", + "dev": true + }, + "node_modules/@angular-eslint/eslint-plugin": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.4.0.tgz", + "integrity": "sha512-2rZQ4mt7tEUW+lI5jjuj3HWaT4VQtWTG6+LDnmuUmx76m8hqQ7NvFUpOcNDofu5KbEVBP+oF2DA6wjoZOIuSOA==", + "dev": true, + "dependencies": { + "@angular-eslint/utils": "14.4.0", + "@typescript-eslint/utils": "5.43.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.4.0.tgz", + "integrity": "sha512-d3GM/EU2iWzr+BrITwO4gBf9WfDfuOdTjfinV/zN84oXMFaK2ENo+IP6OEsD9hh36rdPps+m2gFGDdx+rTzBpg==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "14.4.0", + "@angular-eslint/utils": "14.4.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "aria-query": "5.1.3", + "axobject-query": "3.1.1" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@angular-eslint/eslint-plugin-template/node_modules/axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/@angular-eslint/schematics": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.4.0.tgz", + "integrity": "sha512-BrGkPug+CZQWOfmNRsJDrEtYJcxvzF/kLlV7RjvIN9Ky5TjUiJVCeafl3VY6COSY32tjlh2GvBdl1AQKWWovbA==", + "dev": true, + "dependencies": { + "@angular-eslint/eslint-plugin": "14.4.0", + "@angular-eslint/eslint-plugin-template": "14.4.0", + "ignore": "5.2.0", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + }, + "peerDependencies": { + "@angular/cli": ">= 14.0.0 < 15.0.0" + } + }, + "node_modules/@angular-eslint/schematics/node_modules/ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/@angular-eslint/schematics/node_modules/tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/@angular-eslint/template-parser": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.4.0.tgz", + "integrity": "sha512-zq888KpQB0YTEK26mkKcT4fs8LDWWT1oAEXU8DrXhvkikS8XavTSHOWJye/bVZR4oJRFCF5YTJV75DEMcGNIpQ==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "14.4.0", + "eslint-scope": "^7.0.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-eslint/template-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@angular-eslint/utils": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.4.0.tgz", + "integrity": "sha512-dPHklAVfh+JfueDfXre9Xooq7p5bFyKO2Z6y1agYeofAgHCPIJOPx2AhtFPrOtsc4VXFFiyE9XbowlXh4ogoKQ==", + "dev": true, + "dependencies": { + "@angular-eslint/bundled-angular-compiler": "14.4.0", + "@typescript-eslint/utils": "5.43.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0", + "typescript": "*" + } + }, + "node_modules/@angular-material-components/datetime-picker": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-material-components/datetime-picker/-/datetime-picker-8.0.0.tgz", + "integrity": "sha512-mpndWbRimp77omkfa9LlpY21FN8xOFH8NV4hSLOxWg7RpUa1gZXLtW6mTRuDQ9cpWO6m9qH/8ioHKtvY+Epckg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^14.0.1", + "@angular/common": "^14.0.1", + "@angular/core": "^14.0.1", + "@angular/forms": "^14.0.1", + "@angular/material": "^14.0.1", + "@angular/platform-browser": "^14.0.1" + } + }, + "node_modules/@angular-material-components/moment-adapter": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-material-components/moment-adapter/-/moment-adapter-8.0.0.tgz", + "integrity": "sha512-Kxb84BLNxw4+imJo8qYc4ZJM0DjyO+mroiZZtLxu7futTgjbWVk02x9DBw6GFB1XJNTQzk1GhapZ+mL8irCAbA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.1", + "@angular/core": "^14.0.1", + "moment": "^2.18.1" + } + }, + "node_modules/@angular/animations": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.12" + } + }, + "node_modules/@angular/cdk": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "optionalDependencies": { + "parse5": "^5.0.0" + }, + "peerDependencies": { + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/cli": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.10.tgz", + "integrity": "sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ==", + "dev": true, + "dependencies": { + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "@schematics/angular": "14.2.10", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "debug": "4.3.4", + "ini": "3.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "npm-package-arg": "9.1.0", + "npm-pick-manifest": "7.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "13.6.2", + "resolve": "1.22.1", + "semver": "7.3.7", + "symbol-observable": "4.0.0", + "uuid": "8.3.2", + "yargs": "17.5.1" + }, + "bin": { + "ng": "bin/ng.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@angular/cli/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/@angular/cli/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==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@angular/cli/node_modules/yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "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/@angular/cli/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/common": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/compiler": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/core": "14.2.12" + }, + "peerDependenciesMeta": { + "@angular/core": { + "optional": true + } + } + }, + "node_modules/@angular/compiler-cli": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "bin": { + "ng-xi18n": "bundles/src/bin/ng_xi18n.js", + "ngc": "bundles/src/bin/ngc.js", + "ngcc": "bundles/ngcc/main-ngcc.js" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/compiler": "14.2.12", + "typescript": ">=4.6.2 <4.9" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/core": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "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/@angular/compiler-cli/node_modules/@babel/core/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@babel/generator": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@angular/compiler-cli/node_modules/magic-string": { + "version": "0.26.7", + "dev": true, + "license": "MIT", + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@angular/core": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "rxjs": "^6.5.3 || ^7.4.0", + "zone.js": "~0.11.4 || ~0.12.0" + } + }, + "node_modules/@angular/flex-layout": { + "version": "14.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz", + "integrity": "sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg==", + "deprecated": "This package has been deprecated. Please see https://blog.angular.io/modern-css-in-angular-layouts-4a259dca9127", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/cdk": "^14.0.0", + "@angular/common": "^14.0.0", + "@angular/core": "^14.0.0", + "@angular/platform-browser": "^14.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/forms": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/language-service": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", + "dev": true, + "engines": { + "node": "^14.15.0 || >=16.10.0" + } + }, + "node_modules/@angular/material": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", + "dependencies": { + "tslib": "^2.3.0" + }, + "peerDependencies": { + "@angular/animations": "^14.0.0 || ^15.0.0", + "@angular/cdk": "14.2.7", + "@angular/common": "^14.0.0 || ^15.0.0", + "@angular/core": "^14.0.0 || ^15.0.0", + "@angular/forms": "^14.0.0 || ^15.0.0", + "@angular/platform-browser": "^14.0.0 || ^15.0.0", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@angular/platform-browser": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/animations": "14.2.12", + "@angular/common": "14.2.12", + "@angular/core": "14.2.12" + }, + "peerDependenciesMeta": { + "@angular/animations": { + "optional": true + } + } + }, + "node_modules/@angular/platform-browser-dynamic": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12" + } + }, + "node_modules/@angular/platform-server": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-14.2.12.tgz", + "integrity": "sha512-RDxNh47Rp0EYrimbzviqhagdbL58Z3S88PDYybYbshFwV+MgWsvWasK/WntTMP/JtRP4FBU0Uiwxy7mgVdxb0g==", + "dependencies": { + "domino": "^2.1.2", + "tslib": "^2.3.0", + "xhr2": "^0.2.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/animations": "14.2.12", + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", + "@angular/platform-browser-dynamic": "14.2.12" + } + }, + "node_modules/@angular/router": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", + "dependencies": { + "tslib": "^2.3.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "peerDependencies": { + "@angular/common": "14.2.12", + "@angular/core": "14.2.12", + "@angular/platform-browser": "14.2.12", + "rxjs": "^6.5.3 || ^7.4.0" + } + }, + "node_modules/@assemblyscript/loader": { + "version": "0.10.1", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@auth0/angular-jwt": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-5.1.0.tgz", + "integrity": "sha512-EAQoNKPQSZYphcX6FnY2e7xQpD4ZdHQ1DbHq/m+G1U1qA60m3XnhdjPPfu+blVHARlxEbRzWXc48UOVrnMsrZw==", + "dependencies": { + "tslib": "^2.0.0" + }, + "peerDependencies": { + "@angular/common": ">=12.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "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", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/generator/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "dependencies": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.20.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "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", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "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.18.9", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-function-name": { + "version": "7.19.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-hoist-variables": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.20.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.20.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.20.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-split-export-declaration": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.19.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.19.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "dependencies": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.20.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.18.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "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.18.6", + "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.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.13.0" + } + }, + "node_modules/@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "dev": true, + "dependencies": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@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.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "dependencies": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "dependencies": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "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.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "dependencies": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "dependencies": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "dependencies": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.18.9" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "dependencies": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@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-import-assertions": "^7.18.6", + "@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.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.1", + "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.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.13.4" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@babel/generator": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/types": { + "version": "7.20.5", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@colors/colors": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "node_modules/@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "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/@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/eslintrc/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@eslint/eslintrc/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/@eslint/eslintrc/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@fortawesome/fontawesome": { + "version": "1.1.8", + "license": "MIT", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-common-types": { + "version": "0.1.7", + "license": "UNLICENSED", + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free-regular": { + "version": "5.0.13", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@fortawesome/fontawesome-free-solid": { + "version": "5.0.13", + "license": "(CC-BY-4.0 AND MIT)", + "dependencies": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/console/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/console/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/@jest/console/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/console/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==", + "dev": true + }, + "node_modules/@jest/console/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/core/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/@jest/core/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/core/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==", + "dev": true + }, + "node_modules/@jest/core/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/core/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/core/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/core/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/environment": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "dependencies": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/reporters/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/@jest/reporters/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/reporters/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==", + "dev": true + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/reporters/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/@jest/reporters/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/reporters/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.24.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/test-sequencer/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/transform/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/transform/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/@jest/transform/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/transform/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==", + "dev": true + }, + "node_modules/@jest/transform/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/transform/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/@jest/types/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@jest/types/node_modules/chalk": { + "version": "4.1.2", + "dev": 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/@jest/types/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/@jest/types/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@jest/types/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/types/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "node_modules/@jridgewell/source-map/node_modules/@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.17", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "node_modules/@ngtools/webpack": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.10.tgz", + "integrity": "sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ==", + "dev": true, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + }, + "peerDependencies": { + "@angular/compiler-cli": "^14.0.0", + "typescript": ">=4.6.2 <4.9", + "webpack": "^5.54.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true, + "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==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "dependencies": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "dependencies": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/git/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "dependencies": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + }, + "bin": { + "installed-package-contents": "index.js" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", + "dev": true, + "dependencies": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "dependencies": { + "infer-owner": "^1.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "dependencies": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/@schematics/angular": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", + "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", + "dev": true, + "dependencies": { + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "jsonc-parser": "3.1.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0", + "npm": "^6.11.0 || ^7.5.6 || >=8.0.0", + "yarn": ">= 1.13.0" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.24.51", + "dev": true, + "license": "MIT" + }, + "node_modules/@sinonjs/commons": { + "version": "1.8.6", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@stomp/ng2-stompjs": { + "version": "0.6.4", + "license": "MIT", + "dependencies": { + "@stomp/stompjs": "^4.0.0 >=4.0.2" + } + }, + "node_modules/@stomp/stompjs": { + "version": "4.0.8", + "license": "Apache-2.0", + "optionalDependencies": { + "websocket": "^1.0.24" + } + }, + "node_modules/@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "node_modules/@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "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.18.3", + "dev": true, + "license": "MIT", + "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/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/cookie": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.13", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.10", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.4", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "0.0.51", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "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.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "dependencies": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/hammerjs": { + "version": "2.0.34", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.4", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jasmine": { + "version": "2.5.54", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/jasminewd2": { + "version": "2.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/jasmine": "*" + } + }, + "node_modules/@types/jest": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.1.tgz", + "integrity": "sha512-C2p7yqleUKtCkVjlOur9BWVA4HgUQmEj/HWCt5WzZ5mLXrWnyIfl0wGuArc+kBXsy0ZZfLp+7dywB4HtSVYGVA==", + "dev": true, + "dependencies": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "node_modules/@types/jsdom": { + "version": "16.2.15", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.11", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "node_modules/@types/node": { + "version": "12.20.55", + "dev": true, + "license": "MIT" + }, + "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/parse5": { + "version": "6.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true + }, + "node_modules/@types/q": { + "version": "0.0.32", + "dev": true, + "license": "MIT" + }, + "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.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "node_modules/@types/selenium-webdriver": { + "version": "3.0.20", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "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.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "dependencies": { + "@types/mime": "*", + "@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/stack-utils": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/tough-cookie": { + "version": "4.0.2", + "dev": true, + "license": "MIT" + }, + "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/@types/yargs": { + "version": "17.0.16", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz", + "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^5.0.0", + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.46.0.tgz", + "integrity": "sha512-K1lyydW9s+mfQWW6hZSygNvQLAMKzrO4Em5L9Fa551D6CC12pVyNIqikWgZeAkwE1GFYZtipFYF8UsONVwaxIA==", + "dev": true, + "dependencies": { + "@typescript-eslint/utils": "5.46.0", + "lodash": "^4.17.21" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0", + "tslint": "^5.0.0 || ^6.0.0", + "typescript": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/@typescript-eslint/scope-manager": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.0.tgz", + "integrity": "sha512-7wWBq9d/GbPiIM6SqPK9tfynNxVbfpihoY5cSFMer19OYUA3l4powA2uv0AV2eAZV6KoAh6lkzxv4PoxOLh1oA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/@typescript-eslint/types": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.0.tgz", + "integrity": "sha512-wHWgQHFB+qh6bu0IAPAJCdeCdI0wwzZnnWThlmHNY01XJ9Z97oKqKOzWYpR2I83QmshhQJl6LDM9TqMiMwJBTw==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/@typescript-eslint/typescript-estree": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.0.tgz", + "integrity": "sha512-kDLNn/tQP+Yp8Ro2dUpyyVV0Ksn2rmpPpB0/3MO874RNmXtypMwSeazjEN/Q6CTp8D7ExXAAekPEcCEB/vtJkw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/@typescript-eslint/utils": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.0.tgz", + "integrity": "sha512-4O+Ps1CRDw+D+R40JYh5GlKLQERXRKW5yIQoNDpmXPJ+C7kaPF9R7GWl+PxGgXjB3PQCqsaaZUpZ9dG4U6DO7g==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/@typescript-eslint/visitor-keys": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.0.tgz", + "integrity": "sha512-E13gBoIXmaNhwjipuvQg1ByqSAu/GbEpP/qzFihugJ+MomtoJtFAJG/+2DRPByf57B863m0/q7Zt16V9ohhANw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.46.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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/@typescript-eslint/eslint-plugin-tslint/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin-tslint/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz", + "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz", + "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz", + "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@typescript-eslint/type-utils/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz", + "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz", + "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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/@typescript-eslint/typescript-estree/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "engines": { + "node": ">= 6" + }, + "peerDependencies": { + "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz", + "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==", + "dev": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz", + "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "5.43.0", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.1", + "dev": true, + "license": "MIT" + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/abab": { + "version": "2.0.6", + "dev": true, + "license": "BSD-3-Clause" + }, + "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==", + "dev": true + }, + "node_modules/accepts": { + "version": "1.3.8", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.8.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-globals": { + "version": "6.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + } + }, + "node_modules/acorn-globals/node_modules/acorn": { + "version": "7.4.1", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.8.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/acorn-walk": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/adjust-sourcemap-loader": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "engines": { + "node": ">=8.9" + } + }, + "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/adm-zip": { + "version": "0.4.16", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.3.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "dependencies": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/agentkeepalive/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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==", + "dev": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "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/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/app-root-path": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "node_modules/argparse": { + "version": "1.0.10", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/argparse/node_modules/sprintf-js": { + "version": "1.0.3", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/aria-query": { + "version": "3.0.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "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-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array-uniq": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arrify": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/asn1": { + "version": "0.2.6", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": "~2.1.0" + } + }, + "node_modules/assert-plus": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.7", + "dev": true, + "license": "ISC" + }, + "node_modules/asynckit": { + "version": "0.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + ], + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "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/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/aws-sign2": { + "version": "0.7.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/aws4": { + "version": "1.11.0", + "dev": true, + "license": "MIT" + }, + "node_modules/axobject-query": { + "version": "2.0.2", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "ast-types-flow": "0.0.7" + } + }, + "node_modules/babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "dependencies": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-jest/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/babel-jest/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/babel-jest/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/babel-jest/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==", + "dev": true + }, + "node_modules/babel-jest/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-jest/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-loader": { + "version": "8.2.5", + "dev": true, + "license": "MIT", + "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-loader/node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "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.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "dependencies": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@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-top-level-await": "^7.8.3" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/base64-js": { + "version": "1.5.1", + "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" + } + ], + "license": "MIT" + }, + "node_modules/base64id": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "tweetnacl": "^0.14.3" + } + }, + "node_modules/big.js": { + "version": "5.2.2", + "dev": true, + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/blocking-proxy": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "blocking-proxy": "built/lib/bin.js" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/body-parser": { + "version": "1.20.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "dependencies": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-process-hrtime": { + "version": "1.0.0", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/browserslist": { + "version": "4.21.4", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserstack": { + "version": "1.6.1", + "dev": true, + "license": "MIT", + "dependencies": { + "https-proxy-agent": "^2.2.1" + } + }, + "node_modules/browserstack/node_modules/agent-base": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/browserstack/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/browserstack/node_modules/https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/bs-logger": { + "version": "0.2.6", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-json-stable-stringify": "2.x" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "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" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/bufferutil": { + "version": "4.0.7", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/builtin-modules": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "dependencies": { + "semver": "^7.0.0" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/cacache": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", + "dev": true, + "dependencies": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/cacache/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/cacache/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/cacache/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/cacache/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001436", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/caseless": { + "version": "0.12.0", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "node_modules/chokidar": { + "version": "3.5.3", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "license": "MIT", + "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/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/ci-info": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "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==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-spinners": { + "version": "2.7.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/codelyzer": { + "version": "6.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "peerDependencies": { + "@angular/compiler": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "@angular/core": ">=2.3.1 <13.0.0 || ^12.0.0-next || ^12.1.0-next || ^12.2.0-next", + "tslint": "^5.0.0 || ^6.0.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/compiler": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "tslib": "^1.10.0" + } + }, + "node_modules/codelyzer/node_modules/@angular/core": { + "version": "9.0.0", + "dev": true, + "license": "MIT", + "peerDependencies": { + "rxjs": "^6.5.3", + "tslib": "^1.10.0", + "zone.js": "~0.10.2" + } + }, + "node_modules/codelyzer/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/codelyzer/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD" + }, + "node_modules/codelyzer/node_modules/zone.js": { + "version": "0.10.3", + "dev": true, + "license": "MIT" + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "node_modules/color-convert": { + "version": "1.9.3", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true, + "bin": { + "color-support": "bin.js" + } + }, + "node_modules/colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "node_modules/colors": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.1.90" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "2.20.3", + "dev": true, + "license": "MIT" + }, + "node_modules/common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "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/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/compression/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==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/connect": { + "version": "3.7.0", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/connect/node_modules/debug": { + "version": "2.6.9", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/connect/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "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-type": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-source-map": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.4.2", + "dev": true, + "license": "MIT", + "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": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } + }, + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/copy-webpack-plugin/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/core-js": { + "version": "2.5.1", + "license": "MIT" + }, + "node_modules/core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "dependencies": { + "browserslist": "^4.21.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/core-js" + } + }, + "node_modules/core-util-is": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "dev": true, + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "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/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "node_modules/critters": { + "version": "0.0.16", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + } + }, + "node_modules/critters/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/critters/node_modules/chalk": { + "version": "4.1.2", + "dev": 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/critters/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/critters/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/critters/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/critters/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/critters/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-blank-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "bin": { + "css-has-pseudo": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "dependencies": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "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.2.0", + "semver": "^7.3.5" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "bin": { + "css-prefers-color-scheme": "dist/cli.cjs" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/css-select": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "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-selector-tokenizer": { + "version": "0.7.3", + "dev": true, + "license": "MIT", + "dependencies": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/cssauron": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "through": "X.X.X" + } + }, + "node_modules/cssdb": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + } + }, + "node_modules/cssesc": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssom": { + "version": "0.5.0", + "dev": true, + "license": "MIT" + }, + "node_modules/cssstyle": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cssom": "~0.3.6" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cssstyle/node_modules/cssom": { + "version": "0.3.8", + "dev": true, + "license": "MIT" + }, + "node_modules/custom-event": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/d": { + "version": "1.0.1", + "license": "ISC", + "optional": true, + "dependencies": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/dashdash": { + "version": "1.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/data-urls": { + "version": "3.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/data-urls/node_modules/whatwg-url": { + "version": "11.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/date-format": { + "version": "4.0.14", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "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/decamelize": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decimal.js": { + "version": "10.4.3", + "dev": true, + "license": "MIT" + }, + "node_modules/dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "node_modules/deep-equal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz", + "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.8" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-equal/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/deep-is": { + "version": "0.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "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/defaults": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "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": "2.2.2", + "dev": true, + "license": "MIT", + "dependencies": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/array-union": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "array-uniq": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/globby": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/del/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "node_modules/depd": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dependency-graph": { + "version": "0.11.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "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/di": { + "version": "0.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/diff": { + "version": "4.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "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==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "node_modules/dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "node_modules/dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "dependencies": { + "@leichtgewicht/ip-codec": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/dom-serialize": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "node_modules/dom-serializer": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "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/domelementtype": { + "version": "2.3.0", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "license": "BSD-2-Clause" + }, + "node_modules/domexception": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/domhandler": { + "version": "4.3.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "domelementtype": "^2.2.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/domino": { + "version": "2.1.6", + "license": "BSD-2-Clause" + }, + "node_modules/domutils": { + "version": "2.8.0", + "dev": true, + "license": "BSD-2-Clause", + "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/ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/electron-to-chromium": { + "version": "1.4.284", + "dev": true, + "license": "ISC" + }, + "node_modules/emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/emojis-list": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "dependencies": { + "iconv-lite": "^0.6.2" + } + }, + "node_modules/encoding/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==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/engine.io": { + "version": "6.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/ws": { + "version": "8.2.3", + "dev": true, + "license": "MIT", + "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/enhanced-resolve": { + "version": "5.12.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/ent": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/entities": { + "version": "2.2.0", + "dev": true, + "license": "BSD-2-Clause", + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "dependencies": { + "prr": "~1.0.1" + }, + "bin": { + "errno": "cli.js" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "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.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "unbox-primitive": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-get-iterator/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/es-module-lexer": { + "version": "0.9.3", + "dev": true, + "license": "MIT" + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + } + }, + "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.62", + "hasInstallScript": true, + "license": "ISC", + "optional": 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", + "license": "MIT", + "optional": true, + "dependencies": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "node_modules/es6-promise": { + "version": "4.2.8", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-promisify": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promise": "^4.0.3" + } + }, + "node_modules/es6-symbol": { + "version": "3.1.3", + "license": "ISC", + "optional": true, + "dependencies": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "node_modules/esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "node_modules/esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-wasm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", + "dev": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.0.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/escodegen/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", + "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "dev": true, + "dependencies": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + } + }, + "node_modules/eslint-import-resolver-node/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/eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/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/eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/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/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "dev": true, + "license": "BSD-2-Clause", + "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", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^2.0.0" + }, + "engines": { + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/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/eslint/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/eslint/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/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==", + "dev": true + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/eslint/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/eslint/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/eslint/node_modules/globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/eslint/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/eslint/node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/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/eslint/node_modules/optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/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/eslint/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/eslint/node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/eslint/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==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "dependencies": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/eventemitter-asyncresource": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/eventemitter3": { + "version": "4.0.7", + "dev": true, + "license": "MIT" + }, + "node_modules/events": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "dev": true, + "license": "MIT", + "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/exit": { + "version": "0.1.2", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/expect/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/expect/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==", + "dev": true + }, + "node_modules/expect/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/expect/node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/expect/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/expect/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "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": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "node_modules/express/node_modules/cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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/finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/express/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ext": { + "version": "1.7.0", + "license": "ISC", + "optional": true, + "dependencies": { + "type": "^2.7.2" + } + }, + "node_modules/ext/node_modules/type": { + "version": "2.7.2", + "license": "ISC", + "optional": true + }, + "node_modules/extend": { + "version": "3.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/extsprintf": { + "version": "1.3.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT" + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "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", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/fastparse": { + "version": "1.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/fastq": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/faye-websocket": { + "version": "0.11.4", + "license": "Apache-2.0", + "dependencies": { + "websocket-driver": ">=0.5.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^1.0.5" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/finalhandler/node_modules/ms": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/finalhandler/node_modules/on-finished": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "dependencies": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.2.7", + "dev": true, + "license": "ISC" + }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/forever-agent": { + "version": "0.6.1", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "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": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "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", + "dev": true, + "license": "ISC" + }, + "node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "dependencies": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "dev": true, + "license": "ISC", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/getpass": { + "version": "0.1.7", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "dev": 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/glob-parent": { + "version": "5.1.2", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/globals": { + "version": "11.12.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "dev": true, + "license": "ISC" + }, + "node_modules/grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "node_modules/hammerjs": { + "version": "2.0.8", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "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/har-schema": { + "version": "2.0.0", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=4" + } + }, + "node_modules/har-validator": { + "version": "5.1.5", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/har-validator/node_modules/ajv": { + "version": "6.12.6", + "dev": 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/har-validator/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/has": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-ansi": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/has-ansi/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "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": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "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==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "node_modules/hdr-histogram-js": { + "version": "2.0.3", + "dev": true, + "license": "BSD", + "dependencies": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "node_modules/hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "dependencies": { + "lru-cache": "^7.5.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "dependencies": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + } + }, + "node_modules/hpack.js/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==", + "dev": true, + "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/hpack.js/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==", + "dev": true + }, + "node_modules/hpack.js/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==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/html-encoding-sniffer": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "whatwg-encoding": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "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-escaper": { + "version": "2.0.2", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true + }, + "node_modules/http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-parser-js": { + "version": "0.5.8", + "license": "MIT" + }, + "node_modules/http-proxy": { + "version": "1.18.1", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "dependencies": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "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-signature": { + "version": "1.2.0", + "dev": 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/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "dependencies": { + "ms": "^2.0.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "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", + "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" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "dependencies": { + "minimatch": "^5.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ignore-walk/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/ignore-walk/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "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-fresh/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/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", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "dev": true, + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "license": "ISC" + }, + "node_modules/ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/inquirer/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/inquirer/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/inquirer/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==", + "dev": true + }, + "node_modules/inquirer/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/rxjs": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.6.0.tgz", + "integrity": "sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/inquirer/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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/ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true + }, + "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-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "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-arrayish": { + "version": "0.2.1", + "dev": true, + "license": "MIT" + }, + "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", + "dev": true, + "license": "MIT", + "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-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.11.0", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-interactive": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "node_modules/is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-number": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "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-path-cwd": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-in-cwd": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-path-inside": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-path-inside": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-is-inside": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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", + "dev": true, + "license": "MIT", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-potential-custom-element-name": { + "version": "1.0.1", + "dev": true, + "license": "MIT" + }, + "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==", + "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-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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", + "dev": true, + "license": "MIT", + "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-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "devOptional": true, + "license": "MIT" + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/isbinaryfile": { + "version": "4.0.10", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/isobject": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/isstream": { + "version": "0.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.0", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument/node_modules/semver": { + "version": "6.3.0", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.5", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jasmine": { + "version": "2.8.0", + "dev": true, + "license": "MIT", + "dependencies": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "bin": { + "jasmine": "bin/jasmine.js" + } + }, + "node_modules/jasmine-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.5.0.tgz", + "integrity": "sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw==", + "dev": true + }, + "node_modules/jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "dependencies": { + "colors": "1.4.0" + } + }, + "node_modules/jasmine/node_modules/jasmine-core": { + "version": "2.8.0", + "dev": true, + "license": "MIT" + }, + "node_modules/jasminewd2": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6.9.x" + } + }, + "node_modules/jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-changed-files/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/jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-circus/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-circus/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==", + "dev": true + }, + "node_modules/jest-circus/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/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/jest-circus/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-circus/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-circus/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-circus/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "dependencies": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-cli/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-cli/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-cli/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-cli/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==", + "dev": true + }, + "node_modules/jest-cli/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-cli/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-config/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-config/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-config/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==", + "dev": true + }, + "node_modules/jest-config/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-config/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-config/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-config/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-diff/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-diff/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-diff/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==", + "dev": true + }, + "node_modules/jest-diff/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-diff/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-diff/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-each/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-each/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==", + "dev": true + }, + "node_modules/jest-each/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-each/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-each/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-each/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-environment-jsdom": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-haste-map/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-haste-map/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-haste-map/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/jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "dependencies": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-leak-detector/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-leak-detector/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-matcher-utils/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-matcher-utils/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-matcher-utils/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==", + "dev": true + }, + "node_modules/jest-matcher-utils/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-matcher-utils/node_modules/jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/jest-matcher-utils/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/chalk": { + "version": "4.1.2", + "dev": 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/jest-message-util/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-message-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-message-util/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-message-util/node_modules/slash": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-message-util/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-mock": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-preset-angular": { + "version": "12.2.3", + "dev": true, + "license": "MIT", + "dependencies": { + "bs-logger": "^0.2.6", + "esbuild-wasm": ">=0.13.8", + "jest-environment-jsdom": "^28.0.0", + "pretty-format": "^28.0.0", + "ts-jest": "^28.0.0" + }, + "engines": { + "node": "^14.15.0 || >=16.10.0" + }, + "optionalDependencies": { + "esbuild": ">=0.13.8" + }, + "peerDependencies": { + "@angular-devkit/build-angular": ">=12.2.18 <16.0.0", + "@angular/compiler-cli": ">=12.2.16 <16.0.0", + "@angular/core": ">=12.2.16 <16.0.0", + "@angular/platform-browser-dynamic": ">=12.2.16 <16.0.0", + "jest": "^28.0.0", + "typescript": ">=4.4" + } + }, + "node_modules/jest-preset-angular/node_modules/ansi-styles": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-preset-angular/node_modules/pretty-format": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-preset-angular/node_modules/ts-jest": { + "version": "28.0.8", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", + "integrity": "sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==", + "dev": true, + "dependencies": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^28.0.0", + "json5": "^2.2.1", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + }, + "bin": { + "ts-jest": "cli.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + }, + "peerDependencies": { + "@babel/core": ">=7.0.0-beta.0 <8", + "@jest/types": "^28.0.0", + "babel-jest": "^28.0.0", + "jest": "^28.0.0", + "typescript": ">=4.3" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "@jest/types": { + "optional": true + }, + "babel-jest": { + "optional": true + }, + "esbuild": { + "optional": true + } + } + }, + "node_modules/jest-preset-angular/node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-resolve/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-resolve/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-resolve/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-resolve/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==", + "dev": true + }, + "node_modules/jest-resolve/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-resolve/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "dependencies": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runner/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-runner/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runner/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==", + "dev": true + }, + "node_modules/jest-runner/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runner/node_modules/jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runner/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/jest-runner/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/jest-runner/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==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/jest-runner/node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/jest-runner/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "dependencies": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-runtime/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-runtime/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-runtime/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-runtime/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==", + "dev": true + }, + "node_modules/jest-runtime/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-runtime/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-snapshot/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-snapshot/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==", + "dev": true + }, + "node_modules/jest-snapshot/node_modules/diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-snapshot/node_modules/jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-snapshot/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-snapshot/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util": { + "version": "28.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-util/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-util/node_modules/chalk": { + "version": "4.1.2", + "dev": 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/jest-util/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-util/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/jest-util/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-util/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "dependencies": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-validate/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-validate/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-validate/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==", + "dev": true + }, + "node_modules/jest-validate/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-validate/node_modules/pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "dependencies": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-validate/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || ^16.10.0 || >=17.0.0" + } + }, + "node_modules/jest-watcher/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==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/jest-watcher/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "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/jest-watcher/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==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/jest-watcher/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==", + "dev": true + }, + "node_modules/jest-watcher/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-watcher/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker": { + "version": "27.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "3.14.1", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "0.1.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsdom": { + "version": "19.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "canvas": "^2.5.0" + }, + "peerDependenciesMeta": { + "canvas": { + "optional": true + } + } + }, + "node_modules/jsdom/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema": { + "version": "0.4.0", + "dev": true, + "license": "(AFL-2.1 OR BSD-3-Clause)" + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "dev": true, + "license": "ISC" + }, + "node_modules/json5": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/jsprim": { + "version": "1.4.2", + "dev": true, + "license": "MIT", + "dependencies": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "dev": true, + "license": "(MIT OR GPL-3.0-or-later)", + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jszip/node_modules/readable-stream": { + "version": "2.3.7", + "dev": true, + "license": "MIT", + "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/jszip/node_modules/safe-buffer": { + "version": "5.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/jszip/node_modules/string_decoder": { + "version": "1.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/karma": { + "version": "6.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/karma-chrome-launcher": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "dependencies": { + "which": "^1.2.1" + } + }, + "node_modules/karma-chrome-launcher/node_modules/which": { + "version": "1.3.1", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/karma-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", + "dev": true, + "dependencies": { + "resolve": "^1.3.3" + }, + "bin": { + "karma": "bin/karma" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "dev": true, + "license": "MIT", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "funding": { + "url": "https://github.com/sponsors/mattlewis92" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/istanbul-lib-source-maps": { + "version": "3.0.6", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/istanbul-lib-source-maps/node_modules/istanbul-lib-coverage": { + "version": "2.0.5", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=6" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/make-dir": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/pify": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/karma-coverage-istanbul-reporter/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "dependencies": { + "jasmine-core": "^4.1.0" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "karma": "^6.0.0" + } + }, + "node_modules/karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "peerDependencies": { + "jasmine-core": "^4.0.0", + "karma": "^6.0.0", + "karma-jasmine": "^5.0.0" + } + }, + "node_modules/karma-source-map-support": { + "version": "1.4.0", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map-support": "^0.5.5" + } + }, + "node_modules/karma/node_modules/cliui": { + "version": "7.0.4", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/karma/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/karma/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/karma/node_modules/tmp": { + "version": "0.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "rimraf": "^3.0.0" + }, + "engines": { + "node": ">=8.17.0" + } + }, + "node_modules/karma/node_modules/yargs": { + "version": "16.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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/less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "dependencies": { + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" + }, + "engines": { + "node": ">=6" + }, + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" + } + }, + "node_modules/less-loader": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", + "dev": true, + "dependencies": { + "klona": "^2.0.4" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" + } + }, + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/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, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/less/node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/less/node_modules/semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/less/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==", + "dev": true, + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/license-webpack-plugin": { + "version": "4.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "webpack-sources": "^3.0.0" + }, + "peerDependenciesMeta": { + "webpack": { + "optional": true + }, + "webpack-sources": { + "optional": true + } + } + }, + "node_modules/lie": { + "version": "3.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/loader-runner": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "3.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.13.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "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/log-symbols": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-symbols/node_modules/chalk": { + "version": "4.1.2", + "dev": 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/log-symbols/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/log-symbols/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/log-symbols/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/log4js": { + "version": "6.7.1", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "dev": true, + "engines": { + "node": ">= 0.6.0" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/loglevel" + } + }, + "node_modules/loglevel-colored-level-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", + "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", + "dev": true, + "dependencies": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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/loglevel-colored-level-prefix/node_modules/strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/loglevel-colored-level-prefix/node_modules/supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/lru-cache": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "dependencies": { + "sourcemap-codec": "^1.4.8" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "dev": true, + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "dependencies": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/make-fetch-happen/node_modules/lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/memfs": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", + "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": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/micromatch": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime": { + "version": "2.6.0", + "dev": true, + "license": "MIT", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, + "engines": { + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" + } + }, + "node_modules/mini-css-extract-plugin/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/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/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.7", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "dependencies": { + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "dependencies": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/moment": { + "version": "2.29.4", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "license": "MIT" + }, + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "dependencies": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + }, + "bin": { + "multicast-dns": "cli.js" + } + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.4", + "dev": true, + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "dependencies": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" + } + }, + "node_modules/needle/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/needle/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==", + "dev": true, + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/negotiator": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "dev": true, + "license": "MIT" + }, + "node_modules/net": { + "version": "1.0.2", + "license": "MIT" + }, + "node_modules/next-tick": { + "version": "1.1.0", + "license": "ISC", + "optional": true + }, + "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-gyp": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^12.22 || ^14.13 || >=16" + } + }, + "node_modules/node-gyp-build": { + "version": "4.5.0", + "license": "MIT", + "optional": true, + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" + } + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.6", + "dev": true, + "license": "MIT" + }, + "node_modules/nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "dependencies": { + "abbrev": "^1.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "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": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "node_modules/npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "dependencies": { + "semver": "^7.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "node_modules/npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "dependencies": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "bin": { + "npm-packlist": "bin/index.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/npm-packlist/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/npm-packlist/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/npm-packlist/node_modules/npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "dependencies": { + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "dependencies": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "dependencies": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "dependencies": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/nwsapi": { + "version": "2.2.2", + "dev": true, + "license": "MIT" + }, + "node_modules/oauth-sign": { + "version": "0.9.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "*" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.12.2", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "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==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "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.4.1", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "8.4.0", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "MIT", + "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/ora": { + "version": "5.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "4.1.2", + "dev": 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/ora/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/ora/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/has-flag": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/ora/node_modules/supports-color": { + "version": "7.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "4.1.0", + "dev": true, + "license": "MIT", + "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==", + "dev": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "dependencies": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-retry/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/p-try": { + "version": "2.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "dependencies": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + }, + "bin": { + "pacote": "lib/bin.js" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/pako": { + "version": "1.0.11", + "dev": true, + "license": "(MIT AND Zlib)" + }, + "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-json": { + "version": "5.2.0", + "dev": true, + "license": "MIT", + "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/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/parse5": { + "version": "5.1.1", + "license": "MIT", + "optional": true + }, + "node_modules/parse5-html-rewriting-stream": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + } + }, + "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5-sax-parser": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "parse5": "^6.0.1" + } + }, + "node_modules/parse5-sax-parser/node_modules/parse5": { + "version": "6.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/parseurl": { + "version": "1.3.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-is-inside": { + "version": "1.0.2", + "dev": true, + "license": "(WTFPL OR MIT)" + }, + "node_modules/path-key": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "dev": true, + "license": "MIT" + }, + "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": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/performance-now": { + "version": "2.1.0", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pify": { + "version": "2.3.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pinkie-promise": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/pirates": { + "version": "4.0.5", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/piscina": { + "version": "3.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0" + }, + "optionalDependencies": { + "nice-napi": "^1.0.2" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + } + ], + "dependencies": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": ">=7.6.0" + }, + "peerDependencies": { + "postcss": "^8.4.6" + } + }, + "node_modules/postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.4" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.3" + } + }, + "node_modules/postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.9" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-import": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dev": true, + "dependencies": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "dependencies": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" + } + }, + "node_modules/postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "peerDependencies": { + "postcss": "^8.4" + } + }, + "node_modules/postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "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-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dev": true, + "dependencies": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true, + "funding": [ + { + "type": "kofi", + "url": "https://ko-fi.com/mrcgrtz" + }, + { + "type": "liberapay", + "url": "https://liberapay.com/mrcgrtz" + } + ], + "engines": { + "node": "^12 || ^14 || >=16" + } + }, + "node_modules/postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "peerDependencies": { + "postcss": "^8" + } + }, + "node_modules/postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-preset-env": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "dependencies": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.8", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "peerDependencies": { + "postcss": "^8.0.3" + } + }, + "node_modules/postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.10" + }, + "engines": { + "node": "^12 || ^14 || >=16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/csstools" + }, + "peerDependencies": { + "postcss": "^8.2" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "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", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", + "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true, + "bin": { + "prettier": "bin-prettier.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-eslint": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-15.0.1.tgz", + "integrity": "sha512-mGOWVHixSvpZWARqSDXbdtTL54mMBxc5oQYQ6RAqy8jecuNJBgN3t9E5a81G66F8x8fsKNiR1HWaBV66MJDOpg==", + "dev": true, + "dependencies": { + "@types/eslint": "^8.4.2", + "@types/prettier": "^2.6.0", + "@typescript-eslint/parser": "^5.10.0", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^8.7.0", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^2.5.1", + "pretty-format": "^23.0.1", + "require-relative": "^0.8.7", + "typescript": "^4.5.4", + "vue-eslint-parser": "^8.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/prettier-eslint/node_modules/ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/prettier-eslint/node_modules/pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "dependencies": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/pretty-bytes": { + "version": "5.6.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "engines": { + "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/pretty-format/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + }, + "node_modules/proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "dev": true, + "license": "MIT" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/protractor": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "bin": { + "protractor": "bin/protractor", + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=10.13.x" + } + }, + "node_modules/protractor/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "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/protractor/node_modules/cliui": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/cliui/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/protractor/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/protractor/node_modules/source-map": { + "version": "0.5.7", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/source-map-support": { + "version": "0.4.18", + "dev": true, + "license": "MIT", + "dependencies": { + "source-map": "^0.5.6" + } + }, + "node_modules/protractor/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/protractor/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/protractor/node_modules/wrap-ansi": { + "version": "6.2.0", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/protractor/node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/y18n": { + "version": "4.0.3", + "dev": true, + "license": "ISC" + }, + "node_modules/protractor/node_modules/yargs": { + "version": "15.4.1", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/protractor/node_modules/yargs-parser": { + "version": "18.1.3", + "dev": true, + "license": "ISC", + "dependencies": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + }, + "engines": { + "node": ">=6" + } + }, + "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/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "node_modules/psl": { + "version": "1.9.0", + "dev": true, + "license": "MIT" + }, + "node_modules/punycode": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.4.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qjobs": { + "version": "1.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.9" + } + }, + "node_modules/qs": { + "version": "6.11.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "license": "MIT" + }, + "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==", + "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/randombytes": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.1", + "dev": true, + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "dependencies": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "dependencies": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/read-package-json/node_modules/glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/read-package-json/node_modules/minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/read-package-json/node_modules/npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/readable-stream": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/reflect-metadata": { + "version": "0.1.13", + "dev": true, + "license": "Apache-2.0" + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "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.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "dependencies": { + "@babel/runtime": "^7.8.4" + } + }, + "node_modules/regex-parser": { + "version": "2.2.11", + "dev": true, + "license": "MIT" + }, + "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==", + "dev": true, + "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/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "dependencies": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "node_modules/regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "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": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + } + }, + "node_modules/request": { + "version": "2.88.2", + "dev": 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/request/node_modules/form-data": { + "version": "2.3.3", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 0.12" + } + }, + "node_modules/request/node_modules/qs": { + "version": "6.5.3", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/request/node_modules/tough-cookie": { + "version": "2.5.0", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/request/node_modules/uuid": { + "version": "3.4.0", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-main-filename": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", + "dev": true + }, + "node_modules/requires-port": { + "version": "1.0.0", + "license": "MIT" + }, + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.9.0", + "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-from": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-url-loader": { + "version": "5.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/resolve-url-loader/node_modules/loader-utils": { + "version": "2.0.4", + "dev": true, + "license": "MIT", + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" + } + }, + "node_modules/resolve-url-loader/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/restore-cursor": { + "version": "3.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "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==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.3.0", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "3.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "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==", + "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" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "6.5.5", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^1.9.0" + }, + "engines": { + "npm": ">=2.0.0" + } + }, + "node_modules/rxjs/node_modules/tslib": { + "version": "1.14.1", + "license": "0BSD" + }, + "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" + } + ], + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "dev": true, + "license": "MIT" + }, + "node_modules/sass": { + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", + "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": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "dependencies": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + }, + "engines": { + "node": ">= 14.15.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/saucelabs": { + "version": "1.5.0", + "dev": true, + "dependencies": { + "https-proxy-agent": "^2.2.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/saucelabs/node_modules/agent-base": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "es6-promisify": "^5.0.0" + }, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/saucelabs/node_modules/debug": { + "version": "3.2.7", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/saucelabs/node_modules/https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "license": "MIT", + "dependencies": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "engines": { + "node": ">= 4.5.0" + } + }, + "node_modules/sax": { + "version": "1.2.4", + "dev": true, + "license": "ISC" + }, + "node_modules/saxes": { + "version": "5.0.1", + "dev": true, + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/schema-utils": { + "version": "2.7.1", + "dev": true, + "license": "MIT", + "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/schema-utils/node_modules/ajv": { + "version": "6.12.6", + "dev": 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/schema-utils/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "node_modules/selenium-webdriver": { + "version": "3.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "engines": { + "node": ">= 6.9.0" + } + }, + "node_modules/selenium-webdriver/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/selenium-webdriver/node_modules/tmp": { + "version": "0.0.30", + "dev": true, + "license": "MIT", + "dependencies": { + "os-tmpdir": "~1.0.1" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "dependencies": { + "node-forge": "^1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-dsl": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^5.3.0" + } + }, + "node_modules/semver-dsl/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "node_modules/send/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/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/send/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.0", + "dev": true, + "license": "BSD-3-Clause", + "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": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "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/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "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": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/set-blocking": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "dev": true, + "license": "MIT" + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "dev": true, + "license": "ISC" + }, + "node_modules/shallow-clone": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "kind-of": "^6.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.4", + "dev": true, + "license": "MIT", + "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", + "dev": true, + "license": "ISC" + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socket.io": { + "version": "4.5.4", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.4.0", + "dev": true, + "license": "MIT" + }, + "node_modules/socket.io-parser": { + "version": "4.2.1", + "dev": true, + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "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/sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "dependencies": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://tidelift.com/funding/github/npm/sockjs-client" + } + }, + "node_modules/sockjs-client/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/socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "dependencies": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.13.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "dependencies": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + }, + "engines": { + "node": ">= 10" + } + }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.0.2", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", + "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" + } + }, + "node_modules/source-map-loader/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==", + "dev": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sourcemap-codec": { + "version": "1.4.8", + "dev": true, + "license": "MIT" + }, + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "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/sprintf-js": { + "version": "1.1.2", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/sshpk": { + "version": "1.17.0", + "dev": 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/ssri": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "dependencies": { + "minipass": "^3.1.1" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "dev": true, + "license": "MIT", + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/statuses": { + "version": "1.5.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/stompjs": { + "version": "2.3.3", + "license": "Apache-2.0", + "optionalDependencies": { + "websocket": "latest" + } + }, + "node_modules/streamroller": { + "version": "3.1.3", + "dev": true, + "license": "MIT", + "dependencies": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "dev": true, + "license": "MIT", + "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.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "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/stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + }, + "bin": { + "stylus": "bin/stylus" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://opencollective.com/stylus" + } + }, + "node_modules/stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "dependencies": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + }, + "engines": { + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "stylus": ">=0.52.4", + "webpack": "^5.0.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks/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==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/symbol-observable": { + "version": "4.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/symbol-tree": { + "version": "3.2.4", + "dev": true, + "license": "MIT" + }, + "node_modules/tapable": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terser": { + "version": "5.14.2", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.6", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "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/ajv": { + "version": "6.12.6", + "dev": 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/terser-webpack-plugin/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/terser-webpack-plugin/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/terser-webpack-plugin/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "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/test-exclude": { + "version": "6.0.0", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/through": { + "version": "2.3.8", + "dev": true, + "license": "MIT" + }, + "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/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tough-cookie": { + "version": "4.1.2", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tough-cookie/node_modules/universalify": { + "version": "0.2.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/tr46": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "punycode": "^2.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "dev": true, + "license": "MIT", + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "dependencies": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "bin": { + "ts-node": "dist/bin.js", + "ts-node-cwd": "dist/bin-cwd.js", + "ts-node-esm": "dist/bin-esm.js", + "ts-node-script": "dist/bin-script.js", + "ts-node-transpile-only": "dist/bin-transpile.js", + "ts-script": "dist/bin-script-deprecated.js" + }, + "peerDependencies": { + "@swc/core": ">=1.2.50", + "@swc/wasm": ">=1.2.50", + "@types/node": "*", + "typescript": ">=2.7" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "@swc/wasm": { + "optional": true + } + } + }, + "node_modules/ts-node/node_modules/acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/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/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.4.1", + "license": "0BSD" + }, + "node_modules/tslint": { + "version": "6.1.3", + "dev": true, + "license": "Apache-2.0", + "peer": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "bin": { + "tslint": "bin/tslint" + }, + "engines": { + "node": ">=4.8.0" + }, + "peerDependencies": { + "typescript": ">=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >=3.0.0-dev || >= 3.1.0-dev || >= 3.2.0-dev || >= 4.0.0-dev" + } + }, + "node_modules/tslint/node_modules/mkdirp": { + "version": "0.5.6", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "minimist": "^1.2.6" + }, + "bin": { + "mkdirp": "bin/cmd.js" + } + }, + "node_modules/tslint/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "peer": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/tslint/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/tsutils": { + "version": "2.29.0", + "dev": true, + "license": "MIT", + "peer": true, + "dependencies": { + "tslib": "^1.8.1" + }, + "peerDependencies": { + "typescript": ">=2.1.0 || >=2.1.0-dev || >=2.2.0-dev || >=2.3.0-dev || >=2.4.0-dev || >=2.5.0-dev || >=2.6.0-dev || >=2.7.0-dev || >=2.8.0-dev || >=2.9.0-dev || >= 3.0.0-dev || >= 3.1.0-dev" + } + }, + "node_modules/tsutils/node_modules/tslib": { + "version": "1.14.1", + "dev": true, + "license": "0BSD", + "peer": true + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "dev": true, + "license": "Unlicense" + }, + "node_modules/type": { + "version": "1.2.0", + "license": "ISC", + "optional": true + }, + "node_modules/type-check": { + "version": "0.3.2", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.21.3", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "dev": true, + "license": "MIT", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-assert": { + "version": "1.0.9", + "dev": true, + "license": "MIT" + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "license": "MIT", + "optional": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "4.6.4", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/ua-parser-js": { + "version": "0.7.32", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/ua-parser-js" + }, + { + "type": "paypal", + "url": "https://paypal.me/faisalman" + } + ], + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "dependencies": { + "unique-slug": "^2.0.0" + } + }, + "node_modules/unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unpipe": { + "version": "1.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.0.10", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + }, + "bin": { + "browserslist-lint": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "license": "MIT", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/utf-8-validate": { + "version": "5.0.10", + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "dependencies": { + "node-gyp-build": "^4.3.0" + }, + "engines": { + "node": ">=6.14.2" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "dev": true, + "license": "MIT" + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/uuid": { + "version": "8.3.2", + "dev": true, + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "dependencies": { + "builtins": "^5.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/verror": { + "version": "1.10.0", + "dev": true, + "engines": [ + "node >=0.6.0" + ], + "license": "MIT", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "node_modules/void-elements": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "dependencies": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-eslint-parser/node_modules/eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/w3c-hr-time": { + "version": "1.0.2", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-process-hrtime": "^1.0.0" + } + }, + "node_modules/w3c-xmlserializer": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/watchpack": { + "version": "2.4.0", + "dev": true, + "license": "MIT", + "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/wcwidth": { + "version": "1.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "defaults": "^1.0.3" + } + }, + "node_modules/webdriver-js-extender": { + "version": "2.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager": { + "version": "12.1.8", + "dev": true, + "license": "MIT", + "dependencies": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "bin": { + "webdriver-manager": "bin/webdriver-manager" + }, + "engines": { + "node": ">=6.9.x" + } + }, + "node_modules/webdriver-manager/node_modules/ansi-regex": { + "version": "2.1.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/ansi-styles": { + "version": "2.2.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/chalk": { + "version": "1.1.3", + "dev": true, + "license": "MIT", + "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/webdriver-manager/node_modules/ini": { + "version": "1.3.8", + "dev": true, + "license": "ISC" + }, + "node_modules/webdriver-manager/node_modules/rimraf": { + "version": "2.7.1", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/webdriver-manager/node_modules/semver": { + "version": "5.7.1", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/webdriver-manager/node_modules/strip-ansi": { + "version": "3.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/webdriver-manager/node_modules/supports-color": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/webidl-conversions": { + "version": "7.0.0", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + } + }, + "node_modules/webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "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.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "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-even-better-errors": "^2.3.1", + "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.4.0", + "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-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "dependencies": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "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/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.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", + "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/serve-static": "^1.13.10", + "@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": "^2.0.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", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "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" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^4.37.0 || ^5.0.0" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": 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", + "dev": true, + "license": "MIT", + "dependencies": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/webpack-sources": { + "version": "3.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/webpack-subresource-integrity": { + "version": "5.1.0", + "dev": true, + "license": "MIT", + "dependencies": { + "typed-assert": "^1.0.8" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "html-webpack-plugin": ">= 5.0.0-beta.1 < 6", + "webpack": "^5.12.0" + }, + "peerDependenciesMeta": { + "html-webpack-plugin": { + "optional": true + } + } + }, + "node_modules/webpack/node_modules/ajv": { + "version": "6.12.6", + "dev": 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/webpack/node_modules/ajv-keywords": { + "version": "3.5.2", + "dev": true, + "license": "MIT", + "peerDependencies": { + "ajv": "^6.9.1" + } + }, + "node_modules/webpack/node_modules/json-schema-traverse": { + "version": "0.4.1", + "dev": true, + "license": "MIT" + }, + "node_modules/webpack/node_modules/schema-utils": { + "version": "3.1.1", + "dev": true, + "license": "MIT", + "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/websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "optional": true, + "dependencies": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/websocket-driver": { + "version": "0.7.4", + "license": "Apache-2.0", + "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", + "license": "Apache-2.0", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/websocket/node_modules/debug": { + "version": "2.6.9", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/websocket/node_modules/ms": { + "version": "2.0.0", + "license": "MIT", + "optional": true + }, + "node_modules/whatwg-encoding": { + "version": "2.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "iconv-lite": "0.6.3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "dev": true, + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/whatwg-mimetype": { + "version": "3.0.0", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/whatwg-url": { + "version": "10.0.0", + "dev": true, + "license": "MIT", + "dependencies": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/which": { + "version": "2.0.2", + "dev": true, + "license": "ISC", + "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/which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "dependencies": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-module": { + "version": "2.0.0", + "dev": true, + "license": "ISC" + }, + "node_modules/which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "dependencies": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "node_modules/wildcard": { + "version": "2.0.0", + "dev": true, + "license": "MIT" + }, + "node_modules/word-wrap": { + "version": "1.2.3", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "dev": true, + "license": "MIT", + "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/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "dev": true, + "license": "MIT" + }, + "node_modules/wrappy": { + "version": "1.0.2", + "dev": true, + "license": "ISC" + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "dev": true, + "license": "ISC", + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/ws": { + "version": "8.11.0", + "dev": true, + "license": "MIT", + "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/xhr2": { + "version": "0.2.1", + "license": "MIT", + "engines": { + "node": ">= 6" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12" + } + }, + "node_modules/xml2js": { + "version": "0.4.23", + "dev": true, + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xmlchars": { + "version": "2.2.0", + "dev": true, + "license": "MIT" + }, + "node_modules/y18n": { + "version": "5.0.8", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yaeti": { + "version": "0.0.6", + "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.32" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "dev": true, + "license": "ISC" + }, + "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.6.2", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^8.0.1", + "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.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "20.2.9", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs/node_modules/yargs-parser": { + "version": "21.1.1", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "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" + } + }, + "node_modules/zone.js": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.12.0.tgz", + "integrity": "sha512-XtC+I5dXU14HrzidAKBNMqneIVUykLEAA1x+v4KVrd6AUPWlwYORF8KgsVqvgdHiKZ4BkxxjvYi/ksEixTPR0Q==", + "dependencies": { + "tslib": "^2.3.0" + } + } + }, + "dependencies": { + "@adobe/css-tools": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.0.1.tgz", + "integrity": "sha512-+u76oB43nOHrF4DDWRLWDCtci7f3QJoEBigemIdIeTi1ODqjx6Tad9NCVnPRwewWlKkVab5PlK8DCtPTyX7S8g==", + "dev": true + }, + "@ampproject/remapping": { + "version": "2.2.0", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@angular-devkit/architect": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.10.tgz", + "integrity": "sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/build-angular": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz", + "integrity": "sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw==", + "dev": true, + "requires": { + "@ampproject/remapping": "2.2.0", + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/build-webpack": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@babel/core": "7.18.10", + "@babel/generator": "7.18.12", + "@babel/helper-annotate-as-pure": "7.18.6", + "@babel/plugin-proposal-async-generator-functions": "7.18.10", + "@babel/plugin-transform-async-to-generator": "7.18.6", + "@babel/plugin-transform-runtime": "7.18.10", + "@babel/preset-env": "7.18.10", + "@babel/runtime": "7.18.9", + "@babel/template": "7.18.10", + "@discoveryjs/json-ext": "0.5.7", + "@ngtools/webpack": "14.2.10", + "ansi-colors": "4.1.3", + "babel-loader": "8.2.5", + "babel-plugin-istanbul": "6.1.1", + "browserslist": "^4.9.1", + "cacache": "16.1.2", + "copy-webpack-plugin": "11.0.0", + "critters": "0.0.16", + "css-loader": "6.7.1", + "esbuild": "0.15.5", + "esbuild-wasm": "0.15.5", + "glob": "8.0.3", + "https-proxy-agent": "5.0.1", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "karma-source-map-support": "1.4.0", + "less": "4.1.3", + "less-loader": "11.0.0", + "license-webpack-plugin": "4.0.2", + "loader-utils": "3.2.1", + "mini-css-extract-plugin": "2.6.1", + "minimatch": "5.1.0", + "open": "8.4.0", + "ora": "5.4.1", + "parse5-html-rewriting-stream": "6.0.1", + "piscina": "3.2.0", + "postcss": "8.4.16", + "postcss-import": "15.0.0", + "postcss-loader": "7.0.1", + "postcss-preset-env": "7.8.0", + "regenerator-runtime": "0.13.9", + "resolve-url-loader": "5.0.0", + "rxjs": "6.6.7", + "sass": "1.54.4", + "sass-loader": "13.0.2", + "semver": "7.3.7", + "source-map-loader": "4.0.0", + "source-map-support": "0.5.21", + "stylus": "0.59.0", + "stylus-loader": "7.0.0", + "terser": "5.14.2", + "text-table": "0.2.0", + "tree-kill": "1.2.2", + "tslib": "2.4.0", + "webpack": "5.74.0", + "webpack-dev-middleware": "5.3.3", + "webpack-dev-server": "4.11.0", + "webpack-merge": "5.8.0", + "webpack-subresource-integrity": "5.1.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.0.tgz", + "integrity": "sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "rxjs": { + "version": "6.6.7", + "dev": true, + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "dev": true + } + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "tslib": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", + "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==", + "dev": true + } + } + }, + "@angular-devkit/build-webpack": { + "version": "0.1402.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz", + "integrity": "sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1402.10", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-devkit/core": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.10.tgz", + "integrity": "sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg==", + "dev": true, + "requires": { + "ajv": "8.11.0", + "ajv-formats": "2.1.1", + "jsonc-parser": "3.1.0", + "rxjs": "6.6.7", + "source-map": "0.7.4" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "dev": true + } + } + }, + "@angular-devkit/schematics": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.2.10.tgz", + "integrity": "sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "jsonc-parser": "3.1.0", + "magic-string": "0.26.2", + "ora": "5.4.1", + "rxjs": "6.6.7" + }, + "dependencies": { + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + } + } + }, + "@angular-eslint/builder": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/builder/-/builder-14.4.0.tgz", + "integrity": "sha512-AhAUFvSg0urtb6Lsowvuxwu6DMXUy0BPwrnfNOBGjRt9vG7F9kgXXAsm5DnIS0GNy/mLZ9mSfa86fv++1e0KUA==", + "dev": true, + "requires": {} + }, + "@angular-eslint/bundled-angular-compiler": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.4.0.tgz", + "integrity": "sha512-KMHPHd24s0HVvAP/DxSSqhYBWhwW8FgS/r0Uwv8eWpsIdc/z/Chd2ush2SgPchmmquAXTgOZsbEY7ZmW+XkJfQ==", + "dev": true + }, + "@angular-eslint/eslint-plugin": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin/-/eslint-plugin-14.4.0.tgz", + "integrity": "sha512-2rZQ4mt7tEUW+lI5jjuj3HWaT4VQtWTG6+LDnmuUmx76m8hqQ7NvFUpOcNDofu5KbEVBP+oF2DA6wjoZOIuSOA==", + "dev": true, + "requires": { + "@angular-eslint/utils": "14.4.0", + "@typescript-eslint/utils": "5.43.0" + } + }, + "@angular-eslint/eslint-plugin-template": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.4.0.tgz", + "integrity": "sha512-d3GM/EU2iWzr+BrITwO4gBf9WfDfuOdTjfinV/zN84oXMFaK2ENo+IP6OEsD9hh36rdPps+m2gFGDdx+rTzBpg==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "14.4.0", + "@angular-eslint/utils": "14.4.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "aria-query": "5.1.3", + "axobject-query": "3.1.1" + }, + "dependencies": { + "aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + }, + "axobject-query": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-3.1.1.tgz", + "integrity": "sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg==", + "dev": true, + "requires": { + "deep-equal": "^2.0.5" + } + } + } + }, + "@angular-eslint/schematics": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/schematics/-/schematics-14.4.0.tgz", + "integrity": "sha512-BrGkPug+CZQWOfmNRsJDrEtYJcxvzF/kLlV7RjvIN9Ky5TjUiJVCeafl3VY6COSY32tjlh2GvBdl1AQKWWovbA==", + "dev": true, + "requires": { + "@angular-eslint/eslint-plugin": "14.4.0", + "@angular-eslint/eslint-plugin-template": "14.4.0", + "ignore": "5.2.0", + "strip-json-comments": "3.1.1", + "tmp": "0.2.1" + }, + "dependencies": { + "ignore": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", + "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.1.tgz", + "integrity": "sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ==", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + } + } + }, + "@angular-eslint/template-parser": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/template-parser/-/template-parser-14.4.0.tgz", + "integrity": "sha512-zq888KpQB0YTEK26mkKcT4fs8LDWWT1oAEXU8DrXhvkikS8XavTSHOWJye/bVZR4oJRFCF5YTJV75DEMcGNIpQ==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "14.4.0", + "eslint-scope": "^7.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + } + } + }, + "@angular-eslint/utils": { + "version": "14.4.0", + "resolved": "https://registry.npmjs.org/@angular-eslint/utils/-/utils-14.4.0.tgz", + "integrity": "sha512-dPHklAVfh+JfueDfXre9Xooq7p5bFyKO2Z6y1agYeofAgHCPIJOPx2AhtFPrOtsc4VXFFiyE9XbowlXh4ogoKQ==", + "dev": true, + "requires": { + "@angular-eslint/bundled-angular-compiler": "14.4.0", + "@typescript-eslint/utils": "5.43.0" + } + }, + "@angular-material-components/datetime-picker": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-material-components/datetime-picker/-/datetime-picker-8.0.0.tgz", + "integrity": "sha512-mpndWbRimp77omkfa9LlpY21FN8xOFH8NV4hSLOxWg7RpUa1gZXLtW6mTRuDQ9cpWO6m9qH/8ioHKtvY+Epckg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular-material-components/moment-adapter": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@angular-material-components/moment-adapter/-/moment-adapter-8.0.0.tgz", + "integrity": "sha512-Kxb84BLNxw4+imJo8qYc4ZJM0DjyO+mroiZZtLxu7futTgjbWVk02x9DBw6GFB1XJNTQzk1GhapZ+mL8irCAbA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/animations": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.12.tgz", + "integrity": "sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/cdk": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.7.tgz", + "integrity": "sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg==", + "requires": { + "parse5": "^5.0.0", + "tslib": "^2.3.0" + } + }, + "@angular/cli": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.2.10.tgz", + "integrity": "sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ==", + "dev": true, + "requires": { + "@angular-devkit/architect": "0.1402.10", + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "@schematics/angular": "14.2.10", + "@yarnpkg/lockfile": "1.1.0", + "ansi-colors": "4.1.3", + "debug": "4.3.4", + "ini": "3.0.0", + "inquirer": "8.2.4", + "jsonc-parser": "3.1.0", + "npm-package-arg": "9.1.0", + "npm-pick-manifest": "7.0.1", + "open": "8.4.0", + "ora": "5.4.1", + "pacote": "13.6.2", + "resolve": "1.22.1", + "semver": "7.3.7", + "symbol-observable": "4.0.0", + "uuid": "8.3.2", + "yargs": "17.5.1" + }, + "dependencies": { + "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" + } + }, + "semver": { + "version": "7.3.7", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", + "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "yargs": { + "version": "17.5.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "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.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "@angular/common": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.12.tgz", + "integrity": "sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.12.tgz", + "integrity": "sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/compiler-cli": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz", + "integrity": "sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ==", + "dev": true, + "requires": { + "@babel/core": "^7.17.2", + "chokidar": "^3.0.0", + "convert-source-map": "^1.5.1", + "dependency-graph": "^0.11.0", + "magic-string": "^0.26.0", + "reflect-metadata": "^0.1.2", + "semver": "^7.0.0", + "sourcemap-codec": "^1.4.8", + "tslib": "^2.3.0", + "yargs": "^17.2.1" + }, + "dependencies": { + "@babel/core": { + "version": "7.20.5", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-module-transforms": "^7.20.2", + "@babel/helpers": "^7.20.5", + "@babel/parser": "^7.20.5", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5", + "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", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.5", + "dev": true, + "requires": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "magic-string": { + "version": "0.26.7", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "@angular/core": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.12.tgz", + "integrity": "sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/flex-layout": { + "version": "14.0.0-beta.41", + "resolved": "https://registry.npmjs.org/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz", + "integrity": "sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/forms": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.12.tgz", + "integrity": "sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/language-service": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-14.2.12.tgz", + "integrity": "sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ==", + "dev": true + }, + "@angular/material": { + "version": "14.2.7", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.7.tgz", + "integrity": "sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.12.tgz", + "integrity": "sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-browser-dynamic": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz", + "integrity": "sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@angular/platform-server": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/platform-server/-/platform-server-14.2.12.tgz", + "integrity": "sha512-RDxNh47Rp0EYrimbzviqhagdbL58Z3S88PDYybYbshFwV+MgWsvWasK/WntTMP/JtRP4FBU0Uiwxy7mgVdxb0g==", + "requires": { + "domino": "^2.1.2", + "tslib": "^2.3.0", + "xhr2": "^0.2.0" + } + }, + "@angular/router": { + "version": "14.2.12", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.12.tgz", + "integrity": "sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A==", + "requires": { + "tslib": "^2.3.0" + } + }, + "@assemblyscript/loader": { + "version": "0.10.1", + "dev": true + }, + "@auth0/angular-jwt": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@auth0/angular-jwt/-/angular-jwt-5.1.0.tgz", + "integrity": "sha512-EAQoNKPQSZYphcX6FnY2e7xQpD4ZdHQ1DbHq/m+G1U1qA60m3XnhdjPPfu+blVHARlxEbRzWXc48UOVrnMsrZw==", + "requires": { + "tslib": "^2.0.0" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.5", + "dev": true + }, + "@babel/core": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.10.tgz", + "integrity": "sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.18.10", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-module-transforms": "^7.18.9", + "@babel/helpers": "^7.18.9", + "@babel/parser": "^7.18.10", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.18.10", + "@babel/types": "^7.18.10", + "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", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.18.12", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.12.tgz", + "integrity": "sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.10", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.0", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.0", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.5.tgz", + "integrity": "sha512-3RCdA/EmEaikrhayahwToF0fpweU/8o2p8vhc1c/1kftHOdTKuC65kik/TLc+qfbS8JKw4qqJbne4ovICDhmww==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "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.18.9", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.18.9.tgz", + "integrity": "sha512-RxifAh2ZoVU67PyKIO4AMi1wTenGfMR/O/ae0CCRqwgBAt5v7xjdtRw7UoSbsreKrQn5t7r89eruK/9JjYHuDg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.2", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.1", + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.19.1.tgz", + "integrity": "sha512-T7ahH7wV0Hfs46SFh5Jz3s0B6+o8g3c+7TMxu7xKfmHikg7EAZ3I2Qk9LFhjxXq8sL7UkP5JflezNwoZa8WvWw==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.18.9", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/traverse": "^7.19.1", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.6", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.5", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "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.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.18.9.tgz", + "integrity": "sha512-AHrP9jadvH7qlOj6PINbgSuphjQUAK7AOT7DPjBo9EHoLhQTnnK5u45e1Hd4DbSQEO9nqPWtQ89r+XEOWFScKg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-proposal-optional-chaining": "^7.18.9" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz", + "integrity": "sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.18.6.tgz", + "integrity": "sha512-+I3oIiNxrCpup3Gi8n5IGMwj0gOCAjcJUSQEcotNnCCPMEnixawOQ+KeJPlgfjzx+FKQ1QSyZOWe7wmoJp7vhw==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.18.9.tgz", + "integrity": "sha512-128YbMpjCrP35IOExw2Fq+x55LMP42DzhOhX2aNNIdI9avSWl2PI0yuBWarr3RYpZBSPtabfadkH2yeRiMD61Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.2.tgz", + "integrity": "sha512-Ks6uej9WFK+fvIMesSqbAto5dD8Dz4VuuFvGJFKgIGSkJuRGcrwGECPA1fDgQK3/DbExBJpEkTeYeB8geIFCSQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.1" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.18.9.tgz", + "integrity": "sha512-v5nwt4IqBXihxGsW2QmCWMDS3B3bzGIk/EQVZz2ei7f3NJl8NzAJVvUmpDW5q1CRNY+Beb/k58UAH1Km1N411w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "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-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "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", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-typescript": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.20.0.tgz", + "integrity": "sha512-rd9TkG+u1CExzS4SM1BlMEhMXwFLKVjOAFFCDx9PbX5ycJWDoWMcwdJH9RhkPu1dOgn5TrxLot/Gx6lWFuAUNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.18.6.tgz", + "integrity": "sha512-9S9X9RUefzrsHZmKMbDXxweEH+YlE8JJEuat9FdvW9Qh1cw7W64jELCtWNkPBPX5En45uy28KGvA/AySqUh8CQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz", + "integrity": "sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-remap-async-to-generator": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.5.tgz", + "integrity": "sha512-WvpEIW9Cbj9ApF3yJCjIEEf1EiNJLtXagOrL5LNWEZOo3jv8pmPoYTSNJQvqej8OavVlgOoOPw6/htGZro6IkA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.2.tgz", + "integrity": "sha512-9rbPp0lCVVoagvtEyQKSo5L8oo0nQS/iif+lwlAz29MccX2642vWDlSZK+2T2buxbopotId2ld7zZAzRfz9j1g==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.19.1", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.18.9.tgz", + "integrity": "sha512-+i0ZU1bCDymKakLxn5srGHrsAPRELC2WIbzwjLhHW9SIE1cPYkLCL0NlnXMZaM1vhfgA2+M7hySk42VBvrkBRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.2.tgz", + "integrity": "sha512-mENM+ZHrvEgxLTBXUiQ621rRXZes3KWUv6NdQlrnr1TkWVw+hUjQBZuP2X32qKlrlG2BzgR95gkuCRSkJl8vIw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.19.6.tgz", + "integrity": "sha512-uG3od2mXvAtIFQIh0xrpLH6r5fpSQN04gIVovl+ODLdUMANokxQLZnPBHcjmv3GxRjnqwLuHvppjjcelqUFZvg==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.19.6.tgz", + "integrity": "sha512-8PIa1ym4XRTKuSsOUXqDG0YaOlEuTVvHMe5JCfgBMOtHvJKw/4NGovEGN33viISshG/rZNVrACiBmPQLvWN8xQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-simple-access": "^7.19.4" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.19.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.19.6.tgz", + "integrity": "sha512-fqGLBepcc3kErfR9R3DnVpURmckXP7gj7bAlrTQyBxrigFqszZCkFkcoxzCp2v32XmwXLvbw+8Yq9/b+QqksjQ==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.19.6", + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.5.tgz", + "integrity": "sha512-h7plkOmcndIUWXZFLgpbrh2+fXAi47zcUX7IrOQuZdLD0I0KvjJ6cvo3BEcAOsDOcZhVKGJqv07mkSqK0y2isQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-runtime": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz", + "integrity": "sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.9", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.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.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.19.0.tgz", + "integrity": "sha512-RsuMk7j6n+r752EtzyScnWkQyuJdli6LdO5Klv8Yx0OfPVTcQkIUfS8clx5e9yHXzlnhOZF3CbQ8C2uP5j074w==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0", + "@babel/helper-skip-transparent-expression-wrappers": "^7.18.9" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.10.tgz", + "integrity": "sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.18.8", + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.18.10", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.18.9", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@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-import-assertions": "^7.18.6", + "@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.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.18.9", + "@babel/plugin-transform-classes": "^7.18.9", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.18.9", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.18.6", + "@babel/plugin-transform-modules-commonjs": "^7.18.6", + "@babel/plugin-transform-modules-systemjs": "^7.18.9", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.18.6", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.18.8", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.18.9", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.18.10", + "babel-plugin-polyfill-corejs2": "^0.3.2", + "babel-plugin-polyfill-corejs3": "^0.5.3", + "babel-plugin-polyfill-regenerator": "^0.4.0", + "core-js-compat": "^3.22.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/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.18.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.9.tgz", + "integrity": "sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.4" + } + }, + "@babel/template": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz", + "integrity": "sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.18.10", + "@babel/types": "^7.18.10" + } + }, + "@babel/traverse": { + "version": "7.20.5", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.5", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.5", + "@babel/types": "^7.20.5", + "debug": "^4.1.0", + "globals": "^11.1.0" + }, + "dependencies": { + "@babel/generator": { + "version": "7.20.5", + "dev": true, + "requires": { + "@babel/types": "^7.20.5", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/types": { + "version": "7.20.5", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "@colors/colors": { + "version": "1.5.0", + "dev": true + }, + "@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "0.3.9" + }, + "dependencies": { + "@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + } + } + }, + "@csstools/postcss-cascade-layers": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz", + "integrity": "sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.2", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-color-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz", + "integrity": "sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-font-format-keywords": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz", + "integrity": "sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-hwb-function": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz", + "integrity": "sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-ic-unit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz", + "integrity": "sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-is-pseudo-class": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz", + "integrity": "sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "@csstools/postcss-nested-calc": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz", + "integrity": "sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-normalize-display-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz", + "integrity": "sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-oklab-function": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz", + "integrity": "sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-progressive-custom-properties": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz", + "integrity": "sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-stepped-value-functions": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz", + "integrity": "sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-text-decoration-shorthand": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz", + "integrity": "sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-trigonometric-functions": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz", + "integrity": "sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "@csstools/postcss-unset-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz", + "integrity": "sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g==", + "dev": true, + "requires": {} + }, + "@csstools/selector-specificity": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@csstools/selector-specificity/-/selector-specificity-2.0.2.tgz", + "integrity": "sha512-IkpVW/ehM1hWKln4fCA3NzJU8KwD+kIOvPZA4cqxoJHtE21CCzjyp+Kxbu0i5I4tBNOlXPL9mjwnWlL0VEG4Fg==", + "dev": true, + "requires": {} + }, + "@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 + }, + "@esbuild/linux-loong64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz", + "integrity": "sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A==", + "dev": true, + "optional": true + }, + "@eslint/eslintrc": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-1.3.3.tgz", + "integrity": "sha512-uj3pT6Mg+3t39fvLrj8iuCIJ38zKO9FpGtJ4BBJebJhEwjoT+KLVNCcHT5QC9NGRIEi7fZ0ZR8YRb884auB4Lg==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.4.0", + "globals": "^13.15.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "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" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "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 + }, + "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==", + "dev": true + } + } + }, + "@fortawesome/fontawesome": { + "version": "1.1.8", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + } + }, + "@fortawesome/fontawesome-common-types": { + "version": "0.1.7" + }, + "@fortawesome/fontawesome-free-regular": { + "version": "5.0.13", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + } + }, + "@fortawesome/fontawesome-free-solid": { + "version": "5.0.13", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + } + }, + "@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true + }, + "@humanwhocodes/config-array": { + "version": "0.11.7", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.7.tgz", + "integrity": "sha512-kBbPWzN8oVMLb0hOUYXhmxggL/1cJE6ydvjDIGi9EnAGUyA7cLVKQg+d/Dsm+KZwx2czGHrCmMVLiyg8s5JPKw==", + "dev": true, + "requires": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + } + }, + "@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + } + }, + "@istanbuljs/schema": { + "version": "0.1.3", + "dev": true + }, + "@jest/console": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-28.1.3.tgz", + "integrity": "sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/core": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-28.1.3.tgz", + "integrity": "sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/reporters": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^28.1.3", + "jest-config": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-resolve-dependencies": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "jest-watcher": "^28.1.3", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "rimraf": "^3.0.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/environment": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3" + } + }, + "@jest/expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw==", + "dev": true, + "requires": { + "expect": "^28.1.3", + "jest-snapshot": "^28.1.3" + } + }, + "@jest/expect-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-28.1.3.tgz", + "integrity": "sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2" + } + }, + "@jest/fake-timers": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@sinonjs/fake-timers": "^9.1.2", + "@types/node": "*", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "@jest/globals": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-28.1.3.tgz", + "integrity": "sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/types": "^28.1.3" + } + }, + "@jest/reporters": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-28.1.3.tgz", + "integrity": "sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg==", + "dev": true, + "requires": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^5.1.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "terminal-link": "^2.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "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" + } + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/schemas": { + "version": "28.1.3", + "dev": true, + "requires": { + "@sinclair/typebox": "^0.24.1" + } + }, + "@jest/source-map": { + "version": "28.1.2", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-28.1.2.tgz", + "integrity": "sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.13", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + } + }, + "@jest/test-result": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-28.1.3.tgz", + "integrity": "sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + } + }, + "@jest/test-sequencer": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz", + "integrity": "sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw==", + "dev": true, + "requires": { + "@jest/test-result": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "slash": "^3.0.0" + }, + "dependencies": { + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + } + } + }, + "@jest/transform": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-28.1.3.tgz", + "integrity": "sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/types": "^28.1.3", + "@jridgewell/trace-mapping": "^0.3.13", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^1.4.0", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jest/types": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "dev": true + }, + "@jridgewell/source-map": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@leichtgewicht/ip-codec": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.4.tgz", + "integrity": "sha512-Hcv+nVC0kZnQ3tD9GVu5xSMR4VVYOteQIr/hwFPVEvPdlXqgGEuRjiheChHgdM+JyqdgNcmzZOX/tnl0JOiI7A==", + "dev": true + }, + "@ngtools/webpack": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.10.tgz", + "integrity": "sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ==", + "dev": true, + "requires": {} + }, + "@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==", + "dev": true, + "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==", + "dev": true + }, + "@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==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + } + }, + "@npmcli/fs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", + "dev": true, + "requires": { + "@gar/promisify": "^1.1.3", + "semver": "^7.3.5" + } + }, + "@npmcli/git": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.2.tgz", + "integrity": "sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w==", + "dev": true, + "requires": { + "@npmcli/promise-spawn": "^3.0.0", + "lru-cache": "^7.4.4", + "mkdirp": "^1.0.4", + "npm-pick-manifest": "^7.0.0", + "proc-log": "^2.0.0", + "promise-inflight": "^1.0.1", + "promise-retry": "^2.0.1", + "semver": "^7.3.5", + "which": "^2.0.2" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } + } + }, + "@npmcli/installed-package-contents": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz", + "integrity": "sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw==", + "dev": true, + "requires": { + "npm-bundled": "^1.1.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "@npmcli/move-file": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "dev": true, + "requires": { + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" + } + }, + "@npmcli/node-gyp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz", + "integrity": "sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==", + "dev": true + }, + "@npmcli/promise-spawn": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz", + "integrity": "sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==", + "dev": true, + "requires": { + "infer-owner": "^1.0.4" + } + }, + "@npmcli/run-script": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-4.2.1.tgz", + "integrity": "sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg==", + "dev": true, + "requires": { + "@npmcli/node-gyp": "^2.0.0", + "@npmcli/promise-spawn": "^3.0.0", + "node-gyp": "^9.0.0", + "read-package-json-fast": "^2.0.3", + "which": "^2.0.2" + } + }, + "@schematics/angular": { + "version": "14.2.10", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.2.10.tgz", + "integrity": "sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ==", + "dev": true, + "requires": { + "@angular-devkit/core": "14.2.10", + "@angular-devkit/schematics": "14.2.10", + "jsonc-parser": "3.1.0" + } + }, + "@sinclair/typebox": { + "version": "0.24.51", + "dev": true + }, + "@sinonjs/commons": { + "version": "1.8.6", + "dev": true, + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "9.1.2", + "dev": true, + "requires": { + "@sinonjs/commons": "^1.7.0" + } + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "dev": true + }, + "@stomp/ng2-stompjs": { + "version": "0.6.4", + "requires": { + "@stomp/stompjs": "^4.0.0 >=4.0.2" + } + }, + "@stomp/stompjs": { + "version": "4.0.8", + "requires": { + "websocket": "^1.0.24" + } + }, + "@tootallnate/once": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", + "dev": true + }, + "@tsconfig/node10": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", + "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", + "dev": true + }, + "@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "dev": true + }, + "@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "dev": true + }, + "@tsconfig/node16": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", + "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", + "dev": true + }, + "@types/babel__core": { + "version": "7.1.20", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.20.tgz", + "integrity": "sha512-PVb6Bg2QuscZ30FvOU7z4guG6c926D9YRvOxEaelzndpMsvP+YM74Q/dAFASpg2l6+XLalxSGxcq/lrgYWZtyQ==", + "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.18.3", + "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/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/cookie": { + "version": "0.4.1", + "dev": true + }, + "@types/cors": { + "version": "2.8.13", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/eslint": { + "version": "8.4.10", + "dev": true, + "requires": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "@types/eslint-scope": { + "version": "3.7.4", + "dev": true, + "requires": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "@types/estree": { + "version": "0.0.51", + "dev": true + }, + "@types/express": { + "version": "4.17.14", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.14.tgz", + "integrity": "sha512-TEbt+vaPFQ+xpxFLFssxUDXj5cWCxZJjIcB7Yg0k0GMHGtgtQgpvx/MUQUeAkNbA9AAGrwkAsoeItdTgS7FMyg==", + "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.31", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.31.tgz", + "integrity": "sha512-DxMhY+NAsTwMMFHBTtJFNp5qiHKJ7TeqOo23zVEM9alT1Ml27Q3xcTH0xwxn7Q0BbMcVEJOs/7aQtUWupUQN3Q==", + "dev": true, + "requires": { + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*" + } + }, + "@types/graceful-fs": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", + "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/hammerjs": { + "version": "2.0.34", + "dev": true + }, + "@types/http-proxy": { + "version": "1.17.9", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.9.tgz", + "integrity": "sha512-QsbSjA/fSk7xB+UXlCT3wHBy5ai9wOcNDWwZAtud+jXhwOM3l+EYZh8Lng4+/6n8uar0J7xILzqftJdJ/Wdfkw==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/istanbul-lib-coverage": { + "version": "2.0.4", + "dev": true + }, + "@types/istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "requires": { + "@types/istanbul-lib-coverage": "*" + } + }, + "@types/istanbul-reports": { + "version": "3.0.1", + "dev": true, + "requires": { + "@types/istanbul-lib-report": "*" + } + }, + "@types/jasmine": { + "version": "2.5.54", + "dev": true + }, + "@types/jasminewd2": { + "version": "2.0.3", + "dev": true, + "requires": { + "@types/jasmine": "*" + } + }, + "@types/jest": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-28.1.1.tgz", + "integrity": "sha512-C2p7yqleUKtCkVjlOur9BWVA4HgUQmEj/HWCt5WzZ5mLXrWnyIfl0wGuArc+kBXsy0ZZfLp+7dywB4HtSVYGVA==", + "dev": true, + "requires": { + "jest-matcher-utils": "^27.0.0", + "pretty-format": "^27.0.0" + } + }, + "@types/jsdom": { + "version": "16.2.15", + "dev": true, + "requires": { + "@types/node": "*", + "@types/parse5": "^6.0.3", + "@types/tough-cookie": "*" + } + }, + "@types/json-schema": { + "version": "7.0.11", + "dev": true + }, + "@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "@types/mime": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-3.0.1.tgz", + "integrity": "sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==", + "dev": true + }, + "@types/node": { + "version": "12.20.55", + "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/parse5": { + "version": "6.0.3", + "dev": true + }, + "@types/prettier": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.7.1.tgz", + "integrity": "sha512-ri0UmynRRvZiiUJdiz38MmIblKK+oH30MztdBVR95dv/Ubw6neWSb8u1XpRb72L4qsZOhz+L+z9JD40SJmfWow==", + "dev": true + }, + "@types/q": { + "version": "0.0.32", + "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.0", + "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", + "dev": true + }, + "@types/selenium-webdriver": { + "version": "3.0.20", + "dev": true + }, + "@types/semver": { + "version": "7.3.13", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.13.tgz", + "integrity": "sha512-21cFJr9z3g5dW8B0CVI9g2O9beqaThGQ6ZFBqHfwhzLDKUxaqTIy3vnfah/UPkfOiF2pLq+tGz+W8RyCskuslw==", + "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.15.0", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-z5xyF6uh8CbjAu9760KDKsH2FcDxZ2tFCsA4HIMWE6IkiYMXfVoa+4f9KX+FN0ZLsaMw1WNG2ETLA6N+/YA+cg==", + "dev": true, + "requires": { + "@types/mime": "*", + "@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/stack-utils": { + "version": "2.0.1", + "dev": true + }, + "@types/tough-cookie": { + "version": "4.0.2", + "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": "*" + } + }, + "@types/yargs": { + "version": "17.0.16", + "dev": true, + "requires": { + "@types/yargs-parser": "*" + } + }, + "@types/yargs-parser": { + "version": "21.0.0", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz", + "integrity": "sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/type-utils": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "debug": "^4.3.4", + "ignore": "^5.2.0", + "natural-compare-lite": "^1.4.0", + "regexpp": "^3.2.0", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/eslint-plugin-tslint": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.46.0.tgz", + "integrity": "sha512-K1lyydW9s+mfQWW6hZSygNvQLAMKzrO4Em5L9Fa551D6CC12pVyNIqikWgZeAkwE1GFYZtipFYF8UsONVwaxIA==", + "dev": true, + "requires": { + "@typescript-eslint/utils": "5.46.0", + "lodash": "^4.17.21" + }, + "dependencies": { + "@typescript-eslint/scope-manager": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.46.0.tgz", + "integrity": "sha512-7wWBq9d/GbPiIM6SqPK9tfynNxVbfpihoY5cSFMer19OYUA3l4powA2uv0AV2eAZV6KoAh6lkzxv4PoxOLh1oA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0" + } + }, + "@typescript-eslint/types": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.46.0.tgz", + "integrity": "sha512-wHWgQHFB+qh6bu0IAPAJCdeCdI0wwzZnnWThlmHNY01XJ9Z97oKqKOzWYpR2I83QmshhQJl6LDM9TqMiMwJBTw==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.46.0.tgz", + "integrity": "sha512-kDLNn/tQP+Yp8Ro2dUpyyVV0Ksn2rmpPpB0/3MO874RNmXtypMwSeazjEN/Q6CTp8D7ExXAAekPEcCEB/vtJkw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/visitor-keys": "5.46.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + } + }, + "@typescript-eslint/utils": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.46.0.tgz", + "integrity": "sha512-4O+Ps1CRDw+D+R40JYh5GlKLQERXRKW5yIQoNDpmXPJ+C7kaPF9R7GWl+PxGgXjB3PQCqsaaZUpZ9dG4U6DO7g==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.46.0", + "@typescript-eslint/types": "5.46.0", + "@typescript-eslint/typescript-estree": "5.46.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.46.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.46.0.tgz", + "integrity": "sha512-E13gBoIXmaNhwjipuvQg1ByqSAu/GbEpP/qzFihugJ+MomtoJtFAJG/+2DRPByf57B863m0/q7Zt16V9ohhANw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.46.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/parser": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.43.0.tgz", + "integrity": "sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "debug": "^4.3.4" + } + }, + "@typescript-eslint/scope-manager": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz", + "integrity": "sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0" + } + }, + "@typescript-eslint/type-utils": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz", + "integrity": "sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg==", + "dev": true, + "requires": { + "@typescript-eslint/typescript-estree": "5.43.0", + "@typescript-eslint/utils": "5.43.0", + "debug": "^4.3.4", + "tsutils": "^3.21.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/types": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.43.0.tgz", + "integrity": "sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz", + "integrity": "sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/visitor-keys": "5.43.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.3.7", + "tsutils": "^3.21.0" + }, + "dependencies": { + "globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "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" + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.21.0", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", + "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + } + } + }, + "@typescript-eslint/utils": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.43.0.tgz", + "integrity": "sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.9", + "@types/semver": "^7.3.12", + "@typescript-eslint/scope-manager": "5.43.0", + "@typescript-eslint/types": "5.43.0", + "@typescript-eslint/typescript-estree": "5.43.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^3.0.0", + "semver": "^7.3.7" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "5.43.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz", + "integrity": "sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg==", + "dev": true, + "requires": { + "@typescript-eslint/types": "5.43.0", + "eslint-visitor-keys": "^3.3.0" + } + }, + "@webassemblyjs/ast": { + "version": "1.11.1", + "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", + "dev": true + }, + "@webassemblyjs/helper-api-error": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-buffer": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/helper-numbers": { + "version": "1.11.1", + "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", + "dev": true + }, + "@webassemblyjs/helper-wasm-section": { + "version": "1.11.1", + "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", + "dev": true, + "requires": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "@webassemblyjs/leb128": { + "version": "1.11.1", + "dev": true, + "requires": { + "@xtuc/long": "4.2.2" + } + }, + "@webassemblyjs/utf8": { + "version": "1.11.1", + "dev": true + }, + "@webassemblyjs/wasm-edit": { + "version": "1.11.1", + "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", + "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", + "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", + "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", + "dev": true, + "requires": { + "@webassemblyjs/ast": "1.11.1", + "@xtuc/long": "4.2.2" + } + }, + "@xtuc/ieee754": { + "version": "1.2.0", + "dev": true + }, + "@xtuc/long": { + "version": "4.2.2", + "dev": true + }, + "@yarnpkg/lockfile": { + "version": "1.1.0", + "dev": true + }, + "abab": { + "version": "2.0.6", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "accepts": { + "version": "1.3.8", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "8.8.1", + "dev": true + }, + "acorn-globals": { + "version": "6.0.0", + "dev": true, + "requires": { + "acorn": "^7.1.1", + "acorn-walk": "^7.1.1" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "dev": true + } + } + }, + "acorn-import-assertions": { + "version": "1.8.0", + "dev": true, + "requires": {} + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "requires": {} + }, + "acorn-walk": { + "version": "7.2.0", + "dev": true + }, + "adjust-sourcemap-loader": { + "version": "4.0.0", + "dev": true, + "requires": { + "loader-utils": "^2.0.0", + "regex-parser": "^2.2.11" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "adm-zip": { + "version": "0.4.16", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "dev": true, + "requires": { + "debug": "4" + } + }, + "agentkeepalive": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.2.1.tgz", + "integrity": "sha512-Zn4cw2NEqd+9fiSVWMscnjyQ1a8Yfoc5oBajLeo5w+YBHgDUcEBY2hS4YpTz6iN5f/2zQiktcuM6tS8x1p9dpA==", + "dev": true, + "requires": { + "debug": "^4.1.0", + "depd": "^1.1.2", + "humanize-ms": "^1.2.1" + }, + "dependencies": { + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + } + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "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-formats": { + "version": "2.1.1", + "dev": true, + "requires": { + "ajv": "^8.0.0" + } + }, + "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" + } + }, + "ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "dev": true + }, + "ansi-escapes": { + "version": "4.3.2", + "dev": true, + "requires": { + "type-fest": "^0.21.3" + } + }, + "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", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "app-root-path": { + "version": "3.1.0", + "dev": true + }, + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + } + }, + "arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", + "dev": true + }, + "argparse": { + "version": "1.0.10", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + }, + "dependencies": { + "sprintf-js": { + "version": "1.0.3", + "dev": true + } + } + }, + "aria-query": { + "version": "3.0.0", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7", + "commander": "^2.11.0" + } + }, + "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-includes": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.6.tgz", + "integrity": "sha512-sgTbLvL6cNnw24FnbaDyjmvddQ2ML8arZsgaJhoABMoplz/4QRhtrYS+alr1BUM1Bwp6dhx8vVCBSLG+StwOFw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "get-intrinsic": "^1.1.3", + "is-string": "^1.0.7" + } + }, + "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==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "dev": true + }, + "array.prototype.flat": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.1.tgz", + "integrity": "sha512-roTU0KWIOmJ4DRLmwKd19Otg0/mT3qPNt0Qb3GWW8iObuZXxrjB/pzn0R3hqpRSWg4HCwqx+0vwOnWnvlOyeIA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-shim-unscopables": "^1.0.0" + } + }, + "arrify": { + "version": "1.0.1", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "dev": true + }, + "ast-types-flow": { + "version": "0.0.7", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "dev": true + }, + "autoprefixer": { + "version": "10.4.13", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz", + "integrity": "sha512-49vKpMqcZYsJjwotvt4+h/BCjJVnhGwcLpDt5xkcaOG3eLrG/HUYLagrihYsQ+qrIBgIzX1Rw7a6L8I/ZA1Atg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4", + "caniuse-lite": "^1.0.30001426", + "fraction.js": "^4.2.0", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "dev": true + }, + "aws4": { + "version": "1.11.0", + "dev": true + }, + "axobject-query": { + "version": "2.0.2", + "dev": true, + "requires": { + "ast-types-flow": "0.0.7" + } + }, + "babel-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-28.1.3.tgz", + "integrity": "sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q==", + "dev": true, + "requires": { + "@jest/transform": "^28.1.3", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^28.1.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "babel-loader": { + "version": "8.2.5", + "dev": true, + "requires": { + "find-cache-dir": "^3.3.1", + "loader-utils": "^2.0.0", + "make-dir": "^3.1.0", + "schema-utils": "^2.6.5" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + } + } + }, + "babel-plugin-istanbul": { + "version": "6.1.1", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + } + }, + "babel-plugin-jest-hoist": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz", + "integrity": "sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q==", + "dev": true, + "requires": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + } + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "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.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz", + "integrity": "sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.2", + "core-js-compat": "^3.21.0" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-preset-current-node-syntax": { + "version": "1.0.1", + "dev": true, + "requires": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.8.3", + "@babel/plugin-syntax-import-meta": "^7.8.3", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.8.3", + "@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-top-level-await": "^7.8.3" + } + }, + "babel-preset-jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz", + "integrity": "sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^28.1.3", + "babel-preset-current-node-syntax": "^1.0.0" + } + }, + "balanced-match": { + "version": "1.0.2", + "dev": true + }, + "base64-js": { + "version": "1.5.1", + "dev": true + }, + "base64id": { + "version": "2.0.0", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "dev": true + }, + "bl": { + "version": "4.1.0", + "dev": true, + "requires": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "blocking-proxy": { + "version": "1.0.1", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + }, + "body-parser": { + "version": "1.20.1", + "dev": true, + "requires": { + "bytes": "3.1.2", + "content-type": "~1.0.4", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.11.0", + "raw-body": "2.5.1", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "bonjour-service": { + "version": "1.0.14", + "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.14.tgz", + "integrity": "sha512-HIMbgLnk1Vqvs6B4Wq5ep7mxvj9sGz5d1JJyDNSGNIdA/w2MCz6GTjWTdjqOJV1bEPj+6IkxDvWNFKEBxNt4kQ==", + "dev": true, + "requires": { + "array-flatten": "^2.1.2", + "dns-equal": "^1.0.0", + "fast-deep-equal": "^3.1.3", + "multicast-dns": "^7.2.5" + } + }, + "boolbase": { + "version": "1.0.0", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "browser-process-hrtime": { + "version": "1.0.0", + "dev": true + }, + "browserslist": { + "version": "4.21.4", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001400", + "electron-to-chromium": "^1.4.251", + "node-releases": "^2.0.6", + "update-browserslist-db": "^1.0.9" + } + }, + "browserstack": { + "version": "1.6.1", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "bs-logger": { + "version": "0.2.6", + "dev": true, + "requires": { + "fast-json-stable-stringify": "2.x" + } + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer": { + "version": "5.7.1", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "buffer-from": { + "version": "1.1.2", + "dev": true + }, + "bufferutil": { + "version": "4.0.7", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "builtin-modules": { + "version": "1.1.1", + "dev": true, + "peer": true + }, + "builtins": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.0.1.tgz", + "integrity": "sha512-qwVpFEHNfhYJIzNRBvd2C1kyo6jz3ZSMPyyuR47OPdiKWlbYnZNyDWuyR175qDnAJLiCo5fBBqPb3RiXgWlkOQ==", + "dev": true, + "requires": { + "semver": "^7.0.0" + } + }, + "bytes": { + "version": "3.1.2", + "dev": true + }, + "cacache": { + "version": "16.1.2", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.2.tgz", + "integrity": "sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA==", + "dev": true, + "requires": { + "@npmcli/fs": "^2.1.0", + "@npmcli/move-file": "^2.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "glob": "^8.0.1", + "infer-owner": "^1.0.4", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "mkdirp": "^1.0.4", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11", + "unique-filename": "^1.1.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + }, + "minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "call-bind": { + "version": "1.0.2", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "3.1.0", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001436", + "dev": true + }, + "caseless": { + "version": "0.12.0", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "dev": true, + "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" + } + }, + "chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true + }, + "chrome-trace-event": { + "version": "1.0.3", + "dev": true + }, + "ci-info": { + "version": "3.7.0", + "dev": true + }, + "cjs-module-lexer": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.2.tgz", + "integrity": "sha512-cOU9usZw8/dXIXKtwa8pM0OTJQuJkxMN6w30csNRUerHfeQ5R6U3kkU/FtJeIf3M202OHfY2U8ccInBG7/xogA==", + "dev": true + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "cli-spinners": { + "version": "2.7.0", + "dev": true + }, + "cli-width": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz", + "integrity": "sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "clone": { + "version": "1.0.4", + "dev": true + }, + "clone-deep": { + "version": "4.0.1", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "codelyzer": { + "version": "6.0.2", + "dev": true, + "requires": { + "@angular/compiler": "9.0.0", + "@angular/core": "9.0.0", + "app-root-path": "^3.0.0", + "aria-query": "^3.0.0", + "axobject-query": "2.0.2", + "css-selector-tokenizer": "^0.7.1", + "cssauron": "^1.4.0", + "damerau-levenshtein": "^1.0.4", + "rxjs": "^6.5.3", + "semver-dsl": "^1.0.1", + "source-map": "^0.5.7", + "sprintf-js": "^1.1.2", + "tslib": "^1.10.0", + "zone.js": "~0.10.3" + }, + "dependencies": { + "@angular/compiler": { + "version": "9.0.0", + "dev": true, + "requires": {} + }, + "@angular/core": { + "version": "9.0.0", + "dev": true, + "requires": {} + }, + "source-map": { + "version": "0.5.7", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "dev": true + }, + "zone.js": { + "version": "0.10.3", + "dev": true + } + } + }, + "collect-v8-coverage": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", + "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", + "dev": true + }, + "color-convert": { + "version": "1.9.3", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "dev": true + }, + "color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "dev": true + }, + "colorette": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", + "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "dev": true + }, + "colors": { + "version": "1.4.0", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "2.20.3", + "dev": true + }, + "common-tags": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", + "integrity": "sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==", + "dev": true + }, + "commondir": { + "version": "1.0.1", + "dev": 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": { + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", + "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": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "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==", + "dev": true + } + } + }, + "concat-map": { + "version": "0.0.1", + "dev": true + }, + "connect": { + "version": "3.7.0", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.2", + "parseurl": "~1.3.3", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "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" + } + }, + "content-type": { + "version": "1.0.4", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "dev": true + }, + "cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true + }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, + "copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "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" + } + } + } + }, + "core-js": { + "version": "2.5.1" + }, + "core-js-compat": { + "version": "3.26.1", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.1.tgz", + "integrity": "sha512-622/KzTudvXCDLRw70iHW4KKs1aGpcRcowGWyYJr2DEBfRrd6hNJybxSWJFuZYD4ma86xhrwDDHxmDaIq4EA8A==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.2", + "dev": true + }, + "cors": { + "version": "2.8.5", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "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" + } + }, + "create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "dev": true + }, + "critters": { + "version": "0.0.16", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "css-select": "^4.2.0", + "parse5": "^6.0.1", + "parse5-htmlparser2-tree-adapter": "^6.0.1", + "postcss": "^8.3.7", + "pretty-bytes": "^5.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "parse5": { + "version": "6.0.1", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "cross-spawn": { + "version": "7.0.3", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "css-blank-pseudo": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz", + "integrity": "sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-has-pseudo": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz", + "integrity": "sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "css-loader": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.1.tgz", + "integrity": "sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw==", + "dev": true, + "requires": { + "icss-utils": "^5.1.0", + "postcss": "^8.4.7", + "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.2.0", + "semver": "^7.3.5" + } + }, + "css-prefers-color-scheme": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz", + "integrity": "sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA==", + "dev": true, + "requires": {} + }, + "css-select": { + "version": "4.3.0", + "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" + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "css-what": { + "version": "6.1.0", + "dev": true + }, + "cssauron": { + "version": "1.4.0", + "dev": true, + "requires": { + "through": "X.X.X" + } + }, + "cssdb": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.2.0.tgz", + "integrity": "sha512-JYlIsE7eKHSi0UNuCyo96YuIDFqvhGgHw4Ck6lsN+DP0Tp8M64UTDT2trGbkMDqnCoEjks7CkS0XcjU0rkvBdg==", + "dev": true + }, + "cssesc": { + "version": "3.0.0", + "dev": true + }, + "cssom": { + "version": "0.5.0", + "dev": true + }, + "cssstyle": { + "version": "2.3.0", + "dev": true, + "requires": { + "cssom": "~0.3.6" + }, + "dependencies": { + "cssom": { + "version": "0.3.8", + "dev": true + } + } + }, + "custom-event": { + "version": "1.0.1", + "dev": true + }, + "d": { + "version": "1.0.1", + "optional": true, + "requires": { + "es5-ext": "^0.10.50", + "type": "^1.0.1" + } + }, + "damerau-levenshtein": { + "version": "1.0.8", + "dev": true + }, + "dashdash": { + "version": "1.14.1", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "3.0.2", + "dev": true, + "requires": { + "abab": "^2.0.6", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^11.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "11.0.0", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + } + } + }, + "date-format": { + "version": "4.0.14", + "dev": true + }, + "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" + } + }, + "decamelize": { + "version": "1.2.0", + "dev": true + }, + "decimal.js": { + "version": "10.4.3", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true + }, + "deep-equal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.1.0.tgz", + "integrity": "sha512-2pxgvWu3Alv1PoWEyVg7HS8YhGlUFUV7N5oOvfL6d+7xAmLSemMwv/c8Zv/i9KFzxV5Kt5CAvQc70fLwVuf4UA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-get-iterator": "^1.1.2", + "get-intrinsic": "^1.1.3", + "is-arguments": "^1.1.1", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.8" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "deep-is": { + "version": "0.1.4", + "dev": true + }, + "deepmerge": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", + "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", + "dev": true + }, + "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" + } + }, + "defaults": { + "version": "1.0.4", + "dev": true, + "requires": { + "clone": "^1.0.2" + } + }, + "define-lazy-prop": { + "version": "2.0.0", + "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==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "del": { + "version": "2.2.2", + "dev": true, + "requires": { + "globby": "^5.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "globby": { + "version": "5.0.0", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^7.0.3", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "dev": true + }, + "dependency-graph": { + "version": "0.11.0", + "dev": true + }, + "destroy": { + "version": "1.2.0", + "dev": true + }, + "detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "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 + }, + "di": { + "version": "0.0.1", + "dev": true + }, + "diff": { + "version": "4.0.2", + "dev": true + }, + "diff-sequences": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-27.5.1.tgz", + "integrity": "sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==", + "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==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "dns-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", + "integrity": "sha512-z+paD6YUQsk+AbGCEM4PrOXSss5gd66QfcVBFTKR/HpFL9jCqikS94HYwKww6fQyO7IxrIIyUu+g0Ka9tUS2Cg==", + "dev": true + }, + "dns-packet": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.4.0.tgz", + "integrity": "sha512-EgqGeaBB8hLiHLZtp/IbaDQTL8pZ0+IvwzSHA6d7VyMDM+B9hgddEMa9xjK5oYnw0ci0JQ6g2XCD7/f6cafU6g==", + "dev": true, + "requires": { + "@leichtgewicht/ip-codec": "^2.0.1" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dom-serialize": { + "version": "2.2.1", + "dev": true, + "requires": { + "custom-event": "~1.0.0", + "ent": "~2.2.0", + "extend": "^3.0.0", + "void-elements": "^2.0.0" + } + }, + "dom-serializer": { + "version": "1.4.1", + "dev": true, + "requires": { + "domelementtype": "^2.0.1", + "domhandler": "^4.2.0", + "entities": "^2.0.0" + } + }, + "domelementtype": { + "version": "2.3.0", + "dev": true + }, + "domexception": { + "version": "4.0.0", + "dev": true, + "requires": { + "webidl-conversions": "^7.0.0" + } + }, + "domhandler": { + "version": "4.3.1", + "dev": true, + "requires": { + "domelementtype": "^2.2.0" + } + }, + "domino": { + "version": "2.1.6" + }, + "domutils": { + "version": "2.8.0", + "dev": true, + "requires": { + "dom-serializer": "^1.0.1", + "domelementtype": "^2.2.0", + "domhandler": "^4.2.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "dev": true + }, + "emittery": { + "version": "0.10.2", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.10.2.tgz", + "integrity": "sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "optional": true, + "requires": { + "iconv-lite": "^0.6.2" + }, + "dependencies": { + "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==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "engine.io": { + "version": "6.2.1", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "dev": true, + "requires": {} + } + } + }, + "engine.io-parser": { + "version": "5.0.4", + "dev": true + }, + "enhanced-resolve": { + "version": "5.12.0", + "dev": true, + "requires": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + } + }, + "ent": { + "version": "2.2.0", + "dev": true + }, + "entities": { + "version": "2.2.0", + "dev": true + }, + "env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true + }, + "err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "optional": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.20.5.tgz", + "integrity": "sha512-7h8MM2EQhsCA7pU/Nv78qOXFpD8Rhqd12gYiSJVkrH9+e8VuA8JlPJK/hQjjlLv6pJvx/z1iRFKzYb0XT/RuAQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.3", + "is-callable": "^1.2.7", + "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.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "unbox-primitive": "^1.0.2" + } + }, + "es-get-iterator": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.2.tgz", + "integrity": "sha512-+DTO8GYwbMCwbywjimwZMHp8AuYXOS2JZFWoi2AlPOS3ebnII9w/NLpNZtA7A0YLaVDw+O7KFCeoIV7OPvM7hQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.0", + "has-symbols": "^1.0.1", + "is-arguments": "^1.1.0", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.5", + "isarray": "^2.0.5" + }, + "dependencies": { + "isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + } + } + }, + "es-module-lexer": { + "version": "0.9.3", + "dev": true + }, + "es-shim-unscopables": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.0.tgz", + "integrity": "sha512-Jm6GPcCdC30eMLbZ2x8z2WuRwAws3zTBBKuusffYVUrNj/GVSUAZ+xKMaUpfNDR5IbyNA5LJbaecoUVbmUcB1w==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "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.62", + "optional": true, + "requires": { + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "next-tick": "^1.1.0" + } + }, + "es6-iterator": { + "version": "2.0.3", + "optional": true, + "requires": { + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" + } + }, + "es6-promise": { + "version": "4.2.8", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "es6-symbol": { + "version": "3.1.3", + "optional": true, + "requires": { + "d": "^1.0.1", + "ext": "^1.1.2" + } + }, + "esbuild": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.15.5.tgz", + "integrity": "sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg==", + "dev": true, + "optional": true, + "requires": { + "@esbuild/linux-loong64": "0.15.5", + "esbuild-android-64": "0.15.5", + "esbuild-android-arm64": "0.15.5", + "esbuild-darwin-64": "0.15.5", + "esbuild-darwin-arm64": "0.15.5", + "esbuild-freebsd-64": "0.15.5", + "esbuild-freebsd-arm64": "0.15.5", + "esbuild-linux-32": "0.15.5", + "esbuild-linux-64": "0.15.5", + "esbuild-linux-arm": "0.15.5", + "esbuild-linux-arm64": "0.15.5", + "esbuild-linux-mips64le": "0.15.5", + "esbuild-linux-ppc64le": "0.15.5", + "esbuild-linux-riscv64": "0.15.5", + "esbuild-linux-s390x": "0.15.5", + "esbuild-netbsd-64": "0.15.5", + "esbuild-openbsd-64": "0.15.5", + "esbuild-sunos-64": "0.15.5", + "esbuild-windows-32": "0.15.5", + "esbuild-windows-64": "0.15.5", + "esbuild-windows-arm64": "0.15.5" + } + }, + "esbuild-android-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz", + "integrity": "sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg==", + "dev": true, + "optional": true + }, + "esbuild-android-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz", + "integrity": "sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg==", + "dev": true, + "optional": true + }, + "esbuild-darwin-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz", + "integrity": "sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ==", + "dev": true, + "optional": true + }, + "esbuild-darwin-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz", + "integrity": "sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz", + "integrity": "sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA==", + "dev": true, + "optional": true + }, + "esbuild-freebsd-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz", + "integrity": "sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w==", + "dev": true, + "optional": true + }, + "esbuild-linux-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz", + "integrity": "sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz", + "integrity": "sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz", + "integrity": "sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q==", + "dev": true, + "optional": true + }, + "esbuild-linux-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz", + "integrity": "sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA==", + "dev": true, + "optional": true + }, + "esbuild-linux-mips64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz", + "integrity": "sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ==", + "dev": true, + "optional": true + }, + "esbuild-linux-ppc64le": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz", + "integrity": "sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw==", + "dev": true, + "optional": true + }, + "esbuild-linux-riscv64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz", + "integrity": "sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA==", + "dev": true, + "optional": true + }, + "esbuild-linux-s390x": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz", + "integrity": "sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ==", + "dev": true, + "optional": true + }, + "esbuild-netbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz", + "integrity": "sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w==", + "dev": true, + "optional": true + }, + "esbuild-openbsd-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz", + "integrity": "sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA==", + "dev": true, + "optional": true + }, + "esbuild-sunos-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz", + "integrity": "sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA==", + "dev": true, + "optional": true + }, + "esbuild-wasm": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz", + "integrity": "sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A==", + "dev": true + }, + "esbuild-windows-32": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz", + "integrity": "sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg==", + "dev": true, + "optional": true + }, + "esbuild-windows-64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz", + "integrity": "sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw==", + "dev": true, + "optional": true + }, + "esbuild-windows-arm64": { + "version": "0.15.5", + "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz", + "integrity": "sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA==", + "dev": true, + "optional": true + }, + "escalade": { + "version": "3.1.1", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "dev": true + }, + "escodegen": { + "version": "2.0.0", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "8.29.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.29.0.tgz", + "integrity": "sha512-isQ4EEiyUjZFbEKvEGJKKGBwXtvXX+zJbkVKCgTuB9t/+jUBcy8avhkEwWJecI15BkRkOYmvIM5ynbhRjEkoeg==", + "dev": true, + "requires": { + "@eslint/eslintrc": "^1.3.3", + "@humanwhocodes/config-array": "^0.11.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.1.1", + "eslint-utils": "^3.0.0", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.4.0", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.15.0", + "grapheme-splitter": "^1.0.4", + "ignore": "^5.2.0", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-sdsl": "^4.1.4", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "regexpp": "^3.2.0", + "strip-ansi": "^6.0.1", + "strip-json-comments": "^3.1.0", + "text-table": "^0.2.0" + }, + "dependencies": { + "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" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true + }, + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + }, + "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" + } + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "requires": { + "is-glob": "^4.0.3" + } + }, + "globals": { + "version": "13.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.18.0.tgz", + "integrity": "sha512-/mR4KI8Ps2spmoc0Ulu9L7agOF0du1CZNQ3dke8yItYlyKNmGrkONemBbd6V8UTc1Wgcqn21t3WYB7dbRmh6/A==", + "dev": true, + "requires": { + "type-fest": "^0.20.2" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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==", + "dev": true + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "requires": { + "argparse": "^2.0.1" + } + }, + "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 + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.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" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "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" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "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==", + "dev": true + } + } + }, + "eslint-config-prettier": { + "version": "8.5.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz", + "integrity": "sha512-obmWKLUNCnhtQRKc+tmnYuQl0pFU1ibYJQ5BGhTVB08bHe9wC8qUeG7c08dj9XX+AuPj1YSGSQIHl1pnDHZR0Q==", + "dev": true, + "requires": {} + }, + "eslint-import-resolver-node": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.6.tgz", + "integrity": "sha512-0En0w03NRVMn9Uiyn8YRPDKvWjxCWkslUEhGNTdGx15RvPJYQ+lbOlqrlNI2vEAs4pDYK4f/HN2TbDmk5TP0iw==", + "dev": true, + "requires": { + "debug": "^3.2.7", + "resolve": "^1.20.0" + }, + "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" + } + } + } + }, + "eslint-module-utils": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.7.4.tgz", + "integrity": "sha512-j4GT+rqzCoRKHwURX7pddtIPGySnX9Si/cgMI5ztrcqOPtk5dDEeZ34CQVPphnqkJytlc97Vuk05Um2mJ3gEQA==", + "dev": true, + "requires": { + "debug": "^3.2.7" + }, + "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" + } + } + } + }, + "eslint-plugin-import": { + "version": "2.26.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.26.0.tgz", + "integrity": "sha512-hYfi3FXaM8WPLf4S1cikh/r4IxnO6zrhZbEGz2b660EJRbuxgpDS5gkCuYgGWg2xxh2rBuIr4Pvhve/7c31koA==", + "dev": true, + "requires": { + "array-includes": "^3.1.4", + "array.prototype.flat": "^1.2.5", + "debug": "^2.6.9", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-module-utils": "^2.7.3", + "has": "^1.0.3", + "is-core-module": "^2.8.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.values": "^1.1.5", + "resolve": "^1.22.0", + "tsconfig-paths": "^3.14.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, + "requires": { + "prettier-linter-helpers": "^1.0.0" + } + }, + "eslint-scope": { + "version": "5.1.1", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "dependencies": { + "estraverse": { + "version": "4.3.0", + "dev": true + } + } + }, + "eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^2.0.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.3.0.tgz", + "integrity": "sha512-mQ+suqKJVyeuwGYHAdjMFqjCyfl8+Ldnxuyp3ldiMBFKkvytrXUZWaiPCEav8qDHKty44bD+qV1IP4T+w+xXRA==", + "dev": true + }, + "espree": { + "version": "9.4.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.4.1.tgz", + "integrity": "sha512-XwctdmTO6SIvCzd9810yyNzIrOrqNYV9Koizx4C/mRhf9uq0o4yHoCEU/670pOxOL/MSraektvSAji79kX90Vg==", + "dev": true, + "requires": { + "acorn": "^8.8.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.3.0" + } + }, + "esprima": { + "version": "4.0.1", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + } + }, + "esrecurse": { + "version": "4.3.0", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + } + }, + "estraverse": { + "version": "5.3.0", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter-asyncresource": { + "version": "1.0.0", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "dev": true + }, + "events": { + "version": "3.3.0", + "dev": true + }, + "eventsource": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-2.0.2.tgz", + "integrity": "sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA==" + }, + "execa": { + "version": "5.1.1", + "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" + } + }, + "exit": { + "version": "0.1.2", + "dev": true + }, + "expect": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/expect/-/expect-28.1.3.tgz", + "integrity": "sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g==", + "dev": true, + "requires": { + "@jest/expect-utils": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "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==", + "dev": true + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "express": { + "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", + "dev": true, + "requires": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.1", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.5.0", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.2.0", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.1", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.7", + "proxy-addr": "~2.0.7", + "qs": "6.11.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.18.0", + "serve-static": "1.15.0", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "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": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true + }, + "cookie": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", + "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" + } + }, + "finalhandler": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "ext": { + "version": "1.7.0", + "optional": true, + "requires": { + "type": "^2.7.2" + }, + "dependencies": { + "type": { + "version": "2.7.2", + "optional": true + } + } + }, + "extend": { + "version": "3.0.2", + "dev": true + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extsprintf": { + "version": "1.3.0", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "dev": true + }, + "fast-diff": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.2.0.tgz", + "integrity": "sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==", + "dev": true + }, + "fast-glob": { + "version": "3.2.12", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.12.tgz", + "integrity": "sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==", + "dev": true, + "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", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "dev": true + }, + "fastq": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.14.0.tgz", + "integrity": "sha512-eR2D+V9/ExcbF9ls441yIuN6TI2ED1Y2ZcA5BmMtJsOkWOFRJQ0Jt0g1UwqXJJVAb+V+umH5Dfr8oh4EVP7VVg==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "faye-websocket": { + "version": "0.11.4", + "requires": { + "websocket-driver": ">=0.5.1" + } + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.0.1", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.2", + "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", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + } + } + }, + "find-cache-dir": { + "version": "3.3.2", + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + } + }, + "find-up": { + "version": "4.1.0", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "dev": true, + "requires": { + "flatted": "^3.1.0", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.2.7", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "forever-agent": { + "version": "0.6.1", + "dev": true + }, + "form-data": { + "version": "4.0.0", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, + "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": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "8.1.0", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "requires": { + "minipass": "^3.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", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "function-bind": { + "version": "1.1.1", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "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==", + "dev": true + }, + "gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "dev": true, + "requires": { + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "dev": true + }, + "get-intrinsic": { + "version": "1.1.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-package-type": { + "version": "0.1.0", + "dev": true + }, + "get-stream": { + "version": "6.0.1", + "dev": true + }, + "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" + } + }, + "getpass": { + "version": "0.1.7", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.0", + "dev": 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" + } + }, + "glob-parent": { + "version": "5.1.2", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.4.1", + "dev": true + }, + "globals": { + "version": "11.12.0", + "dev": true + }, + "globby": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.2.tgz", + "integrity": "sha512-LKSDZXToac40u8Q1PQtZihbNdTYSNMuWe+K5l+oa6KgDzSvVrHXlJy40hUP522RjAIoNLJYBJi7ow+rbFpIhHQ==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "dev": true + }, + "grapheme-splitter": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/grapheme-splitter/-/grapheme-splitter-1.0.4.tgz", + "integrity": "sha512-bzh50DW9kTPM00T8y4o8vQg89Di9oLJVLW/KaOGIXJWP/iqCN6WKYkbNOF04vFLJhwcpYUh9ydh/+5vpOqV4YQ==", + "dev": true + }, + "hammerjs": { + "version": "2.0.8" + }, + "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 + }, + "har-schema": { + "version": "2.0.0", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "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" + } + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + } + } + }, + "has": { + "version": "1.0.3", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "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": "3.0.0", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-symbols": { + "version": "1.0.3", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "hdr-histogram-js": { + "version": "2.0.3", + "dev": true, + "requires": { + "@assemblyscript/loader": "^0.10.1", + "base64-js": "^1.2.0", + "pako": "^1.0.3" + } + }, + "hdr-histogram-percentiles-obj": { + "version": "3.0.0", + "dev": true + }, + "hosted-git-info": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.2.1.tgz", + "integrity": "sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==", + "dev": true, + "requires": { + "lru-cache": "^7.5.1" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } + } + }, + "hpack.js": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "obuf": "^1.0.0", + "readable-stream": "^2.0.1", + "wbuf": "^1.1.0" + }, + "dependencies": { + "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==", + "dev": true, + "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" + } + }, + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "html-encoding-sniffer": { + "version": "3.0.0", + "dev": true, + "requires": { + "whatwg-encoding": "^2.0.0" + } + }, + "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-escaper": { + "version": "2.0.2", + "dev": true + }, + "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==", + "dev": true + }, + "http-deceiver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true + }, + "http-errors": { + "version": "2.0.0", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "dev": true + } + } + }, + "http-parser-js": { + "version": "0.5.8" + }, + "http-proxy": { + "version": "1.18.1", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-proxy-agent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", + "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", + "dev": true, + "requires": { + "@tootallnate/once": "2", + "agent-base": "6", + "debug": "4" + } + }, + "http-proxy-middleware": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-2.0.6.tgz", + "integrity": "sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==", + "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" + } + }, + "http-signature": { + "version": "1.2.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "human-signals": { + "version": "2.1.0", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "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", + "dev": true + }, + "ignore": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.1.tgz", + "integrity": "sha512-d2qQLzTJ9WxQftPAuEQpSPmKqzxePjzVbpAVv62AQ64NTL+wR4JkrVqR/LqFsFEUsHDAiId52mJteHDFuDkElA==", + "dev": true + }, + "ignore-walk": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-5.0.1.tgz", + "integrity": "sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==", + "dev": true, + "requires": { + "minimatch": "^5.0.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } + } + }, + "image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "dev": true, + "optional": true + }, + "immediate": { + "version": "3.0.6", + "dev": true + }, + "immutable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.1.0.tgz", + "integrity": "sha512-oNkuqVTA8jqG1Q6c+UglTOD1xhC1BtjKI7XkCXRkZHrN5m18/XsnUp8Q89GkQO/z+0WjonSvl0FLhDYftp46nQ==", + "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" + }, + "dependencies": { + "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 + } + } + }, + "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", + "dev": true + }, + "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==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4" + }, + "ini": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ini/-/ini-3.0.0.tgz", + "integrity": "sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw==", + "dev": true + }, + "inquirer": { + "version": "8.2.4", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-8.2.4.tgz", + "integrity": "sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "chalk": "^4.1.1", + "cli-cursor": "^3.1.0", + "cli-width": "^3.0.0", + "external-editor": "^3.0.3", + "figures": "^3.0.0", + "lodash": "^4.17.21", + "mute-stream": "0.0.8", + "ora": "^5.4.1", + "run-async": "^2.4.0", + "rxjs": "^7.5.5", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0", + "through": "^2.3.6", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "rxjs": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.6.0.tgz", + "integrity": "sha512-DDa7d8TFNUalGC9VqXvQ1euWNN7sc63TrUCuM9J998+ViviahMIjKSOU7rfcgFOF+FCD71BhDRv4hrFz+ImDLQ==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "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" + } + }, + "ip": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "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-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-arrayish": { + "version": "0.2.1", + "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", + "dev": true, + "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-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-core-module": { + "version": "2.11.0", + "dev": true, + "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==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-docker": { + "version": "2.2.1", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "dev": true + }, + "is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-interactive": { + "version": "1.0.0", + "dev": true + }, + "is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true + }, + "is-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", + "dev": true + }, + "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-number": { + "version": "7.0.0", + "dev": true + }, + "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-path-cwd": { + "version": "1.0.0", + "dev": true + }, + "is-path-in-cwd": { + "version": "1.0.1", + "dev": true, + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "dev": true, + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "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", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-potential-custom-element-name": { + "version": "1.0.1", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-set": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", + "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", + "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-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "devOptional": true + }, + "is-unicode-supported": { + "version": "0.1.0", + "dev": true + }, + "is-weakmap": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", + "dev": true + }, + "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-weakset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "is-wsl": { + "version": "2.2.0", + "dev": true, + "requires": { + "is-docker": "^2.0.0" + } + }, + "isarray": { + "version": "1.0.0", + "dev": true + }, + "isbinaryfile": { + "version": "4.0.10", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "dev": true + }, + "istanbul-lib-coverage": { + "version": "3.2.0", + "dev": true + }, + "istanbul-lib-instrument": { + "version": "5.2.1", + "dev": true, + "requires": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "3.0.0", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^3.0.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "istanbul-reports": { + "version": "3.1.5", + "dev": true, + "requires": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + } + }, + "jasmine": { + "version": "2.8.0", + "dev": true, + "requires": { + "exit": "^0.1.2", + "glob": "^7.0.6", + "jasmine-core": "~2.8.0" + }, + "dependencies": { + "jasmine-core": { + "version": "2.8.0", + "dev": true + } + } + }, + "jasmine-core": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.5.0.tgz", + "integrity": "sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw==", + "dev": true + }, + "jasmine-spec-reporter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz", + "integrity": "sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg==", + "dev": true, + "requires": { + "colors": "1.4.0" + } + }, + "jasminewd2": { + "version": "2.2.0", + "dev": true + }, + "jest": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest/-/jest-28.1.3.tgz", + "integrity": "sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA==", + "dev": true, + "requires": { + "@jest/core": "^28.1.3", + "@jest/types": "^28.1.3", + "import-local": "^3.0.2", + "jest-cli": "^28.1.3" + } + }, + "jest-changed-files": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-28.1.3.tgz", + "integrity": "sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA==", + "dev": true, + "requires": { + "execa": "^5.0.0", + "p-limit": "^3.1.0" + }, + "dependencies": { + "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" + } + } + } + }, + "jest-circus": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-28.1.3.tgz", + "integrity": "sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/expect": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^0.7.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "p-limit": "^3.1.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "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==", + "dev": true + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "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" + } + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-cli": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-28.1.3.tgz", + "integrity": "sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ==", + "dev": true, + "requires": { + "@jest/core": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "import-local": "^3.0.2", + "jest-config": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "prompts": "^2.0.1", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-config": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-28.1.3.tgz", + "integrity": "sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^28.1.3", + "@jest/types": "^28.1.3", + "babel-jest": "^28.1.3", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^28.1.3", + "jest-environment-node": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-runner": "^28.1.3", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-diff": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-27.5.1.tgz", + "integrity": "sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-docblock": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-28.1.1.tgz", + "integrity": "sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA==", + "dev": true, + "requires": { + "detect-newline": "^3.0.0" + } + }, + "jest-each": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-28.1.3.tgz", + "integrity": "sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "jest-util": "^28.1.3", + "pretty-format": "^28.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-environment-jsdom": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/jsdom": "^16.2.4", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3", + "jsdom": "^19.0.0" + } + }, + "jest-environment-node": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-28.1.3.tgz", + "integrity": "sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "jest-mock": "^28.1.3", + "jest-util": "^28.1.3" + } + }, + "jest-get-type": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-28.0.2.tgz", + "integrity": "sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA==", + "dev": true + }, + "jest-haste-map": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-28.1.3.tgz", + "integrity": "sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "fsevents": "^2.3.2", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^28.0.2", + "jest-util": "^28.1.3", + "jest-worker": "^28.1.3", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + } + }, + "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" + } + } + } + }, + "jest-leak-detector": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz", + "integrity": "sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA==", + "dev": true, + "requires": { + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + } + } + }, + "jest-matcher-utils": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz", + "integrity": "sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^27.5.1", + "jest-get-type": "^27.5.1", + "pretty-format": "^27.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "jest-get-type": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-27.5.1.tgz", + "integrity": "sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-message-util": { + "version": "28.1.3", + "dev": true, + "requires": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^28.1.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^28.1.3", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "dev": true + } + } + }, + "slash": { + "version": "3.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-mock": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*" + } + }, + "jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "requires": {} + }, + "jest-preset-angular": { + "version": "12.2.3", + "dev": true, + "requires": { + "bs-logger": "^0.2.6", + "esbuild": ">=0.13.8", + "esbuild-wasm": ">=0.13.8", + "jest-environment-jsdom": "^28.0.0", + "pretty-format": "^28.0.0", + "ts-jest": "^28.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + } + }, + "ts-jest": { + "version": "28.0.8", + "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-28.0.8.tgz", + "integrity": "sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg==", + "dev": true, + "requires": { + "bs-logger": "0.x", + "fast-json-stable-stringify": "2.x", + "jest-util": "^28.0.0", + "json5": "^2.2.1", + "lodash.memoize": "4.x", + "make-error": "1.x", + "semver": "7.x", + "yargs-parser": "^21.0.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "jest-regex-util": { + "version": "28.0.2", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-28.0.2.tgz", + "integrity": "sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw==", + "dev": true + }, + "jest-resolve": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-28.1.3.tgz", + "integrity": "sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^28.1.3", + "jest-validate": "^28.1.3", + "resolve": "^1.20.0", + "resolve.exports": "^1.1.0", + "slash": "^3.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-resolve-dependencies": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz", + "integrity": "sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA==", + "dev": true, + "requires": { + "jest-regex-util": "^28.0.2", + "jest-snapshot": "^28.1.3" + } + }, + "jest-runner": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-28.1.3.tgz", + "integrity": "sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA==", + "dev": true, + "requires": { + "@jest/console": "^28.1.3", + "@jest/environment": "^28.1.3", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "graceful-fs": "^4.2.9", + "jest-docblock": "^28.1.1", + "jest-environment-node": "^28.1.3", + "jest-haste-map": "^28.1.3", + "jest-leak-detector": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-resolve": "^28.1.3", + "jest-runtime": "^28.1.3", + "jest-util": "^28.1.3", + "jest-watcher": "^28.1.3", + "jest-worker": "^28.1.3", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "jest-worker": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-28.1.3.tgz", + "integrity": "sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g==", + "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" + } + } + } + }, + "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" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-runtime": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-28.1.3.tgz", + "integrity": "sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw==", + "dev": true, + "requires": { + "@jest/environment": "^28.1.3", + "@jest/fake-timers": "^28.1.3", + "@jest/globals": "^28.1.3", + "@jest/source-map": "^28.1.2", + "@jest/test-result": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "execa": "^5.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-mock": "^28.1.3", + "jest-regex-util": "^28.0.2", + "jest-resolve": "^28.1.3", + "jest-snapshot": "^28.1.3", + "jest-util": "^28.1.3", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-snapshot": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-28.1.3.tgz", + "integrity": "sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg==", + "dev": true, + "requires": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/traverse": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^28.1.3", + "@jest/transform": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/babel__traverse": "^7.0.6", + "@types/prettier": "^2.1.5", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^28.1.3", + "graceful-fs": "^4.2.9", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "jest-haste-map": "^28.1.3", + "jest-matcher-utils": "^28.1.3", + "jest-message-util": "^28.1.3", + "jest-util": "^28.1.3", + "natural-compare": "^1.4.0", + "pretty-format": "^28.1.3", + "semver": "^7.3.5" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "dev": true + }, + "diff-sequences": { + "version": "28.1.1", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-28.1.1.tgz", + "integrity": "sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw==", + "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==", + "dev": true + }, + "jest-diff": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-28.1.3.tgz", + "integrity": "sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "diff-sequences": "^28.1.1", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "jest-matcher-utils": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz", + "integrity": "sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "jest-diff": "^28.1.3", + "jest-get-type": "^28.0.2", + "pretty-format": "^28.1.3" + } + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-util": { + "version": "28.1.3", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-validate": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-28.1.3.tgz", + "integrity": "sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA==", + "dev": true, + "requires": { + "@jest/types": "^28.1.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^28.0.2", + "leven": "^3.1.0", + "pretty-format": "^28.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "pretty-format": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-28.1.3.tgz", + "integrity": "sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q==", + "dev": true, + "requires": { + "@jest/schemas": "^28.1.3", + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + } + } + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-watcher": { + "version": "28.1.3", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-28.1.3.tgz", + "integrity": "sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g==", + "dev": true, + "requires": { + "@jest/test-result": "^28.1.3", + "@jest/types": "^28.1.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.10.2", + "jest-util": "^28.1.3", + "string-length": "^4.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "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==", + "dev": true, + "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==", + "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==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "jest-worker": { + "version": "27.5.1", + "dev": true, + "requires": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "js-sdsl": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.2.0.tgz", + "integrity": "sha512-dyBIzQBDkCqCu+0upx25Y2jGdbTGxE9fshMsCdK0ViOongpV+n5tXRcZY9v7CaVQ79AGS9KA1KHtojxiM7aXSQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "dev": true + }, + "jsdom": { + "version": "19.0.0", + "dev": true, + "requires": { + "abab": "^2.0.5", + "acorn": "^8.5.0", + "acorn-globals": "^6.0.0", + "cssom": "^0.5.0", + "cssstyle": "^2.3.0", + "data-urls": "^3.0.1", + "decimal.js": "^10.3.1", + "domexception": "^4.0.0", + "escodegen": "^2.0.0", + "form-data": "^4.0.0", + "html-encoding-sniffer": "^3.0.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-potential-custom-element-name": "^1.0.1", + "nwsapi": "^2.2.0", + "parse5": "6.0.1", + "saxes": "^5.0.1", + "symbol-tree": "^3.2.4", + "tough-cookie": "^4.0.0", + "w3c-hr-time": "^1.0.2", + "w3c-xmlserializer": "^3.0.0", + "webidl-conversions": "^7.0.0", + "whatwg-encoding": "^2.0.0", + "whatwg-mimetype": "^3.0.0", + "whatwg-url": "^10.0.0", + "ws": "^8.2.3", + "xml-name-validator": "^4.0.0" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "dev": true + }, + "json-schema-traverse": { + "version": "1.0.0", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "dev": true + }, + "json5": { + "version": "2.2.1", + "dev": true + }, + "jsonc-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.1.0.tgz", + "integrity": "sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg==", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true + }, + "jsprim": { + "version": "1.4.2", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "jszip": { + "version": "3.10.1", + "dev": true, + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + }, + "dependencies": { + "readable-stream": { + "version": "2.3.7", + "dev": true, + "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" + } + }, + "safe-buffer": { + "version": "5.1.2", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "karma": { + "version": "6.4.1", + "dev": true, + "requires": { + "@colors/colors": "1.5.0", + "body-parser": "^1.19.0", + "braces": "^3.0.2", + "chokidar": "^3.5.1", + "connect": "^3.7.0", + "di": "^0.0.1", + "dom-serialize": "^2.2.1", + "glob": "^7.1.7", + "graceful-fs": "^4.2.6", + "http-proxy": "^1.18.1", + "isbinaryfile": "^4.0.8", + "lodash": "^4.17.21", + "log4js": "^6.4.1", + "mime": "^2.5.2", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.5", + "qjobs": "^1.2.0", + "range-parser": "^1.2.1", + "rimraf": "^3.0.2", + "socket.io": "^4.4.1", + "source-map": "^0.6.1", + "tmp": "^0.2.1", + "ua-parser-js": "^0.7.30", + "yargs": "^16.1.1" + }, + "dependencies": { + "cliui": { + "version": "7.0.4", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "mkdirp": { + "version": "0.5.6", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + }, + "tmp": { + "version": "0.2.1", + "dev": true, + "requires": { + "rimraf": "^3.0.0" + } + }, + "yargs": { + "version": "16.2.0", + "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.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + } + } + }, + "karma-chrome-launcher": { + "version": "3.1.1", + "dev": true, + "requires": { + "which": "^1.2.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "karma-cli": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-2.0.0.tgz", + "integrity": "sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw==", + "dev": true, + "requires": { + "resolve": "^1.3.3" + } + }, + "karma-coverage-istanbul-reporter": { + "version": "3.0.3", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^3.0.6", + "istanbul-reports": "^3.0.2", + "minimatch": "^3.0.4" + }, + "dependencies": { + "istanbul-lib-source-maps": { + "version": "3.0.6", + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.5", + "make-dir": "^2.1.0", + "rimraf": "^2.6.3", + "source-map": "^0.6.1" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "dev": true + } + } + }, + "make-dir": { + "version": "2.1.0", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "karma-jasmine": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.1.0.tgz", + "integrity": "sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ==", + "dev": true, + "requires": { + "jasmine-core": "^4.1.0" + } + }, + "karma-jasmine-html-reporter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz", + "integrity": "sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA==", + "dev": true, + "requires": {} + }, + "karma-source-map-support": { + "version": "1.4.0", + "dev": true, + "requires": { + "source-map-support": "^0.5.5" + } + }, + "kind-of": { + "version": "6.0.3", + "dev": true + }, + "kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "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 + }, + "less": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/less/-/less-4.1.3.tgz", + "integrity": "sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA==", + "dev": true, + "requires": { + "copy-anything": "^2.0.1", + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "parse-node-version": "^1.0.1", + "source-map": "~0.6.0", + "tslib": "^2.3.0" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "optional": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true, + "optional": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true, + "optional": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "less-loader": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.0.0.tgz", + "integrity": "sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw==", + "dev": true, + "requires": { + "klona": "^2.0.4" + } + }, + "leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "license-webpack-plugin": { + "version": "4.0.2", + "dev": true, + "requires": { + "webpack-sources": "^3.0.0" + } + }, + "lie": { + "version": "3.3.0", + "dev": true, + "requires": { + "immediate": "~3.0.5" + } + }, + "lines-and-columns": { + "version": "1.2.4", + "dev": true + }, + "loader-runner": { + "version": "4.3.0", + "dev": true + }, + "loader-utils": { + "version": "3.2.1", + "dev": true + }, + "locate-path": { + "version": "5.0.0", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "lodash": { + "version": "4.17.21", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "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 + }, + "log-symbols": { + "version": "4.1.0", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "log4js": { + "version": "6.7.1", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "flatted": "^3.2.7", + "rfdc": "^1.3.0", + "streamroller": "^3.1.3" + } + }, + "loglevel": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.8.1.tgz", + "integrity": "sha512-tCRIJM51SHjAayKwC+QAg8hT8vg6z7GSgLJKGvzuPb1Wc+hLzqtuVLxp6/HzSPOozuK+8ErAhy7U/sVzw8Dgfg==", + "dev": true + }, + "loglevel-colored-level-prefix": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz", + "integrity": "sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "loglevel": "^1.4.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "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" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "lru-cache": { + "version": "6.0.0", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "magic-string": { + "version": "0.26.2", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.2.tgz", + "integrity": "sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + }, + "make-dir": { + "version": "3.1.0", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "dev": true + } + } + }, + "make-error": { + "version": "1.3.6", + "dev": true + }, + "make-fetch-happen": { + "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", + "dev": true, + "requires": { + "agentkeepalive": "^4.2.1", + "cacache": "^16.1.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^5.0.0", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^7.7.1", + "minipass": "^3.1.6", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^2.0.3", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^7.0.0", + "ssri": "^9.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "7.14.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.1.tgz", + "integrity": "sha512-ysxwsnTKdAx96aTRdhDOCQfDgbHnt8SK0KY8SEjO0wHinhWOFTESbjVCMPbU1uGXg/ch4lifqx0wfjOawU2+WA==", + "dev": true + } + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "media-typer": { + "version": "0.3.0", + "dev": true + }, + "memfs": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.12.tgz", + "integrity": "sha512-BcjuQn6vfqP+k100e0E9m61Hyqa//Brp+I3f0OBmN0ATHlFA8vx3Lt8z57R3u2bPqe3WGDBC+nF72fTH7isyEw==", + "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": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true + }, + "merge-stream": { + "version": "2.0.0", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mime": { + "version": "2.6.0", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "dev": true + }, + "mini-css-extract-plugin": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz", + "integrity": "sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg==", + "dev": true, + "requires": { + "schema-utils": "^4.0.0" + }, + "dependencies": { + "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" + } + } + } + }, + "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 + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "dev": true + }, + "minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + }, + "minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-fetch": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", + "dev": true, + "requires": { + "encoding": "^0.1.13", + "minipass": "^3.1.6", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + } + }, + "minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-json-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minipass-json-stream/-/minipass-json-stream-1.0.1.tgz", + "integrity": "sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==", + "dev": true, + "requires": { + "jsonparse": "^1.3.1", + "minipass": "^3.0.0" + } + }, + "minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "requires": { + "minipass": "^3.0.0" + } + }, + "minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "requires": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + } + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + }, + "moment": { + "version": "2.29.4" + }, + "ms": { + "version": "2.1.2" + }, + "multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", + "dev": true, + "requires": { + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" + } + }, + "mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "nanoid": { + "version": "3.3.4", + "dev": true + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "natural-compare-lite": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", + "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", + "dev": true + }, + "needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "dev": true, + "optional": true, + "requires": { + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "optional": true, + "requires": { + "ms": "^2.1.1" + } + }, + "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==", + "dev": true, + "optional": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "negotiator": { + "version": "0.6.3", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "dev": true + }, + "net": { + "version": "1.0.2" + }, + "next-tick": { + "version": "1.1.0", + "optional": true + }, + "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-gyp": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.3.0.tgz", + "integrity": "sha512-A6rJWfXFz7TQNjpldJ915WFb1LnhO4lIve3ANPbWreuEoLoKlFT3sxIepPBkLhM27crW8YmN+pjlgbasH6cH/Q==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^10.0.3", + "nopt": "^6.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + } + }, + "node-gyp-build": { + "version": "4.5.0", + "optional": true + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-releases": { + "version": "2.0.6", + "dev": true + }, + "nopt": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-6.0.0.tgz", + "integrity": "sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==", + "dev": true, + "requires": { + "abbrev": "^1.0.0" + } + }, + "normalize-package-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.1.tgz", + "integrity": "sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "is-core-module": "^2.8.1", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + } + }, + "normalize-path": { + "version": "3.0.0", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.2.tgz", + "integrity": "sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-install-checks": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-5.0.0.tgz", + "integrity": "sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA==", + "dev": true, + "requires": { + "semver": "^7.1.1" + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.1.0.tgz", + "integrity": "sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw==", + "dev": true, + "requires": { + "hosted-git-info": "^5.0.0", + "proc-log": "^2.0.1", + "semver": "^7.3.5", + "validate-npm-package-name": "^4.0.0" + } + }, + "npm-packlist": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.3.tgz", + "integrity": "sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "ignore-walk": "^5.0.1", + "npm-bundled": "^2.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "npm-bundled": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-2.0.1.tgz", + "integrity": "sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^2.0.0" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "npm-pick-manifest": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz", + "integrity": "sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg==", + "dev": true, + "requires": { + "npm-install-checks": "^5.0.0", + "npm-normalize-package-bin": "^1.0.1", + "npm-package-arg": "^9.0.0", + "semver": "^7.3.5" + } + }, + "npm-registry-fetch": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz", + "integrity": "sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==", + "dev": true, + "requires": { + "make-fetch-happen": "^10.0.6", + "minipass": "^3.1.6", + "minipass-fetch": "^2.0.3", + "minipass-json-stream": "^1.0.1", + "minizlib": "^2.1.2", + "npm-package-arg": "^9.0.1", + "proc-log": "^2.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "dev": true, + "requires": { + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + } + }, + "nth-check": { + "version": "2.1.1", + "dev": true, + "requires": { + "boolbase": "^1.0.0" + } + }, + "nwsapi": { + "version": "2.2.2", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "dev": true + }, + "object-inspect": { + "version": "1.12.2", + "dev": true + }, + "object-is": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", + "dev": true, + "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==", + "dev": true + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.values": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.6.tgz", + "integrity": "sha512-FVVTkD1vENCsAcwNs9k6jea2uHC/X0+JcjG8YA60FN5CMaJmG95wT9jek/xX9nornqGRrBkKtzuAu2wuHpKqvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "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.4.1", + "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", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "open": { + "version": "8.4.0", + "dev": true, + "requires": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + } + }, + "optionator": { + "version": "0.8.3", + "dev": true, + "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" + } + }, + "ora": { + "version": "5.4.1", + "dev": true, + "requires": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "os-tmpdir": { + "version": "1.0.2", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "4.1.0", + "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==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + }, + "p-retry": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", + "dev": true, + "requires": { + "@types/retry": "0.12.0", + "retry": "^0.13.1" + }, + "dependencies": { + "retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true + } + } + }, + "p-try": { + "version": "2.2.0", + "dev": true + }, + "pacote": { + "version": "13.6.2", + "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.2.tgz", + "integrity": "sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg==", + "dev": true, + "requires": { + "@npmcli/git": "^3.0.0", + "@npmcli/installed-package-contents": "^1.0.7", + "@npmcli/promise-spawn": "^3.0.0", + "@npmcli/run-script": "^4.1.0", + "cacache": "^16.0.0", + "chownr": "^2.0.0", + "fs-minipass": "^2.1.0", + "infer-owner": "^1.0.4", + "minipass": "^3.1.6", + "mkdirp": "^1.0.4", + "npm-package-arg": "^9.0.0", + "npm-packlist": "^5.1.0", + "npm-pick-manifest": "^7.0.0", + "npm-registry-fetch": "^13.0.1", + "proc-log": "^2.0.0", + "promise-retry": "^2.0.1", + "read-package-json": "^5.0.0", + "read-package-json-fast": "^2.0.3", + "rimraf": "^3.0.2", + "ssri": "^9.0.0", + "tar": "^6.1.11" + } + }, + "pako": { + "version": "1.0.11", + "dev": true + }, + "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-json": { + "version": "5.2.0", + "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" + } + }, + "parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", + "dev": true + }, + "parse5": { + "version": "5.1.1", + "optional": true + }, + "parse5-html-rewriting-stream": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1", + "parse5-sax-parser": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parse5-htmlparser2-tree-adapter": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parse5-sax-parser": { + "version": "6.0.1", + "dev": true, + "requires": { + "parse5": "^6.0.1" + }, + "dependencies": { + "parse5": { + "version": "6.0.1", + "dev": true + } + } + }, + "parseurl": { + "version": "1.3.3", + "dev": true + }, + "path-exists": { + "version": "4.0.0", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "dev": true + }, + "path-to-regexp": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "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==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "dev": true + }, + "pify": { + "version": "2.3.0", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pirates": { + "version": "4.0.5", + "dev": true + }, + "piscina": { + "version": "3.2.0", + "dev": true, + "requires": { + "eventemitter-asyncresource": "^1.0.0", + "hdr-histogram-js": "^2.0.1", + "hdr-histogram-percentiles-obj": "^3.0.0", + "nice-napi": "^1.0.2" + } + }, + "pkg-dir": { + "version": "4.2.0", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + }, + "postcss": { + "version": "8.4.16", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.16.tgz", + "integrity": "sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ==", + "dev": true, + "requires": { + "nanoid": "^3.3.4", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, + "postcss-attribute-case-insensitive": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz", + "integrity": "sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-clamp": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/postcss-clamp/-/postcss-clamp-4.1.0.tgz", + "integrity": "sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-functional-notation": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz", + "integrity": "sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-hex-alpha": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz", + "integrity": "sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-color-rebeccapurple": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz", + "integrity": "sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-media": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz", + "integrity": "sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-properties": { + "version": "12.1.11", + "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz", + "integrity": "sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-custom-selectors": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz", + "integrity": "sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.4" + } + }, + "postcss-dir-pseudo-class": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz", + "integrity": "sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-double-position-gradients": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz", + "integrity": "sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-env-function": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/postcss-env-function/-/postcss-env-function-4.0.6.tgz", + "integrity": "sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-focus-visible": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz", + "integrity": "sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-focus-within": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz", + "integrity": "sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.9" + } + }, + "postcss-font-variant": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz", + "integrity": "sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA==", + "dev": true, + "requires": {} + }, + "postcss-gap-properties": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz", + "integrity": "sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg==", + "dev": true, + "requires": {} + }, + "postcss-image-set-function": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz", + "integrity": "sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-import": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.0.0.tgz", + "integrity": "sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-initial": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-initial/-/postcss-initial-4.0.1.tgz", + "integrity": "sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ==", + "dev": true, + "requires": {} + }, + "postcss-lab-function": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz", + "integrity": "sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w==", + "dev": true, + "requires": { + "@csstools/postcss-progressive-custom-properties": "^1.1.0", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-loader": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.0.1.tgz", + "integrity": "sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ==", + "dev": true, + "requires": { + "cosmiconfig": "^7.0.0", + "klona": "^2.0.5", + "semver": "^7.3.7" + } + }, + "postcss-logical": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/postcss-logical/-/postcss-logical-5.0.4.tgz", + "integrity": "sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g==", + "dev": true, + "requires": {} + }, + "postcss-media-minmax": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz", + "integrity": "sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ==", + "dev": true, + "requires": {} + }, + "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-nesting": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.2.0.tgz", + "integrity": "sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA==", + "dev": true, + "requires": { + "@csstools/selector-specificity": "^2.0.0", + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-opacity-percentage": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.2.tgz", + "integrity": "sha512-lyUfF7miG+yewZ8EAk9XUBIlrHyUE6fijnesuz+Mj5zrIHIEw6KcIZSOk/elVMqzLvREmXB83Zi/5QpNRYd47w==", + "dev": true + }, + "postcss-overflow-shorthand": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz", + "integrity": "sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-page-break": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/postcss-page-break/-/postcss-page-break-3.0.4.tgz", + "integrity": "sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ==", + "dev": true, + "requires": {} + }, + "postcss-place": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-place/-/postcss-place-7.0.5.tgz", + "integrity": "sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g==", + "dev": true, + "requires": { + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-preset-env": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz", + "integrity": "sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA==", + "dev": true, + "requires": { + "@csstools/postcss-cascade-layers": "^1.0.5", + "@csstools/postcss-color-function": "^1.1.1", + "@csstools/postcss-font-format-keywords": "^1.0.1", + "@csstools/postcss-hwb-function": "^1.0.2", + "@csstools/postcss-ic-unit": "^1.0.1", + "@csstools/postcss-is-pseudo-class": "^2.0.7", + "@csstools/postcss-nested-calc": "^1.0.0", + "@csstools/postcss-normalize-display-values": "^1.0.1", + "@csstools/postcss-oklab-function": "^1.1.1", + "@csstools/postcss-progressive-custom-properties": "^1.3.0", + "@csstools/postcss-stepped-value-functions": "^1.0.1", + "@csstools/postcss-text-decoration-shorthand": "^1.0.0", + "@csstools/postcss-trigonometric-functions": "^1.0.2", + "@csstools/postcss-unset-value": "^1.0.2", + "autoprefixer": "^10.4.8", + "browserslist": "^4.21.3", + "css-blank-pseudo": "^3.0.3", + "css-has-pseudo": "^3.0.4", + "css-prefers-color-scheme": "^6.0.3", + "cssdb": "^7.0.0", + "postcss-attribute-case-insensitive": "^5.0.2", + "postcss-clamp": "^4.1.0", + "postcss-color-functional-notation": "^4.2.4", + "postcss-color-hex-alpha": "^8.0.4", + "postcss-color-rebeccapurple": "^7.1.1", + "postcss-custom-media": "^8.0.2", + "postcss-custom-properties": "^12.1.8", + "postcss-custom-selectors": "^6.0.3", + "postcss-dir-pseudo-class": "^6.0.5", + "postcss-double-position-gradients": "^3.1.2", + "postcss-env-function": "^4.0.6", + "postcss-focus-visible": "^6.0.4", + "postcss-focus-within": "^5.0.4", + "postcss-font-variant": "^5.0.0", + "postcss-gap-properties": "^3.0.5", + "postcss-image-set-function": "^4.0.7", + "postcss-initial": "^4.0.1", + "postcss-lab-function": "^4.2.1", + "postcss-logical": "^5.0.4", + "postcss-media-minmax": "^5.0.0", + "postcss-nesting": "^10.1.10", + "postcss-opacity-percentage": "^1.1.2", + "postcss-overflow-shorthand": "^3.0.4", + "postcss-page-break": "^3.0.4", + "postcss-place": "^7.0.5", + "postcss-pseudo-class-any-link": "^7.1.6", + "postcss-replace-overflow-wrap": "^4.0.0", + "postcss-selector-not": "^6.0.1", + "postcss-value-parser": "^4.2.0" + } + }, + "postcss-pseudo-class-any-link": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz", + "integrity": "sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-replace-overflow-wrap": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz", + "integrity": "sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw==", + "dev": true, + "requires": {} + }, + "postcss-selector-not": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz", + "integrity": "sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ==", + "dev": true, + "requires": { + "postcss-selector-parser": "^6.0.10" + } + }, + "postcss-selector-parser": { + "version": "6.0.11", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", + "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + } + }, + "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", + "dev": true + }, + "prettier": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.1.tgz", + "integrity": "sha512-lqGoSJBQNJidqCHE80vqZJHWHRFoNYsSpP9AjFhlhi9ODCJA541svILes/+/1GM3VaL/abZi7cpFzOpdR9UPKg==", + "dev": true + }, + "prettier-eslint": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/prettier-eslint/-/prettier-eslint-15.0.1.tgz", + "integrity": "sha512-mGOWVHixSvpZWARqSDXbdtTL54mMBxc5oQYQ6RAqy8jecuNJBgN3t9E5a81G66F8x8fsKNiR1HWaBV66MJDOpg==", + "dev": true, + "requires": { + "@types/eslint": "^8.4.2", + "@types/prettier": "^2.6.0", + "@typescript-eslint/parser": "^5.10.0", + "common-tags": "^1.4.0", + "dlv": "^1.1.0", + "eslint": "^8.7.0", + "indent-string": "^4.0.0", + "lodash.merge": "^4.6.0", + "loglevel-colored-level-prefix": "^1.0.0", + "prettier": "^2.5.1", + "pretty-format": "^23.0.1", + "require-relative": "^0.8.7", + "typescript": "^4.5.4", + "vue-eslint-parser": "^8.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + } + } + } + }, + "prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "requires": { + "fast-diff": "^1.1.2" + } + }, + "pretty-bytes": { + "version": "5.6.0", + "dev": true + }, + "pretty-format": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-27.5.1.tgz", + "integrity": "sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1", + "ansi-styles": "^5.0.0", + "react-is": "^17.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true + }, + "react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true + } + } + }, + "proc-log": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-2.0.1.tgz", + "integrity": "sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true + }, + "promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "requires": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + } + }, + "prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "requires": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + } + }, + "protractor": { + "version": "7.0.0", + "dev": true, + "requires": { + "@types/q": "^0.0.32", + "@types/selenium-webdriver": "^3.0.0", + "blocking-proxy": "^1.0.0", + "browserstack": "^1.5.1", + "chalk": "^1.1.3", + "glob": "^7.0.3", + "jasmine": "2.8.0", + "jasminewd2": "^2.1.0", + "q": "1.4.1", + "saucelabs": "^1.5.0", + "selenium-webdriver": "3.6.0", + "source-map-support": "~0.4.0", + "webdriver-js-extender": "2.1.0", + "webdriver-manager": "^12.1.7", + "yargs": "^15.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "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" + } + }, + "cliui": { + "version": "6.0.0", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "dev": true + }, + "strip-ansi": { + "version": "6.0.1", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "dev": true + }, + "source-map-support": { + "version": "0.4.18", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + } + } + }, + "y18n": { + "version": "4.0.3", + "dev": true + }, + "yargs": { + "version": "15.4.1", + "dev": true, + "requires": { + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" + } + }, + "yargs-parser": { + "version": "18.1.3", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "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 + } + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true, + "optional": true + }, + "psl": { + "version": "1.9.0", + "dev": true + }, + "punycode": { + "version": "2.1.1", + "dev": true + }, + "q": { + "version": "1.4.1", + "dev": true + }, + "qjobs": { + "version": "1.2.0", + "dev": true + }, + "qs": { + "version": "6.11.0", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "querystringify": { + "version": "2.2.0" + }, + "queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true + }, + "randombytes": { + "version": "2.1.0", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true + }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + } + }, + "read-package-json": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.2.tgz", + "integrity": "sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q==", + "dev": true, + "requires": { + "glob": "^8.0.1", + "json-parse-even-better-errors": "^2.3.1", + "normalize-package-data": "^4.0.0", + "npm-normalize-package-bin": "^2.0.0" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "glob": { + "version": "8.0.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.3.tgz", + "integrity": "sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.1.tgz", + "integrity": "sha512-362NP+zlprccbEt/SkxKfRMHnNY85V74mVnpUpNyr3F35covl09Kec7/sEFLt3RA4oXmewtoaanoIf67SE5Y5g==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "npm-normalize-package-bin": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz", + "integrity": "sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ==", + "dev": true + } + } + }, + "read-package-json-fast": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz", + "integrity": "sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==", + "dev": true, + "requires": { + "json-parse-even-better-errors": "^2.3.0", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "readable-stream": { + "version": "3.6.0", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "reflect-metadata": { + "version": "0.1.13", + "dev": true + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "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.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-parser": { + "version": "2.2.11", + "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==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "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": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "request": { + "version": "2.88.2", + "dev": 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", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "qs": { + "version": "6.5.3", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "uuid": { + "version": "3.4.0", + "dev": true + } + } + }, + "require-directory": { + "version": "2.1.1", + "dev": true + }, + "require-from-string": { + "version": "2.0.2", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "dev": true + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "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" + } + }, + "resolve-from": { + "version": "5.0.0", + "dev": true + }, + "resolve-url-loader": { + "version": "5.0.0", + "dev": true, + "requires": { + "adjust-sourcemap-loader": "^4.0.0", + "convert-source-map": "^1.7.0", + "loader-utils": "^2.0.0", + "postcss": "^8.2.14", + "source-map": "0.6.1" + }, + "dependencies": { + "loader-utils": { + "version": "2.0.4", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "resolve.exports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-1.1.0.tgz", + "integrity": "sha512-J1l+Zxxp4XK3LUDZ9m60LRJF/mAe4z6a4xyabPHk7pvK5t35dACV32iIjJDFeWZFfZlO29w6SZ67knR0tHzJtQ==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rfdc": { + "version": "1.3.0", + "dev": true + }, + "rimraf": { + "version": "3.0.2", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "queue-microtask": "^1.2.2" + } + }, + "rxjs": { + "version": "6.5.5", + "requires": { + "tslib": "^1.9.0" + }, + "dependencies": { + "tslib": { + "version": "1.14.1" + } + } + }, + "safe-buffer": { + "version": "5.2.1" + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "dev": true + }, + "sass": { + "version": "1.54.4", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.54.4.tgz", + "integrity": "sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA==", + "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": "13.0.2", + "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-13.0.2.tgz", + "integrity": "sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q==", + "dev": true, + "requires": { + "klona": "^2.0.4", + "neo-async": "^2.6.2" + } + }, + "saucelabs": { + "version": "1.5.0", + "dev": true, + "requires": { + "https-proxy-agent": "^2.2.1" + }, + "dependencies": { + "agent-base": { + "version": "4.3.0", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "debug": { + "version": "3.2.7", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "dev": true + }, + "saxes": { + "version": "5.0.1", + "dev": true, + "requires": { + "xmlchars": "^2.2.0" + } + }, + "schema-utils": { + "version": "2.7.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.5", + "ajv": "^6.12.4", + "ajv-keywords": "^3.5.2" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "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-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + } + } + }, + "select-hose": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true + }, + "selenium-webdriver": { + "version": "3.6.0", + "dev": true, + "requires": { + "jszip": "^3.1.3", + "rimraf": "^2.5.4", + "tmp": "0.0.30", + "xml2js": "^0.4.17" + }, + "dependencies": { + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "tmp": { + "version": "0.0.30", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.1" + } + } + } + }, + "selfsigned": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.1.1.tgz", + "integrity": "sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==", + "dev": true, + "requires": { + "node-forge": "^1" + } + }, + "semver": { + "version": "7.3.8", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.8.tgz", + "integrity": "sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==", + "dev": true, + "requires": { + "lru-cache": "^6.0.0" + } + }, + "semver-dsl": { + "version": "1.0.1", + "dev": true, + "requires": { + "semver": "^5.3.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "dev": true + } + } + }, + "send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + }, + "dependencies": { + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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 + }, + "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 + }, + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "serialize-javascript": { + "version": "6.0.0", + "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": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "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" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "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": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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.15.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.18.0" + } + }, + "set-blocking": { + "version": "2.0.0", + "dev": true + }, + "setimmediate": { + "version": "1.0.5", + "dev": true + }, + "setprototypeof": { + "version": "1.2.0", + "dev": true + }, + "shallow-clone": { + "version": "3.0.1", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "dev": true + }, + "sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + }, + "smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true + }, + "socket.io": { + "version": "4.5.4", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "dev": true + }, + "socket.io-parser": { + "version": "4.2.1", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "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" + } + }, + "sockjs-client": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.6.1.tgz", + "integrity": "sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw==", + "requires": { + "debug": "^3.2.7", + "eventsource": "^2.0.2", + "faye-websocket": "^0.11.4", + "inherits": "^2.0.4", + "url-parse": "^1.5.10" + }, + "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" + } + } + } + }, + "socks": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", + "dev": true, + "requires": { + "ip": "^2.0.0", + "smart-buffer": "^4.2.0" + } + }, + "socks-proxy-agent": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", + "dev": true, + "requires": { + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" + } + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true + }, + "source-map-js": { + "version": "1.0.2", + "dev": true + }, + "source-map-loader": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.0.tgz", + "integrity": "sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw==", + "dev": true, + "requires": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, + "dependencies": { + "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==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "source-map-support": { + "version": "0.5.21", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "dev": true + } + } + }, + "sourcemap-codec": { + "version": "1.4.8", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "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" + } + }, + "sprintf-js": { + "version": "1.1.2", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "dev": 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": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", + "dev": true, + "requires": { + "minipass": "^3.1.1" + } + }, + "stack-utils": { + "version": "2.0.6", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "dev": true + } + } + }, + "statuses": { + "version": "1.5.0", + "dev": true + }, + "stompjs": { + "version": "2.3.3", + "requires": { + "websocket": "latest" + } + }, + "streamroller": { + "version": "3.1.3", + "dev": true, + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "requires": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + } + }, + "string-width": { + "version": "4.2.3", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "strip-ansi": { + "version": "6.0.1", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "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 + }, + "stylus": { + "version": "0.59.0", + "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.59.0.tgz", + "integrity": "sha512-lQ9w/XIOH5ZHVNuNbWW8D822r+/wBSO/d6XvtyHLF7LW4KaCIDeVbvn5DF8fGCJAUCwVhVi/h6J0NUcnylUEjg==", + "dev": true, + "requires": { + "@adobe/css-tools": "^4.0.1", + "debug": "^4.3.2", + "glob": "^7.1.6", + "sax": "~1.2.4", + "source-map": "^0.7.3" + } + }, + "stylus-loader": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-7.0.0.tgz", + "integrity": "sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A==", + "dev": true, + "requires": { + "fast-glob": "^3.2.11", + "klona": "^2.0.5", + "normalize-path": "^3.0.0" + } + }, + "supports-color": { + "version": "5.5.0", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "requires": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "dependencies": { + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "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==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "dev": true + }, + "symbol-observable": { + "version": "4.0.0", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "dev": true + }, + "tapable": { + "version": "2.2.1", + "dev": true + }, + "tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-jdIBIN6LTIe2jqzay/2vtYLlBHa3JF42ot3h1dW8Q0PaAG4v8rm0cvpVePtau5C6OKXGGcgO9q2AMNSWxiLqKw==", + "dev": true, + "requires": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^4.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "dependencies": { + "minipass": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.0.0.tgz", + "integrity": "sha512-g2Uuh2jEKoht+zvO6vJqXmYpflPqzRBT+Th2h01DKh5z7wbY/AZ2gCQ78cP70YoHPyFdY30YBV5WxgLOEwOykw==", + "dev": true, + "requires": { + "yallist": "^4.0.0" + } + } + } + }, + "terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "requires": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + } + }, + "terser": { + "version": "5.14.2", + "dev": true, + "requires": { + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + } + }, + "terser-webpack-plugin": { + "version": "5.3.6", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.14", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.0", + "terser": "^5.14.1" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "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-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "test-exclude": { + "version": "6.0.0", + "dev": true, + "requires": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + } + }, + "text-table": { + "version": "0.2.0", + "dev": true + }, + "through": { + "version": "2.3.8", + "dev": true + }, + "thunky": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "dev": true + }, + "to-regex-range": { + "version": "5.0.1", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "dev": true + }, + "tough-cookie": { + "version": "4.1.2", + "dev": true, + "requires": { + "psl": "^1.1.33", + "punycode": "^2.1.1", + "universalify": "^0.2.0", + "url-parse": "^1.5.3" + }, + "dependencies": { + "universalify": { + "version": "0.2.0", + "dev": true + } + } + }, + "tr46": { + "version": "3.0.0", + "dev": true, + "requires": { + "punycode": "^2.1.1" + } + }, + "tree-kill": { + "version": "1.2.2", + "dev": true + }, + "ts-node": { + "version": "10.9.1", + "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.1.tgz", + "integrity": "sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw==", + "dev": true, + "requires": { + "@cspotcode/source-map-support": "^0.8.0", + "@tsconfig/node10": "^1.0.7", + "@tsconfig/node12": "^1.0.7", + "@tsconfig/node14": "^1.0.0", + "@tsconfig/node16": "^1.0.2", + "acorn": "^8.4.1", + "acorn-walk": "^8.1.1", + "arg": "^4.1.0", + "create-require": "^1.1.0", + "diff": "^4.0.1", + "make-error": "^1.1.1", + "v8-compile-cache-lib": "^3.0.1", + "yn": "3.1.1" + }, + "dependencies": { + "acorn-walk": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", + "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", + "dev": true + } + } + }, + "tsconfig-paths": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz", + "integrity": "sha512-fxDhWnFSLt3VuTwtvJt5fpwxBHg5AdKWMsgcPOOIilyjymcYVZoCQF8fvFRezCNfblEXmi+PcM1eYHeOAgXCOQ==", + "dev": true, + "requires": { + "@types/json5": "^0.0.29", + "json5": "^1.0.1", + "minimist": "^1.2.6", + "strip-bom": "^3.0.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" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "tslib": { + "version": "2.4.1" + }, + "tslint": { + "version": "6.1.3", + "dev": true, + "peer": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "builtin-modules": "^1.1.1", + "chalk": "^2.3.0", + "commander": "^2.12.1", + "diff": "^4.0.1", + "glob": "^7.1.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.3", + "resolve": "^1.3.2", + "semver": "^5.3.0", + "tslib": "^1.13.0", + "tsutils": "^2.29.0" + }, + "dependencies": { + "mkdirp": { + "version": "0.5.6", + "dev": true, + "peer": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "semver": { + "version": "5.7.1", + "dev": true, + "peer": true + }, + "tslib": { + "version": "1.14.1", + "dev": true, + "peer": true + } + } + }, + "tsutils": { + "version": "2.29.0", + "dev": true, + "peer": true, + "requires": { + "tslib": "^1.8.1" + }, + "dependencies": { + "tslib": { + "version": "1.14.1", + "dev": true, + "peer": true + } + } + }, + "tunnel-agent": { + "version": "0.6.0", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "dev": true + }, + "type": { + "version": "1.2.0", + "optional": true + }, + "type-check": { + "version": "0.3.2", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "type-detect": { + "version": "4.0.8", + "dev": true + }, + "type-fest": { + "version": "0.21.3", + "dev": true + }, + "type-is": { + "version": "1.6.18", + "dev": true, + "requires": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + } + }, + "typed-assert": { + "version": "1.0.9", + "dev": true + }, + "typedarray-to-buffer": { + "version": "3.1.5", + "optional": true, + "requires": { + "is-typedarray": "^1.0.0" + } + }, + "typescript": { + "version": "4.6.4", + "dev": true + }, + "ua-parser-js": { + "version": "0.7.32", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "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.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universalify": { + "version": "0.1.2", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "url-parse": { + "version": "1.5.10", + "requires": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "utf-8-validate": { + "version": "5.0.10", + "optional": true, + "requires": { + "node-gyp-build": "^4.3.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "dev": true + }, + "utils-merge": { + "version": "1.0.1", + "dev": true + }, + "uuid": { + "version": "8.3.2", + "dev": true + }, + "v8-compile-cache-lib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", + "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", + "dev": true + }, + "v8-to-istanbul": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.0.1.tgz", + "integrity": "sha512-74Y4LqY74kLE6IFyIjPtkSTWzUZmj8tdHT9Ii/26dvQ6K9Dl2NbEfj0XgU2sHCtKgt5VupqhlO/5aWuqS+IY1w==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^1.6.0" + } + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz", + "integrity": "sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==", + "dev": true, + "requires": { + "builtins": "^5.0.0" + } + }, + "vary": { + "version": "1.1.2", + "dev": true + }, + "verror": { + "version": "1.10.0", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "void-elements": { + "version": "2.0.1", + "dev": true + }, + "vue-eslint-parser": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz", + "integrity": "sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g==", + "dev": true, + "requires": { + "debug": "^4.3.2", + "eslint-scope": "^7.0.0", + "eslint-visitor-keys": "^3.1.0", + "espree": "^9.0.0", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.5" + }, + "dependencies": { + "eslint-scope": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.1.1.tgz", + "integrity": "sha512-QKQM/UXpIiHcLqJ5AOyIW7XZmzjkzQXYE54n1++wb0u9V/abW3l9uQnxX8Z5Xd18xyKIMTUAyQ0k1e8pz6LUrw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + } + } + } + }, + "w3c-hr-time": { + "version": "1.0.2", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "w3c-xmlserializer": { + "version": "3.0.0", + "dev": true, + "requires": { + "xml-name-validator": "^4.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watchpack": { + "version": "2.4.0", + "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" + } + }, + "wcwidth": { + "version": "1.0.1", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "webdriver-js-extender": { + "version": "2.1.0", + "dev": true, + "requires": { + "@types/selenium-webdriver": "^3.0.0", + "selenium-webdriver": "^3.0.1" + } + }, + "webdriver-manager": { + "version": "12.1.8", + "dev": true, + "requires": { + "adm-zip": "^0.4.9", + "chalk": "^1.1.1", + "del": "^2.2.0", + "glob": "^7.0.3", + "ini": "^1.3.4", + "minimist": "^1.2.0", + "q": "^1.4.1", + "request": "^2.87.0", + "rimraf": "^2.5.2", + "semver": "^5.3.0", + "xml2js": "^0.4.17" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "dev": true + }, + "ansi-styles": { + "version": "2.2.1", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "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" + } + }, + "ini": { + "version": "1.3.8", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "semver": { + "version": "5.7.1", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "dev": true + } + } + }, + "webidl-conversions": { + "version": "7.0.0", + "dev": true + }, + "webpack": { + "version": "5.74.0", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.74.0.tgz", + "integrity": "sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA==", + "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.7.1", + "acorn-import-assertions": "^1.7.6", + "browserslist": "^4.14.5", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.10.0", + "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-even-better-errors": "^2.3.1", + "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.4.0", + "webpack-sources": "^3.2.3" + }, + "dependencies": { + "ajv": { + "version": "6.12.6", + "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-keywords": { + "version": "3.5.2", + "dev": true, + "requires": {} + }, + "json-schema-traverse": { + "version": "0.4.1", + "dev": true + }, + "schema-utils": { + "version": "3.1.1", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" + } + } + } + }, + "webpack-dev-middleware": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz", + "integrity": "sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA==", + "dev": true, + "requires": { + "colorette": "^2.0.10", + "memfs": "^3.4.3", + "mime-types": "^2.1.31", + "range-parser": "^1.2.1", + "schema-utils": "^4.0.0" + }, + "dependencies": { + "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.11.0", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz", + "integrity": "sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw==", + "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/serve-static": "^1.13.10", + "@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": "^2.0.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", + "rimraf": "^3.0.2", + "schema-utils": "^4.0.0", + "selfsigned": "^2.0.1", + "serve-index": "^1.9.1", + "sockjs": "^0.3.24", + "spdy": "^4.0.2", + "webpack-dev-middleware": "^5.3.1", + "ws": "^8.4.2" + }, + "dependencies": { + "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", + "dev": true, + "requires": { + "clone-deep": "^4.0.1", + "wildcard": "^2.0.0" + } + }, + "webpack-sources": { + "version": "3.2.3", + "dev": true + }, + "webpack-subresource-integrity": { + "version": "5.1.0", + "dev": true, + "requires": { + "typed-assert": "^1.0.8" + } + }, + "websocket": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/websocket/-/websocket-1.0.34.tgz", + "integrity": "sha512-PRDso2sGwF6kM75QykIesBijKSVceR6jL2G8NGYyq2XrItNC2P5/qL5XeR056GhA+Ly7JMFvJb9I312mJfmqnQ==", + "optional": true, + "requires": { + "bufferutil": "^4.0.1", + "debug": "^2.2.0", + "es5-ext": "^0.10.50", + "typedarray-to-buffer": "^3.1.5", + "utf-8-validate": "^5.0.2", + "yaeti": "^0.0.6" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "optional": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "optional": true + } + } + }, + "websocket-driver": { + "version": "0.7.4", + "requires": { + "http-parser-js": ">=0.5.1", + "safe-buffer": ">=5.1.0", + "websocket-extensions": ">=0.1.1" + } + }, + "websocket-extensions": { + "version": "0.1.4" + }, + "whatwg-encoding": { + "version": "2.0.0", + "dev": true, + "requires": { + "iconv-lite": "0.6.3" + }, + "dependencies": { + "iconv-lite": { + "version": "0.6.3", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + } + } + }, + "whatwg-mimetype": { + "version": "3.0.0", + "dev": true + }, + "whatwg-url": { + "version": "10.0.0", + "dev": true, + "requires": { + "tr46": "^3.0.0", + "webidl-conversions": "^7.0.0" + } + }, + "which": { + "version": "2.0.2", + "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" + } + }, + "which-collection": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", + "dev": true, + "requires": { + "is-map": "^2.0.1", + "is-set": "^2.0.1", + "is-weakmap": "^2.0.1", + "is-weakset": "^2.0.1" + } + }, + "which-module": { + "version": "2.0.0", + "dev": true + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "wildcard": { + "version": "2.0.0", + "dev": true + }, + "word-wrap": { + "version": "1.2.3", + "dev": true + }, + "wrap-ansi": { + "version": "7.0.0", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "dev": true + } + } + }, + "wrappy": { + "version": "1.0.2", + "dev": true + }, + "write-file-atomic": { + "version": "4.0.2", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + } + }, + "ws": { + "version": "8.11.0", + "dev": true, + "requires": {} + }, + "xhr2": { + "version": "0.2.1" + }, + "xml-name-validator": { + "version": "4.0.0", + "dev": true + }, + "xml2js": { + "version": "0.4.23", + "dev": true, + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "dev": true + }, + "xmlchars": { + "version": "2.2.0", + "dev": true + }, + "y18n": { + "version": "5.0.8", + "dev": true + }, + "yaeti": { + "version": "0.0.6", + "optional": true + }, + "yallist": { + "version": "4.0.0", + "dev": true + }, + "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.6.2", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "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.1.1" + }, + "dependencies": { + "yargs-parser": { + "version": "21.1.1", + "dev": true + } + } + }, + "yargs-parser": { + "version": "20.2.9", + "dev": true + }, + "yn": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", + "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", + "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 + }, + "zone.js": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.12.0.tgz", + "integrity": "sha512-XtC+I5dXU14HrzidAKBNMqneIVUykLEAA1x+v4KVrd6AUPWlwYORF8KgsVqvgdHiKZ4BkxxjvYi/ksEixTPR0Q==", + "requires": { + "tslib": "^2.3.0" + } + } + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package.json new file mode 100644 index 000000000..e6d640de6 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package.json @@ -0,0 +1,90 @@ +{ + "name": "quartz-manager-ui", + "version": "0.1.1", + "license": "MIT", + "scripts": { + "ng": "ng", + "start": "ng serve --proxy-config proxy.conf.json", + "build": "ng build --configuration production", + "test": "jest", + "lint": "ng lint", + "e2e": "ng e2e" + }, + "private": true, + "dependencies": { + "@angular-material-components/datetime-picker": "8.0.0", + "@angular-material-components/moment-adapter": "8.0.0", + "@angular/animations": "14.2.12", + "@angular/cdk": "^14.0.1", + "@angular/common": "14.2.12", + "@angular/compiler": "14.2.12", + "@angular/core": "14.2.12", + "@angular/flex-layout": "14.0.0-beta.41", + "@angular/forms": "14.2.12", + "@angular/material": "^14.0.1", + "@angular/platform-browser": "14.2.12", + "@angular/platform-browser-dynamic": "14.2.12", + "@angular/platform-server": "14.2.12", + "@angular/router": "14.2.12", + "@auth0/angular-jwt": "5.1.0", + "@fortawesome/fontawesome": "^1.1.4", + "@fortawesome/fontawesome-free-regular": "^5.0.8", + "@fortawesome/fontawesome-free-solid": "^5.0.8", + "@stomp/ng2-stompjs": "^0.6.3", + "core-js": "2.5.1", + "hammerjs": "2.0.8", + "moment": "^2.29.1", + "net": "^1.0.2", + "rxjs": "6.5.5", + "sockjs-client": "^1.1.1", + "stompjs": "^2.3.3", + "tslib": "~2.4.1", + "zone.js": "~0.12.0" + }, + "devDependencies": { + "@angular-devkit/build-angular": "14.2.10", + "@angular-devkit/core": "^14.2.10", + "@angular-eslint/builder": "14.4.0", + "@angular-eslint/eslint-plugin": "14.4.0", + "@angular-eslint/eslint-plugin-template": "14.4.0", + "@angular-eslint/schematics": "14.4.0", + "@angular-eslint/template-parser": "14.4.0", + "@angular/cli": "14.2.10", + "@angular/compiler-cli": "14.2.12", + "@angular/language-service": "14.2.12", + "@types/hammerjs": "2.0.34", + "@types/jasmine": "2.5.54", + "@types/jasminewd2": "2.0.3", + "@types/jest": "28.1.1", + "@types/node": "^12.11.1", + "@typescript-eslint/eslint-plugin": "5.43.0", + "@typescript-eslint/eslint-plugin-tslint": "^5.46.0", + "@typescript-eslint/parser": "5.43.0", + "codelyzer": "~6.0.2", + "eslint": "^8.28.0", + "eslint-config-prettier": "^8.5.0", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-prettier": "^4.2.1", + "jasmine-core": "~4.5.0", + "jasmine-spec-reporter": "~7.0.0", + "jest": "28.1.3", + "jest-preset-angular": "~12.2.3", + "karma": "~6.4.1", + "karma-chrome-launcher": "~3.1.1", + "karma-cli": "2.0.0", + "karma-coverage-istanbul-reporter": "~3.0.3", + "karma-jasmine": "~5.1.0", + "karma-jasmine-html-reporter": "~2.0.0", + "prettier": "^2.8.1", + "prettier-eslint": "^15.0.1", + "protractor": "~7.0.0", + "ts-node": "10.9.1", + "typescript": "4.6.4" + }, + "jest": { + "preset": "jest-preset-angular", + "setupFilesAfterEnv": [ + "/jest.setup.ts" + ] + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/protractor.conf.js b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/protractor.conf.js new file mode 100644 index 000000000..1c5e1e5a4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/protractor.conf.js @@ -0,0 +1,30 @@ +// Protractor configuration file, see link for more information +// https://github.com/angular/protractor/blob/master/lib/config.ts + +const { SpecReporter } = require('jasmine-spec-reporter'); + +exports.config = { + allScriptsTimeout: 11000, + specs: [ + './e2e/**/*.e2e-spec.ts' + ], + capabilities: { + 'browserName': 'chrome' + }, + directConnect: true, + baseUrl: 'http://localhost:4200/', + framework: 'jasmine', + jasmineNodeOpts: { + showColors: true, + defaultTimeoutInterval: 30000, + print: function() {} + }, + beforeLaunch: function() { + require('ts-node').register({ + project: 'e2e/tsconfig.e2e.json' + }); + }, + onPrepare() { + jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } })); + } +}; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/proxy.conf.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/proxy.conf.json new file mode 100644 index 000000000..a06ff86e3 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/proxy.conf.json @@ -0,0 +1,8 @@ +{ + "/quartz-manager": { + "target": "http://localhost:8080", + "secure": false, + "cookiePathRewrite": "/", + "ws":true + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/_test.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/_test.ts new file mode 100644 index 000000000..9bf72267e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/_test.ts @@ -0,0 +1,32 @@ +// This file is required by karma.conf.js and loads recursively all the .spec and framework files + +import 'zone.js/dist/long-stack-trace-zone'; +import 'zone.js/dist/proxy.js'; +import 'zone.js/dist/sync-test'; +import 'zone.js/dist/jasmine-patch'; +import 'zone.js/dist/async-test'; +import 'zone.js/dist/fake-async-test'; +import { getTestBed } from '@angular/core/testing'; +import { + BrowserDynamicTestingModule, + platformBrowserDynamicTesting +} from '@angular/platform-browser-dynamic/testing'; + +// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any. +declare var __karma__: any; +declare var require: any; + +// Prevent Karma from running prematurely. +__karma__.loaded = function () {}; + +// First, initialize the Angular testing environment. +getTestBed().initTestEnvironment( + BrowserDynamicTestingModule, + platformBrowserDynamicTesting() +); +// Then we find all the tests. +const context = require.context('./', true, /\.spec\.ts$/); +// And load the modules. +context.keys().map(context); +// Finally, start Karma to run the tests. +__karma__.start(); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/animate.css b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/animate.css new file mode 100644 index 000000000..cd6869d73 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/animate.css @@ -0,0 +1,7 @@ +@charset "UTF-8";/*! + * animate.css - https://animate.style/ + * Version - 4.1.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2020 Animate.css + */:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*0.8);animation-duration:calc(var(--animate-duration)*0.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translateX(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translateX(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translateX(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translateX(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translateX(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translateX(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0deg)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skewX(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skewX(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skewX(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skewX(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skewX(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skewX(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skewX(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translateX(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translateX(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translateX(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*0.75);animation-duration:calc(var(--animate-duration)*0.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skewX(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skewX(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skewX(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skewX(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skewX(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skewX(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skewX(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skewX(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts new file mode 100644 index 000000000..ecac95cf0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts @@ -0,0 +1,54 @@ +import {NgModule} from '@angular/core'; +import {RouterModule, Routes} from '@angular/router'; +import {LoginComponent} from './views/login'; +import {AdminGuard, GuestGuard} from './guards'; +import {NotFoundComponent} from './views/not-found'; +import {ForbiddenComponent} from './views/forbidden'; + +import {ManagerComponent} from './views/manager'; +import {GenericErrorComponent} from './views/error/genericError.component'; + +export const routes: Routes = [ + { + path: '', + component: ManagerComponent, + canActivate: [AdminGuard], + pathMatch: 'full' + }, + { + path: 'manager', + component: ManagerComponent, + canActivate: [AdminGuard], + pathMatch: 'full' + }, + { + path: 'login', + component: LoginComponent, + canActivate: [GuestGuard] + }, + { + path: '404', + component: NotFoundComponent + }, + { + path: '403', + component: ForbiddenComponent + }, + { + path: 'error', + component: GenericErrorComponent + }, + { + path: '**', + redirectTo: '/404' + } +]; + +@NgModule({ + imports: [RouterModule.forRoot(routes, { + initialNavigation: 'disabled' + })], + exports: [RouterModule], + providers: [] +}) +export class AppRoutingModule { } diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.html new file mode 100644 index 000000000..91994a25e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.html @@ -0,0 +1,8 @@ +
+ +
+ +
+ +
+ diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.scss new file mode 100644 index 000000000..6e1eb967e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.scss @@ -0,0 +1,10 @@ +:host { + display: block; + color: rgba(0,0,0,.54); + font-family: Roboto,"Helvetica Neue"; + height: 100%; +} + +.content { + padding: 20px; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts new file mode 100644 index 000000000..a84d89362 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts @@ -0,0 +1,51 @@ +import {TestBed, async, waitForAsync} from '@angular/core/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; +import { AppComponent } from './app.component'; +import { MockApiService } from './services/mocks/api.service.mock'; + +import { FooterComponent} from './components'; + +import {MatIconRegistry} from '@angular/material/icon'; +import {MatToolbarModule} from '@angular/material/toolbar'; + + +import { + ApiService, + AuthService, + UserService, + ConfigService +} from './services'; + +describe('AppComponent', () => { + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ + AppComponent, + FooterComponent, + ], + imports: [ + RouterTestingModule, + MatToolbarModule + ], + providers: [ + MatIconRegistry, + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + UserService, + ConfigService + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }).compileComponents(); + })); + + it('should create the app', async(() => { + const fixture = TestBed.createComponent(AppComponent); + const app = fixture.debugElement.componentInstance; + expect(app).toBeTruthy(); + })); + +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.ts new file mode 100644 index 000000000..f801254de --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.ts @@ -0,0 +1,15 @@ +import {Component} from '@angular/core'; + +// I remove temporary fontawesome5 and downgrade to fontawesome4 +import fontawesome from '@fortawesome/fontawesome'; +import solid from '@fortawesome/fontawesome-free-solid/'; +fontawesome.library.add(solid); + +@Component({ + selector: 'app-root', + templateUrl: './app.component.html', + styleUrls: ['./app.component.scss'] +}) + +export class AppComponent { +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.module.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.module.ts new file mode 100644 index 000000000..533822ea5 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.module.ts @@ -0,0 +1,187 @@ +import { BrowserModule } from '@angular/platform-browser'; +import { NgModule, APP_INITIALIZER} from '@angular/core'; +import { FormsModule, ReactiveFormsModule } from '@angular/forms'; +import { HttpClientModule } from '@angular/common/http'; + +import {JWT_OPTIONS, JwtModule} from '@auth0/angular-jwt'; + +// material +import {MatIconRegistry} from '@angular/material/icon'; +import {MatInputModule} from '@angular/material/input'; +import {MatChipsModule} from '@angular/material/chips'; +import {MatTooltipModule} from '@angular/material/tooltip'; +import {MatProgressBarModule} from '@angular/material/progress-bar'; +import {MatProgressSpinnerModule} from '@angular/material/progress-spinner'; +import {MatMenuModule} from '@angular/material/menu'; +import {MatToolbarModule} from '@angular/material/toolbar'; +import {MatIconModule} from '@angular/material/icon'; +import {MatButtonModule} from '@angular/material/button'; +import {MatCardModule} from '@angular/material/card'; +import {MatDatepickerModule} from '@angular/material/datepicker'; +import {MatSelectModule} from '@angular/material/select'; +import {MatListModule} from '@angular/material/list'; +import {MatSidenavModule} from '@angular/material/sidenav'; + +import {MatNativeDateModule} from '@angular/material/core'; +import { NgxMatTimepickerModule, NgxMatDatetimePickerModule} from '@angular-material-components/datetime-picker'; +import { NgxMatMomentModule } from '@angular-material-components/moment-adapter'; + +import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; +import { FlexLayoutModule } from '@angular/flex-layout'; +import { AppComponent } from './app.component'; +import { AppRoutingModule } from './app-routing.module'; +import { ManagerComponent } from './views/manager'; +import { LoginComponent } from './views/login'; +import { LoginGuard, GuestGuard, AdminGuard } from './guards'; +import { NotFoundComponent } from './views/not-found'; +import { AccountMenuComponent } from './components/header/account-menu/account-menu.component'; + +import { + HeaderComponent, + FooterComponent, + GithubComponent, + SchedulerControlComponent, + LogsPanelComponent, + ProgressPanelComponent, + TriggerListComponent +} from './components'; + +import { + ApiService, + AuthService, + UserService, + SchedulerService, + ConfigService, + ProgressWebsocketService, + LogsWebsocketService, + getHtmlBaseUrl, + TriggerService +} from './services'; +import { ForbiddenComponent } from './views/forbidden/forbidden.component'; +import { APP_BASE_HREF } from '@angular/common'; +import {SimpleTriggerConfigComponent} from './components/simple-trigger-config'; +import JobService from './services/job.service'; +import {GenericErrorComponent} from './views/error/genericError.component'; + +export function initUserFactory(userService: UserService) { + return () => userService.fetchLoggedUser(); +} + + +// const stompConfig: StompConfig = { +// // Which server? +// url: 'ws://localhost:8080/quartz-manager/progress', + +// // Headers +// // Typical keys: login, passcode, host +// headers: { +// login: 'admin', +// passcode: 'admin' +// }, + +// // How often to heartbeat? +// // Interval in milliseconds, set to 0 to disable +// heartbeat_in: 0, // Typical value 0 - disabled +// heartbeat_out: 20000, // Typical value 20000 - every 20 seconds +// // Wait in milliseconds before attempting auto reconnect +// // Set to 0 to disable +// // Typical value 5000 (5 seconds) +// reconnect_delay: 5000, + +// // Will log diagnostics on console +// debug: true +// }; + +export function jwtOptionsFactory(apiService: ApiService) { + return { + tokenGetter: () => { + return apiService.getToken(); + }, + whitelistedDomains: ['localhost:8080', 'localhost:4200'] + } +} + +@NgModule({ + declarations: [ + AppComponent, + HeaderComponent, + FooterComponent, + ManagerComponent, + GithubComponent, + LoginComponent, + NotFoundComponent, + AccountMenuComponent, + SimpleTriggerConfigComponent, + SchedulerControlComponent, + LogsPanelComponent, + ProgressPanelComponent, + ForbiddenComponent, + GenericErrorComponent, + TriggerListComponent + ], + imports: [ + BrowserAnimationsModule, + BrowserModule, + FormsModule, + ReactiveFormsModule, + HttpClientModule, + AppRoutingModule, + JwtModule.forRoot({ + jwtOptionsProvider: { + provide: JWT_OPTIONS, + useFactory: jwtOptionsFactory, + deps: [ApiService] + } + }), + MatMenuModule, + MatTooltipModule, + MatButtonModule, + MatChipsModule, + MatIconModule, + MatInputModule, + MatSelectModule, + MatToolbarModule, + MatCardModule, + MatListModule, + MatProgressSpinnerModule, + MatProgressBarModule, + MatDatepickerModule, MatNativeDateModule, + NgxMatMomentModule, + NgxMatDatetimePickerModule, + MatSidenavModule, + FlexLayoutModule + ], + providers: [ + { + provide: APP_BASE_HREF, + useValue: getHtmlBaseUrl() + }, + { + 'provide': APP_INITIALIZER, + 'useFactory': initUserFactory, + 'deps': [UserService], + 'multi': true + }, + LoginGuard, + GuestGuard, + AdminGuard, + SchedulerService, + JobService, + TriggerService, + ProgressWebsocketService, + LogsWebsocketService, + AuthService, + ApiService, + UserService, + ConfigService, + MatIconRegistry + // StompService, + // ServerSocket + // { + // provide: StompConfig, + // useValue: stompConfig + // } + ], + bootstrap: [AppComponent] +}) +export class AppModule { } diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html new file mode 100644 index 000000000..230d894bd --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html @@ -0,0 +1,8 @@ + + + +   Quartz Manager + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss new file mode 100644 index 000000000..786b1b10a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss @@ -0,0 +1,27 @@ +:host{ + //position: absolute; + bottom: 0; + left: 0; + right: 0; + height: 64px; +} + +#footer{ + background-color: rgb(33, 33, 33); + font-size: 15px; + box-sizing: border-box; + text-align: center; + a { + text-decoration: none; + cursor: pointer; + color: #FFFFFF; + } + + h3 { + margin: 0px; + padding: 0px; + font-weight: 300; + font-size: 22px; + } +} + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts new file mode 100644 index 000000000..da17d8242 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-footer', + templateUrl: './footer.component.html', + styleUrls: ['./footer.component.scss'] +}) +export class FooterComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts new file mode 100644 index 000000000..a50d57382 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts @@ -0,0 +1 @@ +export * from './footer.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html new file mode 100644 index 000000000..083b4e0fe --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html @@ -0,0 +1,4 @@ +

Want to help make this project? Check out repo.

+ + GITHUB + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss new file mode 100644 index 000000000..68d247d51 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss @@ -0,0 +1,20 @@ +:host { + display: block; + height: 236px; + padding: 72px 24px; + box-sizing: border-box; + background-color: rgb(238, 238, 238); + text-align: center +} + +:host h3 { + margin: 0px; + padding: 0px; + font-weight: 300; + font-size: 22px; +} + +:host a { + color: #000; + margin-top: 32px; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts new file mode 100644 index 000000000..e39ab1623 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-github', + templateUrl: './github.component.html', + styleUrls: ['./github.component.scss'] +}) +export class GithubComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts new file mode 100644 index 000000000..d67097678 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts @@ -0,0 +1 @@ +export * from './github.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html new file mode 100644 index 000000000..1b235e111 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html @@ -0,0 +1 @@ + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts new file mode 100644 index 000000000..be952fca1 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts @@ -0,0 +1,53 @@ +import { ComponentFixture, TestBed, inject, waitForAsync} from '@angular/core/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { RouterTestingModule } from '@angular/router/testing'; + +import { + AuthService, + ConfigService, + ApiService, + UserService +} from '../../../services'; +import { + MockUserService, + MockApiService +} from '../../../services/mocks'; +import { AccountMenuComponent } from './account-menu.component'; + +describe('AccountMenuComponent', () => { + let component: AccountMenuComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [ + RouterTestingModule + ], + providers: [ + { + provide: UserService, + useClass: MockUserService + }, + { + provide: ApiService, + useClass: MockApiService + }, + AuthService, + ConfigService + ], + declarations: [AccountMenuComponent], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(AccountMenuComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts new file mode 100644 index 000000000..4ad72ebe1 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts @@ -0,0 +1,35 @@ +import { Component, OnInit, Input } from '@angular/core'; +import { + ConfigService, + AuthService, + UserService +} from '../../../services'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-account-menu', + templateUrl: './account-menu.component.html', + styleUrls: ['./account-menu.component.scss'] +}) +export class AccountMenuComponent implements OnInit { + + // TODO define user interface + user: any; + + constructor( + private config: ConfigService, + private authService: AuthService, + private router: Router, + private userService: UserService + ) {} + + ngOnInit() { + this.user = this.userService.currentUser; + } + + logout() { + this.authService.logout().subscribe(res => { + this.router.navigate(['/login']); + }); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html new file mode 100644 index 000000000..0bfb36f1b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html @@ -0,0 +1,35 @@ + + + +
+
+ + + + + + +
+
+
+ diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss new file mode 100644 index 000000000..eb2bb4c48 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss @@ -0,0 +1,59 @@ +:host { + position: relative; + z-index: 10; + color: #fff; +} + +// The menu popup is rendered outside the header component +// so we will restyle a couple things inside a global /deep/ selector + +.app-navbar { + width: 100%; + display: flex; + flex-wrap: wrap; + + .right { + margin-left: auto; + float: right; + } +} + +.app-navbar span { + text-transform: uppercase !important; +} + +.app-angular-logo { + margin: 0 4px 3px 0; + height: 26px; +} + +.greeting-hamburger { + display: none; +} + + +::ng-deep { + .app-header-accountMenu.mat-menu-panel { + border-radius: 3px; + max-width: initial; + overflow: visible; + + .mat-menu-content { + max-width: initial; + padding: 0; + overflow: hidden; + display: inline-block; + margin-bottom: -6px; + } + } +} +@media screen and (max-width: 600px) { + .greeting-hamburger { + display: block; + } + .greeting-button { + display: none; + } +} + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts new file mode 100644 index 000000000..4e2ca39b9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts @@ -0,0 +1,43 @@ +import { Component, OnInit } from '@angular/core'; +import { + UserService, + AuthService, + // NO_AUTH +} from '../../services'; +import { Router } from '@angular/router'; + +@Component({ + selector: 'app-header', + templateUrl: './header.component.html', + styleUrls: ['./header.component.scss'] +}) +export class HeaderComponent implements OnInit { + + constructor( + private userService: UserService, + private authService: AuthService, + private router: Router + ) { } + + ngOnInit() { + } + + logout() { + this.authService.logout().subscribe(res => { + this.router.navigate(['/login']); + }); + } + + hasSignedIn() { + return !!this.userService.currentUser; + } + + noAuthenticationRequired = () => !this.hasSignedIn() && this.userService.isAnAnonymousUser === true; + + + userName() { + const user = this.userService.currentUser; + return user.username; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts new file mode 100644 index 000000000..be62c26c7 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts @@ -0,0 +1 @@ +export * from './header.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/index.ts new file mode 100644 index 000000000..1e35cefaf --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/index.ts @@ -0,0 +1,7 @@ +export * from './header'; +export * from './github'; +export * from './footer'; +export * from './logs-panel'; +export * from './scheduler-control'; +export * from './progress-panel'; +export * from './trigger-list'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts new file mode 100644 index 000000000..e9b1c034a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts @@ -0,0 +1 @@ +export * from './logs-panel.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html new file mode 100644 index 000000000..626dd6192 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html @@ -0,0 +1,35 @@ + + + JOB LOGS + + +
+
+ no logs +
+
+
+
+
+ [{{log.time|date:'medium'}}] +
+
+ + + +
+
+ + {{log.threadName}} + +
+
+ {{log.msg}} +
+
+
+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss new file mode 100644 index 000000000..04faaeaeb --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss @@ -0,0 +1,36 @@ +.red{ + color: red; +} +.green{ + color: green; +} + +.yellow{ + color: gold; +} + +#logs{ + font-size: 1em; +} + +/* ===== Scrollbar CSS ===== */ +/* Firefox */ +* { + scrollbar-width: auto; + scrollbar-color: #b8b8b8 #ffffff; +} + +/* Chrome, Edge, and Safari */ +*::-webkit-scrollbar { + width: 12px; +} + +*::-webkit-scrollbar-track { + background: #ffffff; +} + +*::-webkit-scrollbar-thumb { + background-color: #b8b8b8; + border-radius: 10px; + border: 3px solid #ffffff; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts new file mode 100644 index 000000000..65871ab94 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts @@ -0,0 +1,58 @@ +import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core'; + +import {LogsWebsocketService, ApiService} from '../../services'; +import {Observable} from 'rxjs'; + +@Component({ + selector: 'logs-panel', + templateUrl: './logs-panel.component.html', + styleUrls: ['./logs-panel.component.scss'] +}) +export class LogsPanelComponent implements OnInit { + + MAX_LOGS = 30; + + logs = new Array(); + + constructor( + private logsWebsocketService: LogsWebsocketService, + private apiService: ApiService + ) { + } + + ngOnInit() { + const obs = this.logsWebsocketService.getObservable() + obs.subscribe({ + 'next': this.onNewLogMsg, + 'error': (err) => { + console.log(err) + } + }); + } + + onNewLogMsg = (receivedMsg) => { + if (receivedMsg.type === 'SUCCESS') { + this._showNewLog(receivedMsg.message); + } else if (receivedMsg.type === 'ERROR') { + this._refreshSession(); + } // if websocket has been closed for session expiration, try to refresh it + }; + + _showNewLog = (logRecord) => { + if (this.logs.length > this.MAX_LOGS) { + this.logs.pop(); + } + + this.logs.unshift({ + time: logRecord.date, + type: logRecord.type, + msg: logRecord.message, + threadName: logRecord.threadName + }); + } + + _refreshSession = () => { + this.apiService.get('/quartz-manager/session/refresh') + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts new file mode 100644 index 000000000..28a222f92 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts @@ -0,0 +1 @@ +export * from './progress-panel.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html new file mode 100644 index 000000000..2b763918d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html @@ -0,0 +1,43 @@ + + + + + JOB PROGRESS + + +
+ + {{percentageStr}} +
+ +
+ {{progress.timesTriggered}} +  / {{progress.repeatCount}} +
+ + +
+
+
prev fire time
+
{{progress.previousFireTime|date:'dd-MM-yyyy HH:mm:ss'}}
+
-
+
+
+
next fire time
+
{{progress.nextFireTime|date:'dd-MM-yyyy HH:mm:ss'}}
+
-
+
+
+
final fire time
+
{{progress.finalFireTime|date:'dd-MM-yyyy HH:mm:ss'}}
+
-
+
+
+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss new file mode 100644 index 000000000..7aa05ec13 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss @@ -0,0 +1,33 @@ +#timesTriggeredCounter{ + font-size: 2em; +} +#totCounter{ + margin-top: auto; + text-align: center; + margin-bottom: 5px; + font-size: 0.8em; +} +#counterBox{ + margin-bottom: 1em; +} + +.fireBox{ + width: 100%; + border-right: 1px solid rgba(0,0,0,.12); + margin: 8px; +} + +.fireBox:last-child { + border-right: 0; +} + +.fireBoxHeader{ + font-size: 0.8em; + text-align: center; + color: grey; + margin-bottom: 0.5em; +} + +.fireBoxContent{ + text-align: center; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts new file mode 100644 index 000000000..505306c84 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts @@ -0,0 +1,84 @@ +import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core' +import {ProgressWebsocketService, QuartzManagerWebsocketMessage} from '../../services'; + +import { Observable } from 'rxjs'; +import TriggerFiredBundle from '../../model/trigger-fired-bundle.model'; +// import {Message} from '@stomp/stompjs'; + +// import { Subscription } from 'rxjs/Subscription'; +// import {StompService} from '@stomp/ng2-stompjs'; + +// import { QueueingSubject } from 'queueing-subject' +// import websocketConnect from 'rxjs-websockets' +// import 'rxjs/add/operator/share' +// import {ServerSocket} from '../../services/qz.socket.service' + +@Component({ + selector: 'progress-panel', + templateUrl: './progress-panel.component.html', + styleUrls: ['./progress-panel.component.scss'] +}) +export class ProgressPanelComponent implements OnInit { + + progress: TriggerFiredBundle = new TriggerFiredBundle(); + percentageStr: string; + + // // Stream of messages + // private subscription: Subscription; + // public messages: Observable; + // // Subscription status + // public subscribed: boolean; + // // Array of historic message (bodies) + // public mq: Array = []; + + + constructor( + private progressWebsocketService: ProgressWebsocketService, + // private _stompService: StompService, + // private serverSocket : ServerSocket + ) { } + + onNewProgressMsg = (receivedMsg: QuartzManagerWebsocketMessage) => { + if (receivedMsg.type === 'SUCCESS') { + const newStatus = receivedMsg.message; + this.progress = newStatus; + this.percentageStr = this.progress.percentage + '%'; + } + } + + ngOnInit() { + const obs = this.progressWebsocketService.getObservable() + obs.subscribe({ + 'next' : this.onNewProgressMsg, + 'error' : (err) => {console.log(err)} + }); + + // this.subscribed = false; + // this.subscribe(); + + // this.serverSocket.connect() + // this.socketSubscription = this.serverSocket.messages.subscribe((message: string) => { + // console.log('received message from server: ', message) + // }) + } + + // public subscribe() { + // if (this.subscribed) { + // return; + // } + + // // Stream of messages + // this.messages = this._stompService.subscribe('/topic/progress'); + + // // Subscribe a function to be run on_next message + // this.subscription = this.messages.subscribe(this.on_next); + + // this.subscribed = true; + // } + + // public on_next = (message: Message) => { + // this.mq.push(message.body + '\n'); + // console.log(message); + // } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts new file mode 100644 index 000000000..a5d63b028 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts @@ -0,0 +1 @@ +export * from './scheduler-control.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html new file mode 100644 index 000000000..559757b55 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html @@ -0,0 +1,26 @@ + + +
+ +
+ SCHEDULER +
+ +
+
+
{{scheduler?.name}}
+
+
+
+
{{scheduler?.instanceId}}
+
+
+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss new file mode 100644 index 000000000..fa097596f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss @@ -0,0 +1,17 @@ +.red{ + color: red; +} +.green{ + color: green; +} + +label{ + color: grey; + font-variant: small-caps; + font-size: smaller; +} + +#scheduler-name{ + text-transform: capitalize; + font-size: larger; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts new file mode 100644 index 000000000..266fe114a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts @@ -0,0 +1,105 @@ +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; +import {SchedulerControlComponent} from './scheduler-control.component'; +import {ApiService, ConfigService, SchedulerService, UserService} from '../../services'; +import {HttpClient} from '@angular/common/http'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {RouterTestingModule} from '@angular/router/testing'; +import {DebugElement} from '@angular/core'; +import {By} from '@angular/platform-browser'; +import {Scheduler} from '../../model/scheduler.model'; +import {MatCardModule} from '@angular/material/card'; +import {MatIconModule} from '@angular/material/icon'; +import {MatDividerModule} from '@angular/material/divider'; + +describe('SchedulerControlComponent', () => { + + let component: SchedulerControlComponent; + let fixture: ComponentFixture; + + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [MatCardModule, MatDividerModule, MatIconModule, HttpClientTestingModule, RouterTestingModule], + declarations: [SchedulerControlComponent], + providers: [UserService, SchedulerService, ApiService, ConfigService] + }).compileComponents(); + + httpClient = TestBed.inject(HttpClient); + httpTestingController = TestBed.inject(HttpTestingController); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SchedulerControlComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should display the play button at the beginning since the scheduler is stopped', () => { + expect(component).toBeDefined(); + const getSchedulerReq = httpTestingController.expectOne('/quartz-manager/scheduler'); + const mockScheduler = new Scheduler('test-scheduler', 'test-id', 'STOPPED', []); + getSchedulerReq.flush(mockScheduler); + + expect(component.scheduler).toEqual(mockScheduler); + expect(component.scheduler.status).toEqual('STOPPED'); + fixture.detectChanges(); + + const schedulerControlComponentDe: DebugElement = fixture.debugElement; + const schedulerBtnDe = schedulerControlComponentDe.query(By.css('#schedulerControllerBtn')); + expect(schedulerBtnDe).toBeTruthy(); + + const playIconDe = schedulerBtnDe.query(By.css('.fa-play')); + expect(playIconDe).toBeTruthy(); + }); + + it('should switch the button to pause when the scheduler is started', () => { + expect(component).toBeDefined(); + const getSchedulerReq = httpTestingController.expectOne('/quartz-manager/scheduler'); + const mockScheduler = new Scheduler('test-scheduler', 'test-id', 'STOPPED', []); + getSchedulerReq.flush(mockScheduler); + fixture.detectChanges(); + + const schedulerControlComponentDe: DebugElement = fixture.debugElement; + let schedulerBtnDe = schedulerControlComponentDe.query(By.css('#schedulerControllerBtn')); + expect(schedulerBtnDe).toBeTruthy(); + const playIconDe = schedulerBtnDe.query(By.css('.fa-play')); + expect(playIconDe).toBeTruthy(); + + schedulerBtnDe.nativeElement.click(); + const startSchedulerReq = httpTestingController.expectOne('/quartz-manager/scheduler/run'); + startSchedulerReq.flush(null); + fixture.detectChanges(); + + schedulerBtnDe = schedulerControlComponentDe.query(By.css('#schedulerControllerBtn')); + const pauseIconDe = schedulerBtnDe.query(By.css('.fa-pause')); + expect(pauseIconDe).toBeTruthy(); + + }) + + it('should switch the button to play when the scheduler is stopped', () => { + expect(component).toBeDefined(); + const getSchedulerReq = httpTestingController.expectOne('/quartz-manager/scheduler'); + const mockScheduler = new Scheduler('test-scheduler', 'test-id', 'RUNNING', []); + getSchedulerReq.flush(mockScheduler); + fixture.detectChanges(); + + const schedulerControlComponentDe: DebugElement = fixture.debugElement; + let schedulerBtnDe = schedulerControlComponentDe.query(By.css('#schedulerControllerBtn')); + expect(schedulerBtnDe).toBeTruthy(); + const pauseIconDe = schedulerBtnDe.query(By.css('.fa-pause')); + expect(pauseIconDe).toBeTruthy(); + + schedulerBtnDe.nativeElement.click(); + const startSchedulerReq = httpTestingController.expectOne('/quartz-manager/scheduler/pause'); + startSchedulerReq.flush(null); + fixture.detectChanges(); + + schedulerBtnDe = schedulerControlComponentDe.query(By.css('#schedulerControllerBtn')); + const playIconDe = schedulerBtnDe.query(By.css('.fa-play')); + expect(playIconDe).toBeTruthy(); + + }) + +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts new file mode 100644 index 000000000..b1d9596ff --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts @@ -0,0 +1,81 @@ +import {Component, OnInit} from '@angular/core'; +import {SchedulerService, UserService} from '../../services'; +import {Scheduler} from '../../model/scheduler.model'; + +@Component({ + selector: 'qrzmng-scheduler-control', + templateUrl: './scheduler-control.component.html', + styleUrls: ['./scheduler-control.component.scss'] +}) +export class SchedulerControlComponent implements OnInit { + + scheduler: Scheduler; + + constructor( + private userService: UserService, + private schedulerService: SchedulerService + ) { + } + + ngOnInit() { + this._getScheduler(); + } + + private _getScheduler() { + this.schedulerService.getScheduler() + .subscribe(resp => this.scheduler = resp); + } + + startScheduler = function () { + this.schedulerService.startScheduler().subscribe((res) => { + this.scheduler.status = 'RUNNING' + }, (res) => { + console.log(JSON.stringify(res)) + }); + }; + + stopScheduler = function () { + this.schedulerService.stopScheduler().subscribe((res) => { + this.scheduler.status = 'STOPPED' + }, (res) => { + console.log(JSON.stringify(res)) + }); + }; + + pauseScheduler = function () { + this.schedulerService.pauseScheduler().subscribe((res) => { + this.scheduler.status = 'PAUSED' + }, (res) => { + console.log(JSON.stringify(res)) + }); + }; + + resumeScheduler = function () { + this.schedulerService.resumeScheduler().subscribe((res) => { + this.scheduler.status = 'RUNNING' + }, (res) => { + console.log(JSON.stringify(res)) + }); + }; + + stop = function () { + if (this.scheduler.status !== 'STOPPED') { + this.stopScheduler(); + } + } + + startOrPause = function () { + switch (this.scheduler.status) { + case 'RUNNING': + this.pauseScheduler(); + break; + case 'PAUSED': + this.resumeScheduler(); + break; + default: + this.startScheduler(); + break; + } + }; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts new file mode 100644 index 000000000..8612d8ba2 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts @@ -0,0 +1,2 @@ +export * from './simple-trigger-config.component'; +export {SimpleTriggerCommand} from '../../model/simple-trigger.command'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html new file mode 100644 index 000000000..a784f6a13 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html @@ -0,0 +1,189 @@ + + + TRIGGER DETAILS + + + +
+ + +  WARNING + Not found any eligible job classes for quartz-manager!
+

Please, make sure you have extended AbstractQuartzManagerJob and set the + app prop quartz-manager.jobClassPackages with the correct java package

+
+
+
+
+ + Trigger Name + + + Name is required + + +
+ +
+ + Job Class + + + {{job}} + + + + Job is required + + +
+ +
+ + Misfire Instruction + + FIRE NOW + RESCHEDULE NOW WITH + EXISTING REPEAT COUNT + + RESCHEDULE NOW WITH + REMAINING REPEAT COUNT + + RESCHEDULE NEXT WITH + REMAINING COUNT + + RESCHEDULE NEXT WITH EXISTING + COUNT + + + + The misfire instruction is required + + +
+
+ +
+ +
+
+ + Start Date (optional) + + + + + +
+ +
+ + End Date (optional) + + + + + + + the end date cannot be before the start date + +
+
+ +
+
+ + Repeat Interval [in mills] + + + repeatCount and repeatInterval must be both set or unset + + +
+
+ + Repeat Count + + + repeatCount and repeatInterval must be both set or unset + + + +
+
+ +
+ +
+
+ +
+
+ +
+
+ +
+
+ +
+
+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss new file mode 100644 index 000000000..2358468bc --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss @@ -0,0 +1,29 @@ +.small{ + font-size: 0.8em; +} + +.full-size-input{ + width: 100%; +} +/* ===== Scrollbar CSS ===== */ +/* Firefox */ +* { + scrollbar-width: auto; + scroll-margin-right: 0; + scrollbar-color: #b8b8b8 #ffffff; +} + +/* Chrome, Edge, and Safari */ +*::-webkit-scrollbar { + width: 12px; +} + +*::-webkit-scrollbar-track { + background: #ffffff; +} + +*::-webkit-scrollbar-thumb { + background-color: #b8b8b8; + border-radius: 10px; + border: 3px solid #ffffff; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts new file mode 100644 index 000000000..1f66f4834 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts @@ -0,0 +1,257 @@ +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; +import {MatCardModule} from '@angular/material/card'; +import {SimpleTriggerConfigComponent} from './simple-trigger-config.component'; +import {ApiService, ConfigService, CONTEXT_PATH, SchedulerService} from '../../services'; +import {HttpClient} from '@angular/common/http'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {DebugElement, NO_ERRORS_SCHEMA} from '@angular/core'; +import {By} from '@angular/platform-browser'; +import {RouterTestingModule} from '@angular/router/testing'; +import {MatIconModule} from '@angular/material/icon'; +import {FormBuilder, FormsModule, ReactiveFormsModule} from '@angular/forms'; +import {MatFormFieldModule} from '@angular/material/form-field'; +import {MatNativeDateModule} from '@angular/material/core'; +import {MatInputModule} from '@angular/material/input'; +import {NoopAnimationsModule} from '@angular/platform-browser/animations'; +import {TriggerKey} from '../../model/triggerKey.model'; +import {Trigger} from '../../model/trigger.model'; +import {JobDetail} from '../../model/jobDetail.model'; +import {SimpleTrigger} from '../../model/simple-trigger.model'; +import JobService from '../../services/job.service'; +import {MatSelectModule} from '@angular/material/select'; +import {MisfireInstruction} from '../../model/misfire-instruction.model'; + +describe('SimpleTriggerConfig', () => { + + let component: SimpleTriggerConfigComponent; + let fixture: ComponentFixture; + + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + beforeEach(waitForAsync( () => { + TestBed.configureTestingModule({ + imports: [FormsModule, MatFormFieldModule, MatFormFieldModule, MatSelectModule, MatInputModule, NoopAnimationsModule, + MatNativeDateModule, ReactiveFormsModule, + MatCardModule, MatIconModule, HttpClientTestingModule, RouterTestingModule], + declarations: [SimpleTriggerConfigComponent], + providers: [SchedulerService, ApiService, ConfigService, JobService, FormBuilder], + schemas: [NO_ERRORS_SCHEMA] + }).compileComponents(); + + httpClient = TestBed.inject(HttpClient); + httpTestingController = TestBed.inject(HttpTestingController); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(SimpleTriggerConfigComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should fetch no triggers at the init', () => { + expect(component).toBeTruthy(); + httpTestingController.expectNone(`${CONTEXT_PATH}/simple-triggers/my-simple-trigger`); + }); + + function setInputValue(componentDe: DebugElement, inputSelector: string, value: string) { + const inputDe = componentDe.query(By.css(inputSelector)); + const inputEl = inputDe.nativeElement; + inputEl.value = value; + inputEl.dispatchEvent(new Event('input')); + fixture.detectChanges(); + } + + function setDropdownValue(componentDe: DebugElement, dropdownSelector: string, value: string) { + const dropdownDe = componentDe.query(By.css(dropdownSelector)); + const dropdownEl = dropdownDe.nativeElement; + dropdownEl.value = value; + dropdownEl.dispatchEvent(new Event('change')); + fixture.detectChanges(); + } + function setDropdownValueByIndex(componentDe: DebugElement, dropdownSelector: string, index: number) { + const dropdownDe = componentDe.query(By.css(dropdownSelector)); + const dropdownEl = dropdownDe.nativeElement; + dropdownEl.value = dropdownEl.options[index].value; + dropdownEl.dispatchEvent(new Event('change')); + fixture.detectChanges(); + } + + async function setMatSelectValueByIndex(componentDe: DebugElement, dropdownSelector: string, index: number) { + const dropdownDe = componentDe.query(By.css(dropdownSelector)); + dropdownDe.nativeElement.click(); + fixture.detectChanges(); + const matOptionDe = componentDe.query(By.css('.mat-select-panel')).queryAll(By.css('.mat-option')); + matOptionDe[index].nativeElement.click(); + fixture.detectChanges(); + } + + function openFormAndFillAllMandatoryFields() { + component.openTriggerForm(); + fixture.detectChanges(); + + const getJobsReq = httpTestingController.expectOne(`${CONTEXT_PATH}/jobs`); + getJobsReq.flush(['TestJob']); + + const componentDe: DebugElement = fixture.debugElement; + + const submitButton = componentDe.query(By.css('form button[color="primary"]')); + expect(submitButton.nativeElement.textContent.trim()).toEqual('Submit'); + expect(submitButton.nativeElement.getAttribute('disabled')).toEqual(''); + + setInputValue(componentDe, '#triggerName', 'test-trigger'); + expect(component.simpleTriggerReactiveForm.controls.triggerName.value).toEqual('test-trigger'); + expect(submitButton.nativeElement.getAttribute('disabled')).toEqual(''); + setMatSelectValueByIndex(componentDe, '#misfireInstruction', 0); + expect(component.simpleTriggerReactiveForm.controls.misfireInstruction.value).toEqual('MISFIRE_INSTRUCTION_FIRE_NOW'); + expect(submitButton.nativeElement.getAttribute('disabled')).toEqual(''); + setMatSelectValueByIndex(componentDe, '#jobClass', 0); + expect(submitButton.nativeElement.getAttribute('disabled')).toEqual(null); + + setInputValue(componentDe, '#repeatCount', '1000'); + expect(submitButton.nativeElement.getAttribute('disabled')).toEqual(''); + + setInputValue(componentDe, '#repeatInterval', '2000'); + expect(submitButton.nativeElement.getAttribute('disabled')).toEqual(null); + } + + it('should enabled the submit only when the form is valid', () => { + openFormAndFillAllMandatoryFields(); + }); + + it('should emit an event when a new trigger is submitted', () => { + const componentDe: DebugElement = fixture.debugElement; + const mockTrigger = new Trigger(); + mockTrigger.triggerKeyDTO = new TriggerKey('test-trigger', null); + mockTrigger.jobDetailDTO = {jobClassName: 'TestJob', description: null}; + mockTrigger.misfireInstruction = MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW; + + openFormAndFillAllMandatoryFields(); + + setInputValue(componentDe, '#repeatInterval', '2000'); + expect(component.simpleTriggerReactiveForm.controls.triggerRecurrence.value.repeatInterval).toEqual(2000); + setInputValue(componentDe, '#repeatCount', '100'); + expect(component.simpleTriggerReactiveForm.controls.triggerRecurrence.value.repeatCount).toEqual(100); + + const submitButton = componentDe.query(By.css('form button[color="primary"]')); + expect(submitButton.nativeElement.textContent.trim()).toEqual('Submit'); + + let actualNewTrigger; + component.onNewTrigger.subscribe(simpleTrigger => actualNewTrigger = simpleTrigger); + + submitButton.nativeElement.click(); + + const postSimpleTriggerReq = httpTestingController.expectOne(`${CONTEXT_PATH}/simple-triggers/test-trigger`); + postSimpleTriggerReq.flush(mockTrigger); + + expect(actualNewTrigger).toEqual(mockTrigger); + }); + + it('should not emit an event when an existing trigger is edited', () => { + const mockTriggerKey = new TriggerKey('test-trigger', null); + component.triggerKey = mockTriggerKey; + fixture.detectChanges(); + + const mockTrigger = new SimpleTrigger(); + mockTrigger.triggerKeyDTO = new TriggerKey('test-trigger', null); + mockTrigger.jobDetailDTO = {jobClassName: 'TestJob', description: null}; + mockTrigger.mayFireAgain = true; + mockTrigger.misfireInstruction = MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW; + const getSimpleTriggerReq = httpTestingController.expectOne(`${CONTEXT_PATH}/simple-triggers/test-trigger`); + getSimpleTriggerReq.flush(mockTrigger); + + component.simpleTriggerReactiveForm.setValue({ + triggerName: 'test-trigger', + jobClass: 'TestJob', + triggerRecurrence: { + repeatInterval: 2000, + repeatCount: 100, + }, + triggerPeriod: { + startDate: null, + endDate: null + }, + misfireInstruction: MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW.toString() + }); + + component.openTriggerForm(); + fixture.detectChanges(); + + const componentDe: DebugElement = fixture.debugElement; + setInputValue(componentDe, '#repeatInterval', '4000'); + expect(component.simpleTriggerReactiveForm.controls.triggerRecurrence.value.repeatInterval).toEqual(4000); + + const submitButton = componentDe.query(By.css('form button[color="primary"]')); + expect(submitButton.nativeElement.textContent.trim()).toEqual('Submit'); + + let actualNewTrigger; + component.onNewTrigger.subscribe(simpleTrigger => actualNewTrigger = simpleTrigger); + + submitButton.nativeElement.click(); + + const putSimpleTriggerReq = httpTestingController.expectOne(`${CONTEXT_PATH}/simple-triggers/test-trigger`); + putSimpleTriggerReq.flush(mockTrigger); + + expect(actualNewTrigger).toBeUndefined(); + }); + + it('should fetch and display the trigger when the triggerKey is passed as input', () => { + const mockTriggerKey = new TriggerKey('my-simple-trigger', null); + component.triggerKey = mockTriggerKey; + + component.trigger = new SimpleTrigger(); + component.trigger.triggerKeyDTO = mockTriggerKey; + + fixture.detectChanges(); + + const mockTrigger = new Trigger(); + mockTrigger.triggerKeyDTO = mockTriggerKey; + mockTrigger.jobDetailDTO = {jobClassName: 'TestJob', description: null}; + const getSimpleTriggerReq = httpTestingController.expectOne(`${CONTEXT_PATH}/simple-triggers/my-simple-trigger`); + getSimpleTriggerReq.flush(mockTrigger); + + const componentDe: DebugElement = fixture.debugElement; + const submitButton = componentDe.query(By.css('form button')); + expect(submitButton.nativeElement.textContent.trim()).toEqual('Reschedule'); + }); + + it('should display the form if the openTriggerForm method is called', () => { + component.openTriggerForm(); + fixture.detectChanges(); + + const componentDe: DebugElement = fixture.debugElement; + const submitButton = componentDe.query(By.css('form button[color="primary"]')); + expect(submitButton.nativeElement.textContent.trim()).toEqual('Submit'); + }); + + it('should display the warning if there are no eligible jobs', () => { + fixture.detectChanges(); + const getJobsReq = httpTestingController.expectOne(`${CONTEXT_PATH}/jobs`); + getJobsReq.flush([]); + fixture.detectChanges(); + + component.openTriggerForm(); + fixture.detectChanges(); + + const componentDe: DebugElement = fixture.debugElement; + const warningCard = componentDe.query(By.css('#noEligibleJobsAlert')); + expect(warningCard).toBeTruthy(); + }); + + it('should not display the warning if there are eligible jobs', () => { + fixture.detectChanges(); + const getJobsReq = httpTestingController.expectOne(`${CONTEXT_PATH}/jobs`); + getJobsReq.flush(['sampleJob']); + fixture.detectChanges(); + + component.openTriggerForm(); + fixture.detectChanges(); + + const componentDe: DebugElement = fixture.debugElement; + const warningCard = componentDe.query(By.css('#noEligibleJobsAlert')); + expect(warningCard).toBeFalsy(); + }); + + + +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts new file mode 100644 index 000000000..1b643aed6 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts @@ -0,0 +1,195 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; +import {SchedulerService} from '../../services'; +import {Scheduler} from '../../model/scheduler.model'; +import {SimpleTriggerCommand} from '../../model/simple-trigger.command'; +import {SimpleTrigger} from '../../model/simple-trigger.model'; +import * as moment from 'moment'; +import {TriggerKey} from '../../model/triggerKey.model'; +import JobService from '../../services/job.service'; +import {MisfireInstruction, MisfireInstructionCaption} from '../../model/misfire-instruction.model'; +import {AbstractControl, UntypedFormBuilder, UntypedFormGroup, ValidationErrors, Validators} from '@angular/forms'; + +@Component({ + selector: 'qrzmng-simple-trigger-config', + templateUrl: './simple-trigger-config.component.html', + styleUrls: ['./simple-trigger-config.component.scss'] +}) +export class SimpleTriggerConfigComponent implements OnInit { + + trigger: SimpleTrigger = null; + + simpleTriggerReactiveForm: UntypedFormGroup = this.formBuilder.group({ + triggerName: [this.trigger?.triggerKeyDTO.name, Validators.required], + jobClass: [this.trigger?.jobDetailDTO.jobClassName, Validators.required], + triggerPeriod: this.formBuilder.group({ + startDate: [this.trigger?.startTime && moment(this.trigger?.startTime)], + endDate: [this.trigger?.endTime && moment(this.trigger?.endTime)] + }, {validators: this._triggerPeriodValidator}), + triggerRecurrence: this.formBuilder.group({ + repeatCount: [this.trigger?.repeatCount], + repeatInterval: [this.trigger?.repeatInterval] + }, {validators: this._triggerRepetitionValidator}), + misfireInstruction: [MisfireInstruction[this.trigger?.misfireInstruction], Validators.required] + }); + + scheduler: Scheduler; + + triggerLoading = true; + + private fetchedTriggers = false; + private triggerInProgress = false; + + private selectedTriggerKey: TriggerKey; + + private jobs: Array; + + enabledTriggerForm = false; + + @Output() + onNewTrigger = new EventEmitter(); + + constructor( + private formBuilder: UntypedFormBuilder, + private schedulerService: SchedulerService, + private jobService: JobService + ) { + } + + ngOnInit() { + this.fetchJobs(); + } + + private fetchJobs() { + this.jobService.fetchJobs().subscribe(jobs => this.jobs = jobs); + } + + openTriggerForm() { + this.enabledTriggerForm = true; + } + + private closeTriggerForm() { + this.enabledTriggerForm = false; + } + + @Input() + set triggerKey(triggerKey: TriggerKey) { + this.selectedTriggerKey = {...triggerKey} as TriggerKey; + this.fetchSelectedTrigger(); + } + + + fetchSelectedTrigger = () => { + this.triggerLoading = true; + this.schedulerService.getSimpleTriggerConfig(this.selectedTriggerKey.name) + .subscribe((retTrigger: SimpleTrigger) => { + this.trigger = retTrigger; + this.simpleTriggerReactiveForm.setValue(this._fromTriggerToReactiveForm(retTrigger)) + this.triggerLoading = false; + this.triggerInProgress = this.trigger.mayFireAgain; + }) + } + + shouldShowTheTriggerCardContent = (): boolean => this.trigger !== null || this.enabledTriggerForm; + + existsATriggerInProgress = (): boolean => this.trigger && this.triggerInProgress; + + onResetReactiveForm = () => { + this.simpleTriggerReactiveForm.setValue(this._fromTriggerToReactiveForm(this.trigger)); + this.closeTriggerForm(); + }; + + onSubmitTriggerConfig = () => { + const schedulerServiceCall = this.existsATriggerInProgress() ? + this.schedulerService.updateSimpleTriggerConfig : this.schedulerService.saveSimpleTriggerConfig; + + const simpleTriggerCommand = this._fromReactiveFormToCommand(); + schedulerServiceCall(simpleTriggerCommand) + .subscribe((retTrigger: SimpleTrigger) => { + this.trigger = retTrigger; + + this.simpleTriggerReactiveForm.setValue(this._fromTriggerToReactiveForm(retTrigger)); + + this.fetchedTriggers = true; + this.triggerInProgress = this.trigger.mayFireAgain; + + if (schedulerServiceCall === this.schedulerService.saveSimpleTriggerConfig) { + this.onNewTrigger.emit(retTrigger); + } + + this.closeTriggerForm(); + }, error => { + this.simpleTriggerReactiveForm.setValue(this._fromTriggerToReactiveForm(this.trigger)); + }); + + } + + private _triggerPeriodValidator(control: AbstractControl): ValidationErrors | null { + const startDate = control.get('startDate'); + const endDate = control.get('endDate'); + if (startDate.value && endDate.value) { + return endDate.value.isBefore(startDate.value) ? + {invalidTriggerPeriod: true} : null; + } + return null; + } + + private _triggerRepetitionValidator(control: AbstractControl): ValidationErrors | null { + const repeatInterval = control.get('repeatInterval'); + const repeatCount = control.get('repeatCount'); + if ((repeatCount.value && repeatInterval.value) || (!repeatCount.value && !repeatInterval.value)) { + repeatInterval.setErrors(null); + repeatCount.setErrors(null); + return null; + } + const errors = {invalidTriggerRecurrence: true}; + repeatInterval.setErrors(errors); + repeatCount.setErrors(errors); + return errors; + } + + private _fromTriggerToReactiveForm = (simpleTrigger: SimpleTrigger): SimpleTriggerReactiveForm => { + const simpleTriggerReactiveForm = new SimpleTriggerReactiveForm(); + simpleTriggerReactiveForm.triggerName = simpleTrigger.triggerKeyDTO.name; + simpleTriggerReactiveForm.jobClass = simpleTrigger.jobDetailDTO.jobClassName; + simpleTriggerReactiveForm.triggerRecurrence.repeatCount = simpleTrigger.repeatCount || null; + simpleTriggerReactiveForm.triggerRecurrence.repeatInterval = simpleTrigger.repeatInterval || null; + simpleTriggerReactiveForm.triggerPeriod.startDate = (simpleTrigger.startTime && moment(simpleTrigger.startTime)) || null; + simpleTriggerReactiveForm.triggerPeriod.endDate = (simpleTrigger.endTime && moment(simpleTrigger.endTime)) || null; + simpleTriggerReactiveForm.misfireInstruction = (simpleTrigger.misfireInstruction + && MisfireInstruction[simpleTrigger.misfireInstruction]) || null; + return simpleTriggerReactiveForm; + }; + + private _fromReactiveFormToCommand = (): SimpleTriggerCommand => { + const reactiveFormValue = this.simpleTriggerReactiveForm.value; + const simpleTriggerCommand = new SimpleTriggerCommand(); + simpleTriggerCommand.triggerName = reactiveFormValue.triggerName; + simpleTriggerCommand.jobClass = reactiveFormValue.jobClass; + simpleTriggerCommand.repeatCount = reactiveFormValue.triggerRecurrence.repeatCount; + simpleTriggerCommand.repeatInterval = reactiveFormValue.triggerRecurrence.repeatInterval; + simpleTriggerCommand.startDate = reactiveFormValue.triggerPeriod.startDate?.toDate(); + simpleTriggerCommand.endDate = reactiveFormValue.triggerPeriod.endDate?.toDate(); + simpleTriggerCommand.misfireInstruction = reactiveFormValue.misfireInstruction; + return simpleTriggerCommand; + } + + getMisfireInstructionCaption(): string { + const misfireInstructionKey = this.simpleTriggerReactiveForm.controls + .misfireInstruction.value as unknown as keyof typeof MisfireInstruction; + return MisfireInstructionCaption.get(MisfireInstruction[misfireInstructionKey]); + } +} + +class SimpleTriggerReactiveForm { + triggerName: string; + jobClass: string; + triggerPeriod: { + startDate?; + endDate?; + } = {}; + triggerRecurrence: { + repeatCount?: number; + repeatInterval?: number; + } = {}; + misfireInstruction: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts new file mode 100644 index 000000000..2dadc65b9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts @@ -0,0 +1 @@ +export * from './trigger-list.component' diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html new file mode 100644 index 000000000..88677ddb5 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html @@ -0,0 +1,17 @@ + + + TRIGGERS + + + + + + + {{ triggerKey.name }} + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss new file mode 100644 index 000000000..ccfdc3d2f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss @@ -0,0 +1,25 @@ +/* ===== Scrollbar CSS ===== */ +/* Firefox */ +* { + scrollbar-width: auto; + scrollbar-color: #b8b8b8 #ffffff; +} + +/* Chrome, Edge, and Safari */ +*::-webkit-scrollbar { + width: 16px; +} + +*::-webkit-scrollbar-track { + background: #ffffff; +} + +*::-webkit-scrollbar-thumb { + background-color: #b8b8b8; + border-radius: 10px; + border: 3px solid #ffffff; +} + +.selectedTrigger{ + background-color: #dddddd; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts new file mode 100644 index 000000000..ca9caff2f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts @@ -0,0 +1,86 @@ +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; +import {ApiService, ConfigService, CONTEXT_PATH, TriggerService} from '../../services'; +import {HttpClient} from '@angular/common/http'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {RouterTestingModule} from '@angular/router/testing'; +import {DebugElement} from '@angular/core'; +import {By} from '@angular/platform-browser'; +import {MatCardModule} from '@angular/material/card'; +import {MatIconModule} from '@angular/material/icon'; +import {MatDividerModule} from '@angular/material/divider'; +import {TriggerListComponent} from './trigger-list.component'; +import {MatListModule} from '@angular/material/list'; +import {TriggerKey} from '../../model/triggerKey.model'; +import {MatDialogModule} from '@angular/material/dialog'; + +describe('TriggerListComponent', () => { + + let component: TriggerListComponent; + let fixture: ComponentFixture; + + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + imports: [MatCardModule, MatDialogModule, MatDividerModule, + MatIconModule, MatListModule, HttpClientTestingModule, RouterTestingModule], + declarations: [TriggerListComponent], + providers: [TriggerService, ApiService, ConfigService] + }).compileComponents(); + + httpClient = TestBed.inject(HttpClient); + httpTestingController = TestBed.inject(HttpTestingController); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(TriggerListComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should select the first trigger of the list', () => { + expect(component).toBeDefined(); + + let actualSelectedTrigger: TriggerKey; + component.onSelectedTrigger.subscribe(selectedTrigger => actualSelectedTrigger = selectedTrigger); + + const getTriggerListReq = httpTestingController.expectOne(`${CONTEXT_PATH}/triggers`); + const mockExistingTriggers = new Array(); + const firstTriggerKey = new TriggerKey('trigger1', 'group1'); + mockExistingTriggers.push(firstTriggerKey); + const secondTriggerKey = new TriggerKey('trigger2', 'group2'); + mockExistingTriggers.push(secondTriggerKey); + getTriggerListReq.flush(mockExistingTriggers); + fixture.detectChanges(); + + const triggerListComponentDe: DebugElement = fixture.debugElement; + const triggerItemList = triggerListComponentDe.queryAll(By.css('.triggerItemList')); + expect(triggerItemList.length).toEqual(2); + + expect(actualSelectedTrigger).toEqual(firstTriggerKey); + + }); + + it('should open the trigger form if the trigger list is empty', () => { + expect(component).toBeDefined(); + + let actualSelectedTrigger: TriggerKey; + component.onSelectedTrigger.subscribe(selectedTrigger => actualSelectedTrigger = selectedTrigger); + + let expectedOpenedNewTriggerFormEvent: boolean; + component.onNewTriggerClicked.subscribe(() => expectedOpenedNewTriggerFormEvent = true); + + const getTriggerListReq = httpTestingController.expectOne(`${CONTEXT_PATH}/triggers`); + getTriggerListReq.flush(new Array()); + fixture.detectChanges(); + + const triggerListComponentDe: DebugElement = fixture.debugElement; + const triggerItemList = triggerListComponentDe.queryAll(By.css('.triggerItemList')); + expect(triggerItemList.length).toEqual(0); + + expect(expectedOpenedNewTriggerFormEvent).toBeTruthy(); + expect(actualSelectedTrigger).toBeUndefined(); + }); + +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts new file mode 100644 index 000000000..9e98f910b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts @@ -0,0 +1,97 @@ +import {Component, EventEmitter, Input, OnInit, Output} from '@angular/core'; +import {TriggerService} from '../../services/trigger.service'; +import {TriggerKey} from '../../model/triggerKey.model'; +import {SimpleTrigger} from '../../model/simple-trigger.model'; +import {MatDialog, MatDialogRef} from '@angular/material/dialog'; + +@Component({ + template: ` +

Coming Soon

+
+

This feature is in roadmap and it will come with the next releases

+
+
+ +
`, +}) +// tslint:disable-next-line:component-class-suffix +export class UnsupportedMultipleJobsDialog { + constructor(public dialogRef: MatDialogRef) { + } + closeDialog(): void { + this.dialogRef.close(); + } +} + +@Component({ + selector: 'qrzmng-trigger-list', + templateUrl: './trigger-list.component.html', + styleUrls: ['./trigger-list.component.scss'] +}) +export class TriggerListComponent implements OnInit { + + newTriggers: Array = new Array(); + + loading = true; + + triggerKeys: Array = new Array(); + + @Output() onNewTriggerClicked = new EventEmitter(); + triggerFormIsOpen = false; + + selectedTrigger: TriggerKey; + @Output() onSelectedTrigger = new EventEmitter(); + + constructor( + private triggerService: TriggerService, + public dialog: MatDialog + ) { + } + + ngOnInit() { + this.loading = true; + this.fetchTriggers(); + } + + @Input() + set openedNewTriggerForm(triggerFormIsOpen: boolean) { + this.triggerFormIsOpen = triggerFormIsOpen; + } + + getTriggerKeyList = () => { + const newTriggerKeys = this.newTriggers.map(simpleTrigger => simpleTrigger.triggerKeyDTO); + return newTriggerKeys.concat(this.triggerKeys); + } + + private fetchTriggers() { + this.triggerService.fetchTriggers() + .subscribe((triggerKeys: Array) => { + this.triggerKeys = triggerKeys; + if (!triggerKeys || triggerKeys.length === 0) { + this.onNewTriggerBtnClicked(); + } else { + this.selectTrigger(this.triggerKeys[0]); + } + }) + } + + selectTrigger(triggerKey: TriggerKey) { + this.selectedTrigger = triggerKey; + this.onSelectedTrigger.emit(triggerKey); + } + + onNewTriggerBtnClicked() { + if (this.getTriggerKeyList() && this.getTriggerKeyList().length > 0) { + this.dialog.open(UnsupportedMultipleJobsDialog) + } else { + this.onNewTriggerClicked.emit(); + } + } + + onNewTrigger(newTrigger: SimpleTrigger) { + this.newTriggers = [newTrigger, ...this.newTriggers]; + this.selectedTrigger = newTrigger.triggerKeyDTO; + } +} + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts new file mode 100644 index 000000000..a6027312d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts @@ -0,0 +1,31 @@ +import {Injectable} from '@angular/core'; +import {Router, CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot} from '@angular/router'; +import {UserService} from '../services'; +import {Observable} from 'rxjs'; + +@Injectable() +export class AdminGuard implements CanActivate { + constructor(private router: Router, private userService: UserService) { + } + + canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean { + if (this.userService.isAnAnonymousUser) { + return true; + } + if (this.userService.currentUser) { + return true; + // to be enable again in the scope of the card #65 + // if (JSON.stringify(this.userService.currentUser.authorities).search('ROLE_ADMIN') !== -1) { + // return true; + // } else { + // this.router.navigate(['/403']); + // return false; + // } + } else { + console.log('NOT AN ADMIN ROLE'); + this.router.navigate(['/login'], {queryParams: {returnUrl: state.url}}); + return false; + } + } +} + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts new file mode 100644 index 000000000..a85d20ead --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate } from '@angular/router'; +import { UserService } from '../services'; +import { Observable } from 'rxjs'; + +@Injectable() +export class GuestGuard implements CanActivate { + + constructor(private router: Router, private userService: UserService) {} + + canActivate(): boolean { + if (this.userService.currentUser) { + this.router.navigate(['/']); + return false; + } else { + return true; + } + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts new file mode 100644 index 000000000..617f1eabe --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts @@ -0,0 +1,4 @@ +export * from './login.guard'; +export * from './guest.guard'; +export * from './admin.guard'; + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts new file mode 100644 index 000000000..153fb4d05 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import { Router, CanActivate } from '@angular/router'; +import { UserService } from '../services'; +import { Observable } from 'rxjs'; + +@Injectable() +export class LoginGuard implements CanActivate { + + constructor(private router: Router, private userService: UserService) {} + + canActivate(): boolean { + if (this.userService.currentUser) { + return true; + } else { + this.router.navigate(['/']); + return false; + } + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts new file mode 100644 index 000000000..37947cb74 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts @@ -0,0 +1,7 @@ +import SockJS from 'sockjs-client'; +import Stomp from 'stompjs'; + +export class SocketEndpoint { + client: SockJS; + stomp: Stomp; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts new file mode 100644 index 000000000..a5ca5d6df --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts @@ -0,0 +1,20 @@ +export class SocketOption { + socketUrl: string; + topicName: string; + brokerName: string; + reconnectionTimeout = 30000 + + getAccessToken: Function = () => null; + + constructor(socketUrl: string, + topicName: string, + getAccessToken?: Function, + brokerName: string = null, + reconnectionTimeout: number = 30000) { + this.socketUrl = socketUrl; + this.topicName = topicName; + this.brokerName = brokerName; + this.reconnectionTimeout = reconnectionTimeout; + this.getAccessToken = getAccessToken || (() => null); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts new file mode 100644 index 000000000..2fd533f18 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts @@ -0,0 +1,4 @@ +export class JobDetail { + jobClassName: string; + description: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts new file mode 100644 index 000000000..afc7171d8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts @@ -0,0 +1,4 @@ +export class JobKeyModel { + name: string; + group: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts new file mode 100644 index 000000000..507b8c13e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts @@ -0,0 +1,56 @@ +export enum MisfireInstruction { + MISFIRE_INSTRUCTION_FIRE_NOW = 1, + MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT = 2, + MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT = 3 , + MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT = 4, + MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT = 5 +} + +export function getMisfireInstructionByIndex(index: number) { + return Object.keys(MisfireInstruction)[index]; +} + +// function enumFromStringValue (enm: { [s: string]: T}, value: string): T | undefined { +// return (Object.values(enm) as unknown as string[]).includes(value) +// ? value as unknown as T +// : undefined; +// } +// +// export function parseMisfireInstruction(str: string): MisfireInstruction { +// return enumFromStringValue(MisfireInstruction, str); +// // return (MisfireInstruction)[str] +// // const indexOfStr = Object.values(MisfireInstruction).indexOf(str as unknown as MisfireInstruction); +// // const key = Object.keys(Sizes)[indexOfStr]; +// // return MisfireInstruction[k] +// // return Object.values(MisfireInstruction).find(val => val === str); +// } + +export const MisfireInstructionCaption = new Map([ + [MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW, + `The job is executed immediately after the scheduler discovers misfire situation.
+ In case of the trigger has been set with a repeat count, this policy is equals to RESCHEDULE NOW WITH REMAINING REPEAT COUNT` + ], + [MisfireInstruction.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT, + `First misfired trigger is executed immediately. Then the scheduler waits desired interval and executes all remaining triggers.
+ Effectively the first fire time of the misfired trigger is moved to current time with no other changes.` + ], + [MisfireInstruction.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT, + `First misfired execution runs immediately. Remaining misfired executions are discarded. Remaining not-yet-fired triggers are executed + with desired interval, starting from the recovered misfired execution.
+ Use this policy if your constraint is to honor the end date time.
+ Warning The actual number of job executions could be less than initially set, + because some of the misfired triggers are ignored. The end date time you set is always ` + ], + [MisfireInstruction.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT, + `In case of misfire event, the scheduler won't do anything immediately. Instead it will wait for next scheduled time the trigger and + run all triggers with scheduled interval. Misfired trigger are simply post-poned but not ignored.
+ Use this policy if your constraint is to execute the job for the all times equals to the repeation counter.
' + + 'Warning The scheduler can completed over the end date time you set `], + [MisfireInstruction.MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT, + `In case of misfire event, the trigger is re-scheduled to the next scheduled time after 'now' + with the repeat count set to what it would be if it had not missed any firings.
+ Use this policy if no jobs must run after the end date time.
+ Warning The actual number of job executions could be less than initially set, because the misfired trigger are ignored.
+ This policy could cause the Trigger to go directly to the 'COMPLETE' state if all fire-times where missed.` + ] +]); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts new file mode 100644 index 000000000..e7df13a11 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts @@ -0,0 +1,15 @@ +import {TriggerKey} from './triggerKey.model'; + +export class Scheduler { + name: string; + instanceId: string; + status: string; + triggerKeys: TriggerKey[]; + + constructor(name: string, instanceId: string, status: string, triggerKeys: TriggerKey[]) { + this.name = name; + this.status = status; + this.instanceId = instanceId; + this.triggerKeys = triggerKeys; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts new file mode 100644 index 000000000..8df39d435 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts @@ -0,0 +1,9 @@ +export class SimpleTriggerCommand { + triggerName: string; + jobClass: string; + startDate: Date; + endDate: Date; + repeatCount: number; + repeatInterval: number; + misfireInstruction: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts new file mode 100644 index 000000000..a7156ea1f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts @@ -0,0 +1,11 @@ +import {Moment} from 'moment/moment'; + +export class SimpleTriggerForm { + triggerName: string; + jobClass: string; + startDate: Moment; + endDate: Moment; + repeatCount: number; + repeatInterval: number; + misfireInstruction: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts new file mode 100644 index 000000000..d5e2537b3 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts @@ -0,0 +1,7 @@ +import {Trigger} from './trigger.model'; + +export class SimpleTrigger extends Trigger { + repeatCount: number; + repeatInterval: number; + timesTriggered: number; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts new file mode 100644 index 000000000..85a82d54c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts @@ -0,0 +1,10 @@ +export default class TriggerFiredBundle { + timesTriggered: number; + repeatCount: number; + finalFireTime: string; + nextFireTime: string; + previousFireTime: string; + jobKey: string; + jobClass: string; + percentage: number; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts new file mode 100644 index 000000000..8d4db4b69 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts @@ -0,0 +1,17 @@ +import {TriggerKey} from './triggerKey.model'; +import {JobKeyModel} from './jobKey.model'; +import {JobDetail} from './jobDetail.model'; + +export class Trigger { + triggerKeyDTO: TriggerKey = new TriggerKey(); + priority: number; + startTime: Date; + description: string; + endTime: Date; + finalFireTime: Date; + misfireInstruction: number; + nextFireTime: Date; + jobKeyDTO: JobKeyModel; + jobDetailDTO: JobDetail = new JobDetail(); + mayFireAgain: boolean; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts new file mode 100644 index 000000000..666b18b13 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts @@ -0,0 +1,9 @@ +export class TriggerKey { + name: string; + group: string; + + constructor(name?: string, group?: string) { + this.name = name; + this.group = group; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts new file mode 100644 index 000000000..622efa015 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts @@ -0,0 +1,74 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following to support `@angular/animation`. */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; +import 'core-js/es7/reflect'; + + + +/** ALL Firefox browsers require the following to support `@angular/animation`. **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. + +/*************************************************************************************************** + * MATERIAL 2 + */ +import 'hammerjs/hammer'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts new file mode 100644 index 000000000..487889525 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts @@ -0,0 +1,83 @@ +import {TestBed} from '@angular/core/testing'; +import {HttpClientTestingModule, HttpTestingController} from '@angular/common/http/testing'; +import {ApiService} from './api.service'; +import {HttpClient, HttpHeaders} from '@angular/common/http'; +import {Router} from '@angular/router'; +import {jest} from '@jest/globals' + +class Data { + name: string +} + +class HttpResponseMock { + constructor( + public body: unknown, + public opts?: { + headers?: + | HttpHeaders + | { + [name: string]: string | string[]; + }; + status?: number; + statusText?: string; + } + ) { + } +} + +const routerSpy = jest.spyOn(Router.prototype, 'navigateByUrl'); + +describe('ApiServiceTest', () => { + + let apiService: ApiService; + let httpClient: HttpClient; + let httpTestingController: HttpTestingController; + + const SAMPLE_URL = '/sample-url'; + const URL_401 = '/url-response-401'; + const testData: Data = {name: 'Test Data'}; + + beforeEach(() => { + + TestBed.configureTestingModule({ + imports: [HttpClientTestingModule], + providers: [ApiService, {provide: Router, useValue: routerSpy}] + }); + apiService = TestBed.inject(ApiService); + + httpClient = TestBed.inject(HttpClient); + httpTestingController = TestBed.inject(HttpTestingController); + }); + + it('should be created', (): void => { + expect(apiService).toBeTruthy(); + }); + + it('can test HttpClient.get', (): void => { + + apiService.get(SAMPLE_URL).subscribe((res: Data) => { + expect(res).toEqual(testData); + }); + + const req = httpTestingController.expectOne(SAMPLE_URL) + expect(req.request.method).toEqual('GET'); + req.flush(new HttpResponseMock(testData)); + httpTestingController.verify(); + }); + + it('doesn\'t do anything if 401 is received', (): void => { + + apiService.get(URL_401).subscribe((res: Data) => { + expect(false); + }, (error) => { + expect(error.status).toBe(401); + expect(routerSpy).toHaveBeenCalledTimes(1); + }); + + const req = httpTestingController.expectOne(URL_401) + expect(req.request.method).toEqual('GET'); + req.flush(null, {status: 401, statusText: 'unauthenticated'}); + httpTestingController.verify(); + }); + +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts new file mode 100644 index 000000000..5c81ed58c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts @@ -0,0 +1,108 @@ +import {HttpClient, HttpHeaders, HttpResponse, HttpRequest, HttpEventType, HttpParams} from '@angular/common/http'; +import {Router} from '@angular/router'; +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {catchError, map, filter, tap} from 'rxjs/operators' +import {serialize} from '../shared/utilities/serialize'; + +export enum RequestMethod { + Get = 'GET', + Head = 'HEAD', + Post = 'POST', + Put = 'PUT', + Delete = 'DELETE', + Options = 'OPTIONS', + Patch = 'PATCH' +} + +@Injectable() +export class ApiService { + + headers = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/json' + }); + + private jwtToken: string; + + private static extractTokenFromHttpResponse(res: HttpResponse): string { + let authorization: string = null; + const headers: HttpHeaders = res.headers; + if (headers && headers.has('Authorization')) { + authorization = headers.get('Authorization'); + if (authorization.startsWith('Bearer ')) { + authorization = authorization.substring(7); + } + } + return authorization; + } + + constructor(private http: HttpClient, private router: Router) { + } + + setToken(token: string) { + this.jwtToken = token; + } + + getToken = () => this.jwtToken; + + get(path: string, args?: any): Observable { + const options = { + headers: this.headers, + withCredentials: true + }; + + if (args) { + options['params'] = serialize(args); + } + + return this.http.get(path, options) + .pipe(catchError(this.checkError.bind(this))); + } + + post(path: string, body: any, customHeaders?: HttpHeaders): Observable { + return this.request(path, body, RequestMethod.Post, customHeaders); + } + + put(path: string, body: any): Observable { + return this.request(path, body, RequestMethod.Put); + } + + delete(path: string, body?: any): Observable { + return this.request(path, body, RequestMethod.Delete); + } + + private request(path: string, body: any, method = RequestMethod.Post, customHeaders?: HttpHeaders): Observable { + const options = { + headers: customHeaders || this.headers, + withCredentials: true + } + + const req = new HttpRequest(method, path, body, options); + + return this.http.request(req) + .pipe( + filter(response => response instanceof HttpResponse), + tap((resp: HttpResponse) => { + const jwtToken = ApiService.extractTokenFromHttpResponse(resp); + if (jwtToken) { + this.setToken(jwtToken); + } + }), + map((response: HttpResponse) => response.body), + catchError(error => this.checkError(error)) + ) + } + + // Display error if logged in, otherwise redirect to IDP + private checkError(error: any): any { + if (error && error.status === 401) { + this.router.navigate(['/login']); + } else { + // this.displayError(error); + } + throw error; + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts new file mode 100644 index 000000000..9cfd246c0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts @@ -0,0 +1,41 @@ +import {Injectable} from '@angular/core'; +import {HttpHeaders, HttpResponse} from '@angular/common/http'; +import {ApiService} from './api.service'; +import {UserService} from './user.service'; +import {ConfigService} from './config.service'; +import {map} from 'rxjs/operators'; + +@Injectable() +export class AuthService { + + constructor( + private apiService: ApiService, + private userService: UserService, + private config: ConfigService, + ) { + } + + login(user) { + const loginHeaders = new HttpHeaders({ + 'Accept': 'application/json', + 'Content-Type': 'application/x-www-form-urlencoded' + }); + const body = `username=${user.username}&password=${user.password}`; + return this.apiService.post(this.config.login_url, body, loginHeaders) + .pipe( + map(() => { + console.log('Login success'); + this.userService.getUserInfo().subscribe(); + }) + ); + } + + logout() { + return this.apiService.post(this.config.logout_url, {}) + .pipe(map(() => { + this.apiService.setToken(null); + this.userService.currentUser = null; + })); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts new file mode 100644 index 000000000..177ddd62c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts @@ -0,0 +1,57 @@ +import {Injectable} from '@angular/core'; +import {environment} from '../../environments/environment'; + + +const WEBJAR_PATH = '/quartz-manager-ui/'; + +export const CONTEXT_PATH = '/quartz-manager'; + +export function getHtmlBaseUrl() { + const baseUrl = getBaseUrl() || '/'; + return environment.production ? getBaseUrl() + WEBJAR_PATH : '/'; +} + +export function getBaseUrl() { + if (environment.production) { + let contextPath: string = window.location.pathname.split('/')[1] || ''; + if (contextPath && ('/' + contextPath + '/') === WEBJAR_PATH) { + return ''; + } + if (contextPath) { + contextPath = '/' + contextPath; + } + return contextPath; + } + return ''; +} + +@Injectable() +export class ConfigService { + + private _auth_url = getBaseUrl() + `${CONTEXT_PATH}/auth` + + private _refresh_token_url = this._auth_url + '/refresh'; + + private _login_url = this._auth_url + '/login'; + + private _logout_url = this._auth_url + '/logout'; + + private _whoami_url = this._auth_url + '/whoami'; + + get refresh_token_url(): string { + return this._refresh_token_url; + } + + get whoami_url(): string { + return this._whoami_url; + } + + get login_url(): string { + return this._login_url; + } + + get logout_url(): string { + return this._logout_url; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/index.ts new file mode 100644 index 000000000..f020fddce --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/index.ts @@ -0,0 +1,12 @@ +export * from './api.service'; +export * from './user.service'; +export * from './config.service'; +export * from './auth.service'; +export * from './scheduler.service'; +export * from './websocket.service'; +export * from './progress.websocket.service'; +export * from './logs.websocket.service'; +export * from './trigger.service' +export * from './job.service' + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts new file mode 100644 index 000000000..037ed9afe --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts @@ -0,0 +1,18 @@ +import {Injectable} from '@angular/core'; +import {ApiService} from './api.service'; +import {CONTEXT_PATH, getBaseUrl} from './config.service'; +import {Observable} from 'rxjs'; + +@Injectable() +export default class JobService { + + constructor( + private apiService: ApiService + ) { + } + + fetchJobs = (): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/jobs`) + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts new file mode 100644 index 000000000..5d21a3e9b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts @@ -0,0 +1,12 @@ +import {Injectable} from '@angular/core'; +import {WebsocketService, ApiService, getBaseUrl, CONTEXT_PATH} from '.'; +import {SocketOption} from '../model/SocketOption.model'; + +@Injectable() +export class LogsWebsocketService extends WebsocketService { + + constructor(private apiService: ApiService) { + super(new SocketOption(getBaseUrl() + `${CONTEXT_PATH}/logs`, '/topic/logs', apiService.getToken)) + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts new file mode 100644 index 000000000..b4da49fbd --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts @@ -0,0 +1,21 @@ +const MockObservable = { + mergeMap: (cb) => { + return cb({ id: 123 }); + }, + toPromise: () => { + return new Promise((resolve, reject) => { + resolve('resolved'); + }); + } +}; + +export class MockApiService { + get(path: string) { + return MockObservable; + } + post(path: string, body) {} + put(path: string, body) {} + anonGet(path: string) { + return MockObservable; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts new file mode 100644 index 000000000..217a72263 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts @@ -0,0 +1,2 @@ +export * from './api.service.mock'; +export * from './user.service.mock'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts new file mode 100644 index 000000000..cbd0ac794 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts @@ -0,0 +1,5 @@ +export class MockUserService { + + currentUser = {}; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts new file mode 100644 index 000000000..001150bad --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts @@ -0,0 +1,12 @@ +import {Injectable} from '@angular/core'; +import {WebsocketService, ApiService, getBaseUrl, CONTEXT_PATH} from '.'; +import {SocketOption} from '../model/SocketOption.model'; + +@Injectable() +export class ProgressWebsocketService extends WebsocketService { + + constructor(private apiService: ApiService) { + super(new SocketOption(getBaseUrl() + `${CONTEXT_PATH}/progress`, '/topic/progress', apiService.getToken)) + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts new file mode 100644 index 000000000..7a3898bca --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts @@ -0,0 +1,54 @@ +import {Injectable} from '@angular/core'; +import {CONTEXT_PATH, getBaseUrl} from '.'; +import {ApiService} from './api.service'; +import {Trigger} from '../model/trigger.model'; +import {Observable} from 'rxjs'; +import {SimpleTriggerCommand} from '../model/simple-trigger.command'; +import {Scheduler} from '../model/scheduler.model'; + + +@Injectable() +export class SchedulerService { + + constructor( + private apiService: ApiService + ) { } + + startScheduler = (): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/run`); + } + + stopScheduler = (): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/stop`); + } + + pauseScheduler = (): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/pause`); + } + + resumeScheduler = (): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/resume`); + } + + getStatus = () => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler/status`); + } + + getScheduler = (): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/scheduler`); + } + + getSimpleTriggerConfig = (triggerName: string): Observable => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/simple-triggers/${triggerName}`); + } + + saveSimpleTriggerConfig = (config: SimpleTriggerCommand) => { + return this.apiService.post(getBaseUrl() + `${CONTEXT_PATH}/simple-triggers/${config.triggerName}`, config) + } + + updateSimpleTriggerConfig = (config: SimpleTriggerCommand) => { + return this.apiService.put(getBaseUrl() + `${CONTEXT_PATH}/simple-triggers/${config.triggerName}`, config) + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts new file mode 100644 index 000000000..9aed9685b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts @@ -0,0 +1,20 @@ +import {ApiService} from './api.service'; +import {Injectable} from '@angular/core'; +import {Observable} from 'rxjs'; +import {Trigger} from '../model/trigger.model'; +import {TriggerKey} from '../model/triggerKey.model'; +import {CONTEXT_PATH, getBaseUrl} from './config.service'; + +@Injectable() +export class TriggerService { + + constructor( + private apiService: ApiService) { + } + + fetchTriggers = (): Observable> => { + return this.apiService.get(getBaseUrl() + `${CONTEXT_PATH}/triggers`); + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts new file mode 100644 index 000000000..e65f6b69d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts @@ -0,0 +1,56 @@ +import {Injectable} from '@angular/core'; +import {ApiService} from './api.service'; +import {ConfigService} from './config.service'; + +import {map} from 'rxjs/operators' +import {HttpErrorResponse} from '@angular/common/http'; +import {Router} from '@angular/router'; + +@Injectable() +export class UserService { + + isAnAnonymousUser: boolean; + currentUser: any; + + constructor( + private apiService: ApiService, + private config: ConfigService, + private router: Router + ) { + } + + refreshToken() { + this.apiService.get(this.config.refresh_token_url).subscribe(res => { + if (res.accessToken !== null) { + return this.getUserInfo().toPromise() + .then(user => { + this.currentUser = user; + }); + } + }) + } + + fetchLoggedUser() { + this.getUserInfo().subscribe(user => { + this.currentUser = user; + this.router.initialNavigation(); + }, err => { + console.log(`error retrieving current user due to ` + JSON.stringify(err)); + const httpErrorResponse = err as HttpErrorResponse; + if (httpErrorResponse.status === 404) { + this.isAnAnonymousUser = true; + this.router.initialNavigation(); + return; + } + if (httpErrorResponse.status !== 401 && (httpErrorResponse.status < 200 || httpErrorResponse.status > 399)) { + this.router.navigateByUrl('/error'); + } + }); + } + + getUserInfo() { + return this.apiService.get(this.config.whoami_url) + .pipe(map(user => this.currentUser = user)); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts new file mode 100644 index 000000000..bf9e48867 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts @@ -0,0 +1,136 @@ +import {Observable, Subscriber} from 'rxjs'; +import {SocketEndpoint} from '../model/SocketEndpoint.model' + + +import Stomp from 'stompjs'; +import SockJS from 'sockjs-client'; +import {SocketOption} from '../model/SocketOption.model'; + +interface WebsocketSubscriber { + index: number, + observer: Subscriber +} + +export interface QuartzManagerWebsocketMessage { + type: string; + message: any; + headers: any; + self: boolean; +} + +export class WebsocketService { + + _options: SocketOption; + + _socket: SocketEndpoint = new SocketEndpoint(); + + observableStompConnection: Observable; + subscribers: Array = []; + subscriberIndex = 0; + + _messageIds: Array = []; + + reconnectionPromise: any; + + constructor(options: SocketOption) { + this._options = options + this.createObservableSocket(); + this.connect(); + } + + getOptions = () => { + } + + private createObservableSocket = () => { + this.observableStompConnection = new Observable((observer) => { + const subscriberIndex = this.subscriberIndex++; + this.addToSubscribers({index: subscriberIndex, observer}); + return () => this.removeFromSubscribers(subscriberIndex); + }); + } + + private addToSubscribers = (subscriber) => { + this.subscribers.push(subscriber); + } + + private removeFromSubscribers = (index) => { + this.subscribers = this.subscribers.filter(subscriber => subscriber.index !== index); + } + + getObservable = () => { + return this.observableStompConnection; + }; + + getMessage = function (data): QuartzManagerWebsocketMessage { + const out: QuartzManagerWebsocketMessage = {}; + out.type = 'SUCCESS'; + out.message = JSON.parse(data.body); + out.headers = {}; + out.headers.messageId = data.headers['message-id']; + + const messageIdIndex = this._messageIds.indexOf(out.headers.messageId); + if (messageIdIndex > -1) { + out.self = true; + this._messageIds = this._messageIds.splice(messageIdIndex, 1); + } + return out; + }; + + _socketListener = (frame) => { + console.log('Connected: ' + frame); + this._socket.stomp.subscribe( + this._options.topicName, + data => this.subscribers.forEach(subscriber => subscriber.observer.next(this.getMessage(data))) + ); + } + + _onSocketError = (errorMsg) => { + const out: any = {}; + out.type = 'ERROR'; + out.message = errorMsg; + this.subscribers.forEach(subscriber => subscriber.observer.error(out)); + this.scheduleReconnection(); + } + + scheduleReconnection = () => { + this.reconnectionPromise = setTimeout(() => { + console.log('Socket reconnecting... (if it fails, next attempt in ' + this._options.reconnectionTimeout + ' msec)'); + this.connect(); + }, this._options.reconnectionTimeout); + } + + reconnectNow = function () { + this._socket.stomp.disconnect(); + if (this.reconnectionPromise && this.reconnectionPromise.cancel) { + this.reconnectionPromise.cancel(); + } + this.connect(); + }; + + send = (message) => { + const id = Math.floor(Math.random() * 1000000); + this._socket.stomp.send(this._options.brokerName, { + priority: 9 + }, JSON.stringify({ + message: message, + id: id + })); + this._messageIds.push(id); + }; + + connect = () => { + const headers = {}; + + let socketUrl = this._options.socketUrl; + if (this._options.getAccessToken()) { + socketUrl += `?access_token=${this._options.getAccessToken()}`; + } + + this._socket.client = new SockJS(socketUrl); + this._socket.stomp = Stomp.over(this._socket.client); + this._socket.stomp.connect(headers, this._socketListener, this._onSocketError); + this._socket.stomp.onclose = this.scheduleReconnection; + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts new file mode 100644 index 000000000..fec7fe88f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts @@ -0,0 +1,4 @@ +export interface DisplayMessage { + msgType: string; + msgBody: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts new file mode 100644 index 000000000..73d7f6316 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts @@ -0,0 +1,3 @@ +export function looseInvalid(a: string|number): boolean { + return a === '' || a === null || a === undefined; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts new file mode 100644 index 000000000..6ab4e2c67 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts @@ -0,0 +1,14 @@ +import { HttpParams, HttpUrlEncodingCodec } from '@angular/common/http'; +import { looseInvalid } from './loose-invalid'; + +export function serialize(obj: any): HttpParams { + let params = new HttpParams(); + + for (const key in obj) { + if (obj.hasOwnProperty(key) && !looseInvalid(obj[key])) { + params = params.set(key, obj[key]); + } + } + + return params; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css new file mode 100644 index 000000000..e69de29bb diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html new file mode 100644 index 000000000..497e94951 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html @@ -0,0 +1,13 @@ +
+
+
+

Unexpected Error

+

Please try again later!

+
+
+
+

+ generic error +

+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts new file mode 100644 index 000000000..6feeac96a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts @@ -0,0 +1,25 @@ +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; + +import {GenericErrorComponent} from './genericError.component'; + +describe('GenericComponent', () => { + let component: GenericErrorComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ GenericErrorComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(GenericErrorComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts new file mode 100644 index 000000000..dd5ca1754 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'qrzmng-generic-error', + templateUrl: './genericError.component.html', + styleUrls: ['./genericError.component.css'] +}) +export class GenericErrorComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css new file mode 100644 index 000000000..e69de29bb diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html new file mode 100644 index 000000000..530dc675b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html @@ -0,0 +1,13 @@ +
+
+
+

Forbidden - Access Senied

+

you're not authorized to access

+
+
+
+

+ access denied +

+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts new file mode 100644 index 000000000..95a817e75 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts @@ -0,0 +1,25 @@ +import { ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; + +import { ForbiddenComponent } from './forbidden.component'; + +describe('ForbiddenComponent', () => { + let component: ForbiddenComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [ ForbiddenComponent ] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(ForbiddenComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts new file mode 100644 index 000000000..3dd20c084 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts @@ -0,0 +1,15 @@ +import { Component, OnInit } from '@angular/core'; + +@Component({ + selector: 'app-forbidden', + templateUrl: './forbidden.component.html', + styleUrls: ['./forbidden.component.css'] +}) +export class ForbiddenComponent implements OnInit { + + constructor() { } + + ngOnInit() { + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts new file mode 100644 index 000000000..f4ef30b59 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts @@ -0,0 +1 @@ +export * from './forbidden.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts new file mode 100644 index 000000000..69c16441f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts @@ -0,0 +1 @@ +export * from './login.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html new file mode 100644 index 000000000..e46442177 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html @@ -0,0 +1,32 @@ +
+ + + + +

Quartz Manager

+
+ + +

{{title}}

+
+ + + +

{{notification.msgBody}}

+ +
+ + + + + + + +
+ + +
+ +
+ +
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss new file mode 100644 index 000000000..653c9a1e0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss @@ -0,0 +1,58 @@ +.content { + width: 100%; +} + +mat-card { + max-width: 350px; + text-align: center; + animation: fadein 1s; + -o-animation: fadein 1s; /* Opera */ + -moz-animation: fadein 1s; /* Firefox */ + -webkit-animation: fadein 1s; /* Safari and Chrome */ + +} + +mat-form-field { + display: block; +} + +mat-spinner { + width: 25px; + height: 25px; + margin: 20px auto 0 auto; +} + +button { + display: block; + width: 100%; +} + +.error { + color: #D50000; +} + +.success { + color: #8BC34A; +} + + +@media screen and (max-width: 599px) { + + .content { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + } + + mat-card { + /* https://github.com/angular/flex-layout/issues/295 */ + display: block !important; + max-width: 999px; + } + +} + +a { + text-decoration: none; + cursor: auto; + color: #FFFFFF; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts new file mode 100644 index 000000000..8ed31fa86 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts @@ -0,0 +1,48 @@ +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; +import { LoginComponent } from './login.component'; +import { RouterTestingModule } from '@angular/router/testing'; +import { CUSTOM_ELEMENTS_SCHEMA } from '@angular/core'; +import { MockApiService } from '../../services/mocks/api.service.mock'; +import { ReactiveFormsModule } from '@angular/forms'; + +import { + ApiService, + AuthService, + UserService, + ConfigService +} from '../../services'; + +describe('LoginComponent', () => { + let component: LoginComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [LoginComponent], + imports: [ + ReactiveFormsModule, + RouterTestingModule + ], + providers: [ + UserService, + { + provide: ApiService, + useClass: MockApiService + }, + ConfigService, + AuthService + ], + schemas: [CUSTOM_ELEMENTS_SCHEMA] + }).compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(LoginComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts new file mode 100644 index 000000000..695c96e6a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts @@ -0,0 +1,76 @@ +import {Component, OnDestroy, OnInit} from '@angular/core'; +import {UntypedFormBuilder, UntypedFormGroup, Validators} from '@angular/forms'; +import {ActivatedRoute, Router} from '@angular/router'; +import {DisplayMessage} from '../../shared/models/display-message'; +import {Subject} from 'rxjs'; +import {delay, takeUntil} from 'rxjs/operators' + +import {AuthService, UserService} from '../../services'; + +@Component({ + selector: 'app-login', + templateUrl: './login.component.html', + styleUrls: ['./login.component.scss'] +}) +export class LoginComponent implements OnInit, OnDestroy { + title = 'Login'; + githubLink = 'https://github.com/fabioformosa/quartz-manager'; + form: UntypedFormGroup; + + submitted = false; + + notification: DisplayMessage; + + returnUrl: string; + private ngUnsubscribe: Subject = new Subject(); + + constructor( + private userService: UserService, + private authService: AuthService, + private router: Router, + private route: ActivatedRoute, + private formBuilder: UntypedFormBuilder + ) { + + } + + ngOnInit() { + this.route.params + .pipe(takeUntil(this.ngUnsubscribe)) + .subscribe((params: DisplayMessage) => { + this.notification = params; + }); + this.returnUrl = this.route.snapshot.queryParams['returnUrl'] || '/'; + this.form = this.formBuilder.group({ + username: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(64)])], + password: ['', Validators.compose([Validators.required, Validators.minLength(3), Validators.maxLength(48)])] + }); + } + + ngOnDestroy() { + this.ngUnsubscribe.next(); + this.ngUnsubscribe.complete(); + } + + repository() { + window.location.href = this.githubLink; + } + + onSubmit() { + this.notification = undefined; + this.submitted = true; + + this.authService.login(this.form.value) + .pipe(delay(1000)) + .subscribe(data => { + this.router.navigate([this.returnUrl]); + }, + error => { + this.submitted = false; + this.notification = { msgType: 'error', msgBody: 'Incorrect username or password.' }; + }); + + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts new file mode 100644 index 000000000..729d0418f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts @@ -0,0 +1 @@ +export * from './manager.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html new file mode 100644 index 000000000..58e352787 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html @@ -0,0 +1,40 @@ +
+ +
+ +
+ +
+ +
+
+ +
+
+ +
+
+
+ + +
+
+
+ +
+
+ + +
+
+ +
+
+ + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss new file mode 100644 index 000000000..8b1378917 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss @@ -0,0 +1 @@ + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts new file mode 100644 index 000000000..01ce9f1c0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts @@ -0,0 +1,46 @@ +import {Component, OnInit, ViewChild} from '@angular/core'; +import { + ConfigService, + UserService +} from '../../services'; +import {SimpleTrigger} from '../../model/simple-trigger.model'; +import {TriggerKey} from '../../model/triggerKey.model'; +import {SimpleTriggerConfigComponent} from '../../components/simple-trigger-config'; +import {TriggerListComponent} from '../../components'; + +@Component({ + selector: 'manager', + templateUrl: './manager.component.html', + styleUrls: ['./manager.component.scss'] +}) +export class ManagerComponent implements OnInit { + + @ViewChild(SimpleTriggerConfigComponent) + private triggerConfigComponent!: SimpleTriggerConfigComponent; + + @ViewChild(TriggerListComponent) + private triggerListComponent: TriggerListComponent; + + newTriggerFormOpened = false; + + selectedTriggerKey: TriggerKey; + + constructor( + ) { } + + ngOnInit() { + } + + onNewTriggerRequested() { + this.triggerConfigComponent.openTriggerForm(); + } + + onNewTriggerCreated(newTrigger: SimpleTrigger) { + this.triggerListComponent.onNewTrigger(newTrigger); + } + + setSelectedTrigger(triggerKey: TriggerKey) { + this.selectedTriggerKey = triggerKey; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts new file mode 100644 index 000000000..d91ce3f7d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts @@ -0,0 +1 @@ +export * from './not-found.component'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css new file mode 100644 index 000000000..e69de29bb diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html new file mode 100644 index 000000000..3dcf4c2b9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html @@ -0,0 +1,12 @@ +
+
+
+

Not Found!

+
+
+
+

+ not found +

+
+
diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts new file mode 100644 index 000000000..47da51b8d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts @@ -0,0 +1,32 @@ +import {ComponentFixture, TestBed, waitForAsync} from '@angular/core/testing'; + +import { NotFoundComponent } from './not-found.component'; + +describe('NotFoundComponent', () => { + let component: NotFoundComponent; + let fixture: ComponentFixture; + + beforeEach(waitForAsync(() => { + TestBed.configureTestingModule({ + declarations: [NotFoundComponent] + }) + .compileComponents(); + })); + + beforeEach(() => { + fixture = TestBed.createComponent(NotFoundComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should be created', () => { + expect(component).toBeTruthy(); + }); + + it('should contains the text \'Not Found\'', () => { + fixture = TestBed.createComponent(NotFoundComponent); + fixture.detectChanges(); + const compiled = fixture.debugElement.nativeElement; + expect(compiled.querySelector('p').textContent).toContain('Not Found'); + }); +}); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts new file mode 100644 index 000000000..c18f379f1 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + templateUrl: './not-found.component.html' +}) +export class NotFoundComponent { + + constructor() { } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep new file mode 100644 index 000000000..e69de29bb diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg new file mode 100644 index 000000000..022963759 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png new file mode 100644 index 0000000000000000000000000000000000000000..d57ddb16ea57aa0bbe5a09532d869d35ee6945a7 GIT binary patch literal 161826 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 + + + + + + + + + + + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg new file mode 100644 index 000000000..a3107866b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png new file mode 100644 index 0000000000000000000000000000000000000000..0bc9a89357e11c969ad86e435b0004aee66bdfc9 GIT binary patch literal 117304 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 ShohtYzipXxh2)4xTk \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg new file mode 100644 index 000000000..d8689d842 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg new file mode 100644 index 000000000..d26487589 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/user.png b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/user.png new file mode 100644 index 0000000000000000000000000000000000000000..55937106c9671a7fffdf647b6afbb9ad745572e4 GIT binary patch literal 223499 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%0D{SvPHYNCv%T%`r5xrepAy1-hB(CJ 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 humW;*g7R+&|Ledvc- + + + + Quartz Manager + + + + + + + + + + + + + + + + Loading... + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/main.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/main.ts new file mode 100644 index 000000000..a9ca1caf8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/main.ts @@ -0,0 +1,11 @@ +import { enableProdMode } from '@angular/core'; +import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; + +import { AppModule } from './app/app.module'; +import { environment } from './environments/environment'; + +if (environment.production) { + enableProdMode(); +} + +platformBrowserDynamic().bootstrapModule(AppModule); diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/polyfills.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/polyfills.ts new file mode 100644 index 000000000..ecc7cec64 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/polyfills.ts @@ -0,0 +1,75 @@ +/** + * This file includes polyfills needed by Angular and is loaded before the app. + * You can add your own extra polyfills to this file. + * + * This file is divided into 2 sections: + * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. + * 2. Application imports. Files imported after ZoneJS that should be loaded before your main + * file. + * + * The current setup is for so-called "evergreen" browsers; the last versions of browsers that + * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), + * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. + * + * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html + */ + +/*************************************************************************************************** + * BROWSER POLYFILLS + */ + +/** IE9, IE10 and IE11 requires all of the following polyfills. **/ +// import 'core-js/es6/symbol'; +// import 'core-js/es6/object'; +// import 'core-js/es6/function'; +// import 'core-js/es6/parse-int'; +// import 'core-js/es6/parse-float'; +// import 'core-js/es6/number'; +// import 'core-js/es6/math'; +// import 'core-js/es6/string'; +// import 'core-js/es6/date'; +// import 'core-js/es6/array'; +// import 'core-js/es6/regexp'; +// import 'core-js/es6/map'; +// import 'core-js/es6/set'; + +/** IE10 and IE11 requires the following for NgClass support on SVG elements */ +// import 'classlist.js'; // Run `npm install --save classlist.js`. + +/** IE10 and IE11 requires the following to support `@angular/animation`. */ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + +/** Evergreen browsers require these. **/ +import 'core-js/es6/reflect'; + + + +/** ALL Firefox browsers require the following to support `@angular/animation`. **/ +// import 'web-animations-js'; // Run `npm install --save web-animations-js`. + + + +/*************************************************************************************************** + * Zone JS is required by Angular itself. + */ +import 'zone.js/dist/zone'; // Included with Angular CLI. + +(window as any).global = window + + + +/*************************************************************************************************** + * APPLICATION IMPORTS + */ + +/** + * Date, currency, decimal and percent pipes. + * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10 + */ +// import 'intl'; // Run `npm install --save intl`. + +/*************************************************************************************************** + * MATERIAL 2 + */ +import 'hammerjs/hammer'; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/styles.css b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/styles.css new file mode 100644 index 000000000..ee4c410f6 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/styles.css @@ -0,0 +1,14 @@ +/* You can add global styles to this file, and also import other style files */ +@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; +@import "animate.css"; + +html { + display: flex; + flex-direction: column; + height: 100%; +} +body { + margin: 0; + flex:1; + background-color: #f1f1f1; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json new file mode 100644 index 000000000..26227d8b6 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json @@ -0,0 +1,15 @@ +{ + "extends": "../tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/app", + "baseUrl": "", + "types": [] + }, + "files": [ + "main.ts", + "polyfills.ts" + ], + "include": [ + "src/**/*.d.ts" + ] +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/typings.d.ts b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/typings.d.ts new file mode 100644 index 000000000..ef5c7bd62 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/typings.d.ts @@ -0,0 +1,5 @@ +/* SystemJS module definition */ +declare var module: NodeModule; +interface NodeModule { + id: string; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.json new file mode 100644 index 000000000..6e9b7dba3 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.json @@ -0,0 +1,23 @@ +{ + "compileOnSave": false, + "compilerOptions": { + "downlevelIteration": true, + "importHelpers": true, + "outDir": "./dist/out-tsc", + "baseUrl": "src", + "sourceMap": true, + "declaration": false, + "moduleResolution": "node", + "emitDecoratorMetadata": true, + "experimentalDecorators": true, + "target": "es2020", + "typeRoots": [ + "node_modules/@types" + ], + "lib": [ + "es2016", + "dom" + ], + "module": "es2020" + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.spec.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.spec.json new file mode 100644 index 000000000..a9b533229 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.spec.json @@ -0,0 +1,19 @@ +{ + "extends": "./tsconfig.json", + "compilerOptions": { + "outDir": "../out-tsc/spec", + "baseUrl": "", + "types": [ + "jasmine", + "node" + ] + }, + "files": [ + "test.ts", + "polyfills.ts" + ], + "include": [ + "**/*.spec.ts", + "**/*.d.ts" + ] +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tslint.json b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tslint.json new file mode 100644 index 000000000..9157c3275 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tslint.json @@ -0,0 +1,118 @@ +{ + "rulesDirectory": [ + "node_modules/codelyzer" + ], + "rules": { + "callable-types": true, + "class-name": true, + "comment-format": [ + true, + "check-space" + ], + "curly": true, + "eofline": true, + "forin": true, + "deprecation": { + "severity": "warning" + }, + "import-blacklist": [true], + "import-spacing": true, + "indent": [ + true, + "spaces" + ], + "interface-over-type-literal": true, + "label-position": true, + "max-line-length": [ + true, + 140 + ], + "member-access": false, + "member-ordering": [ + true, + "static-before-instance", + "variables-before-functions" + ], + "no-arg": true, + "no-bitwise": true, + "no-console": [ + true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-construct": true, + "no-debugger": true, + "no-duplicate-variable": true, + "no-empty": false, + "no-empty-interface": true, + "no-eval": true, + "no-inferrable-types": [true, "ignore-params"], + "no-shadowed-variable": true, + "no-string-literal": false, + "no-string-throw": true, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unused-expression": true, + "no-var-keyword": true, + "object-literal-sort-keys": false, + "one-line": [ + true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "prefer-const": true, + "quotemark": [ + true, + "single" + ], + "radix": true, + "semicolon": [ + "always" + ], + "triple-equals": [ + true, + "allow-null-check" + ], + "typedef-whitespace": [ + true, + { + "call-signature": "nospace", + "index-signature": "nospace", + "parameter": "nospace", + "property-declaration": "nospace", + "variable-declaration": "nospace" + } + ], + "typeof-compare": true, + "unified-signatures": true, + "variable-name": false, + "whitespace": [ + true, + "check-branch", + "check-decl", + "check-operator", + "check-separator", + "check-type" + ], + + "directive-selector": [true, "attribute", "app", "camelCase"], + "component-selector": [true, "element", "app", "kebab-case"], + "no-inputs-metadata-property": true, + "no-outputs-metadata-property": true, + "no-host-metadata-property": true, + "no-input-rename": true, + "no-output-rename": true, + "use-lifecycle-interface": true, + "use-pipe-transform-interface": true, + "component-class-suffix": true, + "directive-class-suffix": true, + "no-access-missing-member": true, + "templates-use-public": true, + "invoke-injectable": true + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.editorconfig b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.editorconfig new file mode 100644 index 000000000..74b2bdd1f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.editorconfig @@ -0,0 +1,12 @@ +# This file is for unifying the coding style for different editors and IDEs +# See editorconfig.org + +root = true + +[*] +indent_style = space +indent_size = 2 +end_of_line = lf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.gitignore b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.gitignore new file mode 100644 index 000000000..29e1e7fcf --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.gitignore @@ -0,0 +1,7 @@ +/**/.settings/ +/.project +/**/target +.classpath +.project +.idea +*.iml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..c1dd12f17644411d6e840bd5a10c6ecda0175f18 GIT binary patch literal 58727 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%0ANsA|A3-jj|r`KAo%oTajX3>^E` zq{Nq+*dAH{EQyjZw_d4E!54gka%phEHEm}XI5o%$)&Z+*4qj<_EChj#X+kA1t|O3V@_RzoBA(&rgxwAF+zhjMY6+Xi>tw<6k+vgz=?DPJS^! zei4z1%+2HDqt}Ow+|2v^3IZQkTR<&IRxc0IZ_-Di>CErQ+oFQ~G{;lJSzvh9rKkAiSGHlAB$1}ZRdR^v zs2OS)Pca>Ap(RaSs7lM2GfJ#%F`}$!)K4#RaGJ_tY}6PMzY{5uHi}HjU>Qb~wlXQ) zdd(`#gdDgN_cat+Q#1q&iH{`26k}U3UR5(?FXM>Jm{W%IKpM4Jo{`3aEHN)XI&Bwx zs}a_P|M)fwG1Tybl)Rkw#D__n_uM+eDn*}}uN4z)3dq)U)n>pIk&pbWpPt@TXlB?b z8AAgq!2_g-!QL>xdU4~4f6CB06j6@M?60$f;#gpb)X1N0YO*%fw2W`m=M@%ZGWPx; z)r*>C$WLCDX)-_~S%jEx%dBpzU6HNHNQ%gLO~*egm7li)zfi|oMBt1pwzMA$x@ zu{Ht#H}ZBZwaf0Ylus3KCZ*qfyfbTUYGuOQI9>??gLrBPf-0XB84}sCqt5Q(O$M& zoJ+1hx4Wp#z?uex+Q1crm2ai?kci;AE!yriBr}c@tQdCnhs$P-CE8jdP&uriF`WFt>D9wO9fCS0WzaqUKjV_uRWg>^hIC!n-~q=1K87NAECZb^W?R zjbI&9pJ)4SSxiq06Zasv*@ATm7ghLgGw3coL-dn6@_D-UhvwPXC3tLC)q3xA2`^D{ z&=G&aeSCN)6{2W6l@cg&2`cCja~D2N{_>ZQ)(5oSf!ns1i9szOif~I8@;2b)f2yQ5 zCqr{lGy5(^+d!<0g??wFzH^wuv=~0)g55&^7m8Ptk3y$OU|eI7 zIovLvNCoY%N(aW#=_C%GDqEO|hH3O9&iCp+LU=&CJ(=JYDGI;&ag&NKq}d;B`TonC zK+-t8V5KjcmDyMR@jvDs|7lkga4>TQej$5B+>A`@{zE&?j-QbQWk4J*eP2@%RzQ{J z?h`1~zwArwi^D7k9~%xtyf(2&$=GsP*n-fTKneej-y6y(3nNfC7|0{drDx{zz~cSs z<_+d2#ZDst@+`w{mwzmn?dM2aB;E;bS-Opq$%w@WnDwa$hUGL90u9c=as)+_6aO10 zLR|CR8nr<2DQTvkaH0QDsyn@TYCs7Nk3lN}Ix$)JM0*zf=0Ad$w9j723W#%{r8V&`{wx-8kSv#)mZ{FU%UZDIi zvbgLHyJ>z0BZe`GNM$Q;D6D48#zc9s(4^SGr>u-arE}okN62N{zuwX)@FL5>$ib=b z5Wtm~!ojD3X|g59lw%^hE?dL;c^bgVtBOkJxQR{Eb*nR1wVM&fJQ{<))bn9e3bSlu z3E-qpLbAE(S^I4mVn`?lycoV!yO!Qj_4qYgsg7tXR)Gu2%1)5FZu&lY7x>bU`eE}x zSZ5c`z~^&$9V?eEH!^Rp-Fz3WiCvEgf`Tq}CnWRZY+@jZ{2NewmyGUM6|xa3Sh7)v zj6d&NWUVqu9f-&W)tQ>Y%Ea!e76@y!Vm*aQp|wU5u<%knNvHZ!U}`fp*_)mIWba=j z*w9~{f5pD;zCmEWePjM#ERNiNjv!SnM-&rGpB9Nmiv}J+hwB&0f_+x?%*lgJFRHsqfFDPwyvh8<*xLT0u_BeEHw{q+UGj=$4udEx)Vq#sV zKB3+_C!RUKy?ac3-`+}dL2!D_2(5=8&@hBf`-AbU`-<_3>Ilqkg6qSI>9G(@Kx?g<0h0K&31$AR>R%d}{%DyXPss$&c^ja7NR z$0AN7Fl$>VpGxqHW15CjxAa6DUVmCpQNbOwBv8D^Y{bXg28> zEQE9xl?CWh0gS6%Y=G4Cy($Vb>jBb2f_dm#0_B<_Ce`|~Obt_Xp^nkR zK%o_`{h1XkWn}i|5Dp#q8D(;k;2|+{DAG{2gJgPNQ=KZ=FKY@d>QEu6W;oLsE(1}< zpnwSEj(K{Bu^#CXdi7L_$!X`QOx^tA1c{&-XTHo3G?3(H*&VM~*Aud?8%FU=dE&kV zJ$SqZoj^g@(q9x;7B30J$(-qUml{?3e+I^Cf?X0PpLr}m zS}W9`QaCwINRU&D5>j9O*j6S}R1`7{5+{d-xUlI~)U!^4+*b5tkuon-Msz03Z{{Kp zH!GAXoyr#1K;t5o#h#a%Lzj3XQGqM0TRnfu$(fsQe^wb_?W!m!+7r55q>svWN`k~T zS(gk9bi|@+8wg;dR<&0f;MpwQbY27$N{{laPQk3@3uCz$w1&jq)`uW*yn!Pe-V^%Q zR9)cW;UB~ODlwolWFAX?ik#_|v)AtHNwoq72E9Jg#v2e5SErf+7nTleI8&}%tn6hf zuz#5YtRs94Ui&E_1PakHfo+^t-{#ewhO*j5ls-zhm^C{kCARNEB1aORsxE!1SXBRz z6Oc-^#|0W6=7AJ;I|}pH#qby@i^C+Vsu9?zdtkE{0`oO_Hw|N=Lz9Is8j}R zI+8thGK?(KSZ5ZW4nQG1`v(=0Jd*0gIlavVihzo#fPaa=}(Rqdxl3^6O8K+{MqU`;1iTJ$<^k)Nms(A$j?A-wHJKvh9 zUHW3}JkE;x?FETPV8DFTxFLY8eSAd%C8vp?P_EuaMakmyFN_e?Hf|LBctnncUb}zF zIGP4WqtKCydoov~Bi<_I%y%$l+})!;SQVcP?>)9wM3q-GE6t9*LfoePBlo{gx~~e{g_XM5PQ8Y5dsuG%3Xq}I&qcY6 zTCo?<6E%)O$A2torq3-g8j3?GGd){+VHg@gM6Kw|E($M9}3HVIyL1D9321C zu#6~~h<<*=V7*ria%j^d5A;S^E;n!mOnFppfi+4)!BQ@#O2<|WH$RS~)&2Qol|@ff zFR#zmU(|jaqCXPA@q?UhrgbMO7zNXQYA@8$E+;4Bz7g=&zV-)=&08J_noLAz#ngz$ zA)8L8MrbXIDZuFsR_M(DsdX)s$}yH!*bLr{s$YWl5J?alLci=I#p`&MbL4`5bC}=2 z^8-(u4v2hs9*us}hjB!uiiY6vvv&QWJcVLTJ=SFG=lpR+S4Cd91l}oZ+B-*ehY2Ic_85)SRSa% zMEL~a3xrvH8ZnMIC!{9@pfOT7lrhxMf^8N20{CJXg}M35=`50S;6g-JYwjwj!K{^) z5Bohf6_G6z=+0V8&>F8xLbJ4mkCVu^g66#h&?tL z9odv&iW21IAh~y9D-DupKP-NcernF2(*RsFkAsM<$<>@-Cl1?&XAi4+Mh2Zm@2x#u zWH&J^1=8G|`|H2%94bnjUZyI>QACu9FS}^$lbtzzCz4AMspqGYEwFFM<%G!Oc$+;7 z3r_L!H~PR}5n8+3-&4v*fFr$uK{y_VamM0*TKn^))nQsn5U?7Iv?`4|Oy&m6himAG z%=a;2ji3f_RtDPqkwR>ISxhnS0f)E`ITo}TR!zIxPwECZy#jzo%q{BNYtd!<IP_S+=*yDOk1GgwLqe!d9esV@3$iVAm1!8RoE| zqnTz;5a)B(~~KcP)c>?+ysFAlAGF4EBor6)K{K*Kn>B(&QtMAkR^ynG%k%UbJpKM zI$}qQXXP3PISHe_vTFssbcL`irhG2zN7J((3ZFmh*bnPuiK~=#YG=820hXqOON#HI<0bvIT{z&SaqRvqaMG-d5<06zdP?-kIH{%UMR$Xn@S}Hx3 zFjg}6no}vN_512D+RIn-mo9^_Li-)WI5%VigYt{Jd!RyI%d|-LqJU$y3aJ*a$y6$1 zjyTuIF2&t>1rPlw&k5OVLhrYBvk5Vl8T(*Gd?Alqi}> z<@-`X_o@9EOB8Ik&?|;lvKHFU@#O+?T!kEf&oJUaLzN;>!}!!e1WIs(T}V#Irf$AK z42`x`z-9ogxd@%CS;D5S z2M^b;Pu)q)c&_KBO!va-4xnI57L7V@*_I_r4vU)z>xk5z6PDVqg92R7_iZH|VlO_B z#8R`5HZVn?ou>czd>gZ~s;w4ZkzVXJNP8FiezlB5JXe6Z-OLsDw%N7!(135!Vl2Lb zLYI79?U{h#W-_#W6hf`<$BQHJCu5ehv?IF+-uxUqt~j!ZW1cxfiEJal^q7~RMWQ0a z2CEaPa1_p|P6qRmmeKgas*N}@(2tH%U37-<5i(DSnVOFFxg-Sv%7&{hPeRh{U`&ufGz=V|JdYQ2sG5 zk%3JimSwQFP=Yr?u_beSG^B$nnh$4hrxb4lpTTiUFRQEZ3ulr+L3m;>;Io?D;jG6Wjj!b)nsZds<6 zX@cD%+aVr!ra~F7HYr`TB!|y-t)HSb^FQt zbo+_XP44IWJGGxg73JyhBjKMSv`77ngDOw}6Eve6ZIol$Q5s65d(1-sP{BU{1_y)7 zF8sh5A~jxRHk=wq3c5i3*e&otCd9>cstT?IQ&D4slC-&^q!ut1;WAQ}fE}Y+jU}r{ zmpSI%sW?})RAm8}$WUU+V$PmQOF5gSKOGQ2;LF-E(gd<67rYu2K| zom8mOppa%XJ6C(@I7-*opqLn73e9BMFStaBER?suJ{jte1$vA%z?$_`Em=a=(?T-q z*A=VZOQ`P{co!*UUKyV@Rd-c#*wmb7v<%rN=TGFmWmqhbj#&+?X|3bZYAjbNGTv~O zs7SIYi3VgW6@?=PGnbNNZIWaY^*+ChW&a)A$uqH8xxehwx2`<1w6mag?zuHbsVJiO$a)tQ zuBBoR>rLfhpA@)Qf`8BwRMx886%9HP5rOR%YCy9pQ|^Xw!=Mcnwx8j=(ZE)P-tJ&s zON&Nsr%14jS@K+IvrJj720NkCR*C(j&aI$EFCV)w$9M<#LdihyRKdzTjJPI|t9_S} z--#oF#;F?Y1KN%_yE);Bxv}9PWZphz_g5mReOKR`y%9UZ=n}GXWw?E$T1%NAfK1Ad z|0$Lp^;sntA>}=ybW)mkxNv1?hkZ`<8hCemcT5 zYl6$I^bhXDzPlz<>6zOy3Fu*3?>#q$;1fJ>nuxyx#&<&x6Y}j zCU&VmtCJ`;aYN+qP}nwr%s2ZQC|Z**axS^?iGu+x^{{>FIv!k0#HaXtEG=*C7kPe!mMnknbn}TKpp6Xv9 zVvq&%A3nmY^N*XTg&+=wO>(|{uTwm;ZP9@+M)6%T zwXPh-&{+aAfv^ZCzOEb;yj>A=f5Pbu)7T{9PT3u>#w*%?K8jqEF%I>A?q;E%CXn)f z|0ohNa5DMv@HVk^vT(L=HBtH*Vzo81L?)M=g7)>@j*vUx?S zxqZo23n3vn@K-Q@bx3lLT+5=fB_oz8+p?P;@*UU<-u)jb5WFEXzoc+8*EC5P6(HWr zY$mfFr=L&G>(jvl8US2fLQqTzHtAGizfR*;W4-kN2^I>L3KkXgx=e*}+i*N($}{?c zi=Q67G)oEMW{|Gdsm{)|V)5Evo}KLj%}gIe>98FFoNTLrJX z-ACRdewnT1w#Egct%wpGg~q%?!$}>$_UJPC4SP0^)G_$d4jN0jBEx}+rcd*^aDtnx zewG{`m!oSbQ?A~FZ6L{&V0hUE+b$DxjO_;oskFha>@gzy(jDnzGO>z3Tzz|i&Dakg zFid5$;SFxINis^4JzK5XIVabKoP`=ZWp|p|t{hTi8n|#XE=-rINwJ*blo?=%Se(qw zkW7x5Qs(LV5RVGxu2e&4);c73lY#0(iZo1x=MY;7mW`uUQIY+$_PqH`4a`6O#urwU zE6(FrvyExmB{c5z*YAj_P&t??F1t6TN2N!$N#~02u(t(PDVyD)$mL3hqKQ4E91N#GOIngPr&pUb-f_Z4*XV8`p1pq+mzrUlUY=4~i|3RDo;Lo36U}uwm zaOah}mO8c@%J*~~{Up7_7->8|3x<}WemgaMA}h>xD17Fey@V9;LgjQFSBS(A<+2kCP9( zlkD%;oXzWtZ_hgu0IxeTjH`6=vi|t_04Btl32=g8swD1oZguWr4|lx0RuXoDHbh27 z+ks?gkVWYnr~_{h+PzQjQ(#8kaJai4We{F!JuqCzU0t*+H{n6i3;K<>_6XUn1n)}) zJ?}JCUPYhT9S1Hi-M+$(Z**%fz7Z%IiMN6%kD>wh%r4#C?Ge4{>w9o??Vbehy9!3@ zffZs8?LGxyWQr@yB(|%~Aa>fVj3$O=i{K*f;?h-a@-ce{(cY8qByOCA1r0;NC}}gr zcC^fCa$Ot`42n>`ehclOAqBo7L&D6Mi=;M5!pd@jj$H z?U7LQWX_u7bHpBzF7L-s4*`C)`dUrbEIgKy5=QHsi7%#&WYozvQOXrNcG{~HIIM%x zV^eEHrB=(%$-FXVCvH@A@|nvmh`|agsu9s1UhmdPdKflZa7m&1G`3*tdUI5$9Z>*F zYy|l8`o!QqR9?pP4D7|Lqz&~*Rl-kIL8%z?mi`BQh9Pk9a$Z}_#nRe4NIwqEYR(W0 z1lAKVtT#ZTXK2pwfcCP%Apfo#EVU|strP=o4bbt3j zP?k0Bn$A&Xv$GTun3!izxU#IXsK1GQt;F0k`Tglr{z>v2>gCINX!vfs`aqag!S*AG5Z`y-# zUv_u&J4r;|EA`r!-gsoYGn<^nSZLH-nj1SRGc0MRG%LWVL)PckFn9z!ebIJ}eg+ix zIJo7GN;j1s$D6!({bYW)auypcB~eAWN;vhF%(l=|RR})$TOn;ldq^@8ZPi<%Xz~{Z zQQ|KAJ@JHaX!Ka2nhP%Cb^I}V6_C|e1SjOQpcPMMwfNz#U@Az|+rmH*Zn=cYJu-KR z{>f++Z~P=jm)4-7^yc#52U4qeNcBRYb!hhT3Q7Ngu5t@CvY*ygxu^Eh?2l6= zhdqN{QEaP(!p>1p1*toD!TllHH6EH~S%l9`mG62dyAd+?}1(vf@N*x^6vhEFU<-RqS7#12*q-xtU z5d|F^n%WSAQHnm-vL)4L-VvoUVvO0kvhpIg57Wf@9p;lYS5YfrG9jtrr?E<_JL{q% z7uPQ52{)aP{7<_v^&=J)?_|}Ep*`{dH-=cDt*65^%LodzPSH@+Z~;7sAL}ZECxQv+;z*f;(?k)>-Lp@jBh9%J`XotGJO(HcJc!21iZ98g zS-O!L9vpE(xMx1mf9DIcy8J5)hGpT!o|C8H4)o-_$BR!bDb^zNiWIT6UA{5}dYySM zHQT8>e*04zk1)?F99$dp5F^2Htt*jJ=( zH(#XwfEZ`EErdI~k(THhgbwNK9a(()+Ha1EBDWVRLSB?0Q;=5Y(M0?PRJ>2M#uzuD zmf5hDxfxr%P1;dy0k|ogO(?oahcJqGgVJmb=m16RKxNU3!xpt19>sEsWYvwP{J!u& zhdu+RFZ4v8PVYnwc{fM7MuBs+CsdV}`PdHl)2nn0;J!OA&)^P23|uK)87pmdZ@8~F$W)lLA}u#meb zcl7EI?ng$CAA;AN+8y~9?aon#I*BgYxWleUO+W3YsQxAUF@2;Lu-m#U?F(tFRNIYA zvXuKXpMuxLjHEn&4;#P|=^k+?^~TbcB2pzqPMEz1N%;UDcf{z2lSiwvJs(KhoK+3^2 zfrmK%Z-ShDHo^OUl@cfy#(cE=fZvfHxbQ!Chs#(vIsL%hf55_zyx>0|h2JT=|7JWo z+Uth3y@G;48O|plybV_jER4KV{y{$yL5wc#-5H&w(6~)&1NfQe9WP99*Kc+Z^!6u7 zj`vK@fV-8(sZW=(Si)_WUKp0uKT$p8mKTgi$@k}(Ng z#xPo-5i8eZl6VB8Bk%2=&`o=v+G7g|dW47~gh}b3hDtjW%w)47v#X!VYM}Z7hG1GI zj16;ufr@1^yZ*w3R&6pB8PMbuz%kQ%r=|F4+a!Gw2RBX6RD5c!3fU@+QCq#X7W@Q5 zuVQ}Uu0dzN+2mSX5)KV%CsU;2FL%B6YT`10$8JR^#;jOO1x?t()Q_gI zxpQr2HI0_^@ge0hNt&MQAI`yJ1Zhd-fpR{rdNmRkEEDu7SpB)QOP4ajV;UBZZZK<6 zWds;!f+|}iP-kqWAH#1@QisJpjcg`+s80!LhAG@(eMad|zcln~oE8}9l5!K{^zf~( zd=HArZ5+Mryc$uNa`@|GSdOX=y}8GZc-%p8W@OM)uk2DfmhQXCU1E#y3XJ>|+XdW2 z)FQLeK38}u_D(5E{GV|YT^rI4qds2{-r<@@@@SG@u&4LbC z5o|KKqVM{?wk$5>2?t*I?IHdh~gljn_2m2zqZNJEEz4Mb$o&I3_UAg#$B{0u$uF4-q}{ zzs5+k@qOe08!CGLGmy3eRrcuqsgB*B>i8c3>3=T^Hv>nL{{u)jtNc6tLbL7KxfUr; z=Pp14Nz+ggjuwd~*oRJ)xWwGwdge+~b!E%c3Gzw6`vT>CCxE0t6v5Z`tw1oKCcm68A~Dbc zgbhP6bkWwSQ=#5EsX*O9Sm^}EwmQQzt2V2phrqqe2y)w8;|&t6W?lUSOTjeU%PKXC z3Kw$|>1YrfgUf6^)h(|d9SRFO_0&Cvpk<+i83DLS_}jgt~^YFwg0XWQSKW?cnBUVU}$R9F3Uo;N#%+js-gOY@`B4+9DH zYuN|s&@2{9&>eH?p1WVQcdDx&V(%-kz&oSSnvqzcXC3VsggWet1#~bRj5lBJDo#zF zSz))FHQd8>3iSw{63m`Pgy_jkkj9LTmJ&!J(V0E~&}HJ4@nXp<(miz$sb;(I<8s!7 zZyezu!-+X81r03486gAlx@n#aKx_93DREBtNcYln*8oliQ zbh0~SkAgHXX%C6}HwN(TRwaK2k_$Y}PxKId;jYt=S1Bf<8s@(IL?k3u1(f^V%TYO1 zA_jPf*V)SLEZFWS#y>M&p$LoSk+%ubs`)H%WEZf=F)RKh&x;i)uLIGJ94~A4m$(;S z;1rQC{m>--`WHFcaFA&5#7~vz|5S;{fB(7pPnG;@$D~C0pZYNEG?B8X*GB2e4{Qk; za1oop8OvHqs1Lk6B`AuYOv4`y`IgM315iTr{VUVc9WeOG;xE z%eDQgE4rb_B%vuT>N?^K zRvPnQwG%7RjO26+DY!OXWjgBu4^!)W-+ob_G&nX++))pD->QdRCo0spZN?Y*J#@-q z)fk-fJvZYz8)GSxYc^oXYIM;Pw}ftHW+a3dis#dXx^OS^m-~FlwcVr6MXv78fNI!i z51K-2t&!&IZ4(GF=mT@;qIp!&R(I@UiWPPz)%Us&(FdAAGxZ-+6^UZ7em`J-F#_3r zLkHym@VAnZFM$J~?0b@&O`l4YXyvOQ+OqalbZ0{g{qD{neY_xno1ZpXlSJWM=Mv(~ zvK{?O>AcXpbd}+hn{~*>weZwDTURX*M^9RkOO#DUfRW1;comKg1bn+mlsrNY8XDyW zgWg9~AWb_1^D8zsD4bL(1J4oinVy0Fimrh&AC}Itl;IH*p4eU_I;SWkOI!9tAbi3B zO@0=q#LHAc>z?ve8Q&hsF(sR9lgf_99_5Kvuug<^&0}Y&m)YjI?bITGIuh}AJO|>z zc*`Mly$>TA={AIT#d%JuMpXHDt($qkc*3UTf-wS$8^awqDD^|EAeA{FoeyJfWM@QX zk>vJ4L|8DU7jg_fB^3Qvz*V$QmDl*AXdw6@KSckh#qxjLCM8Nba!dTkJgr(S@~Z0a zt8%|W!a~3zG4Y&X6xbLtt^JK5;JT($B`_9bv(BjRTfG_Y`tg3k-}%sQoY@F|=}}${ zwmW%Ub6jPd)$;NA0=b7w!^2dE-qvI4)AVr`yvkabJcGwvuQ2rAoRlTjvCC^-$2BG} ziy0<6nt8;J67rymwm&wVZ8E7Krouv2Ir@-GQ%ui6PR42KHKms3MK&Z$zp{_XAVvrd znK4cbg)Ggh5k(4SlFOM9yyRUlVH1oo%|6Lu9%ZxZW28!c9Z%H5#E?B?7H7ulcUtirB<{s@jnS(-R@we z^R#{Mn$#JXd~5sw9rU&~e3fYTx!T&hY{S<~7hviG-T$<4OPcG6eA0KOHJbTz^(`i~ z_WON4ILDLdi}Ra@cWXKLqyd0nPi06vnrU-)-{)Xp&|2gV>E{Uc>Td`@f@=WYJYZ^- zw&+fjnmyeRoK-unBVvX>g>wO3!ey<+X#z@8GNc9MD}khMO>TV{4`z zx4%!9|H6k|Ue;`M{G6d!p#LL+_@6WMpWgF7jk*%$D_JB3c%D`~YmHRJD1UNDLh;Tf zYbbKcv9R(81c4yK+g+1Ril{5w#?E}+NVz>d@n48C-T-(L?9a9W`JV*{dan-sH*P3_Hnt~iRv)}ye;7$b}^4l%ixphDK`G#b!4R4qoouT@*A zZ)kQa)e94??k7N>tqoRl>h(9DFq&92=z|F!LJrh-97EoFL|Wt2v}>(zG1*#aiYA_^ zM_&%_G^g*O8x650e>m!#MDmwRub!irY>^^|L=!4^%lBr;?}mvgP3y~^mSdKSm^R~WAt7T0_ck0mA`GS)J^SYTo6^vQ|vuM7!92&@$BhtcQ^Z4h2)aN zh~EQthyjn1(eI~$FtuHH!|x(iHU{9k40k5nPBwB)X@8Lo$P6u81EeoNOGRct%a-LM_4y3Ts z7ki0PWAO^Es6c%M*SSRn)2|NAoUsKyL%))uVx7?5lkrk`njxs4q@M~x+8%jr7xV;- z|KC=g3aTZO|y|g~oHXB6b42(|J_&fP2Y`*;L07H2d>{~JP zFNGl$MYUG(Qy3dR?9Bfdg8#peGRiVP8VYn@)6T1bj*v)s6q*7<6P(ZVm4ZnTA;rOHSd>P`_5uT0+azWdV`gIvLaJ1o*DB}&W6LCgX|BycgF5qd z!)}dT#A~4*6{1=Bd5VV(Qa2h4x9m#2X711z(ZN>i&cn`BopG*5P`CD*HfYiQmXNGk zhgqcHPBrJP$Z@PLZ4}d-8^}%X^LtUDHq&;~3}lUyrxxl@|IS={GP&6-qq&Iy5gKW- zC@$}`EEZd}DOSeSD+v_x5r_tpBWfN0gDa21p(@TAIrgWQFo7NO@slI6XOAML_lN;3 zEv~}LlMbGWKu}0s$tO-vR)wD!=olGcA?}vU;lRu4+Zf z?nCD7hBmA5`U9P#W8-*0V1=OT-NI0k&_`UZ87DbpYq_=DBdyNDchZ<|V1f%dbaa7i zf~R+6Xt%G)VXlM@8REfP3u#7UPadWYOBMsQ56fHRv!0p9R6q>Rbx!n|IY0goLb%{+ zzy|5WXk+(d@ChzOWatIV1lc1F!(uEOfEmMd;v`|$Kt3X2Uws;%@OV!E86PN?CeHV& z=4#TX{J8RWaH`)!J<8AUs#Ar{6Am^8M{S( zc%K7y2YbcLUz+*eDTXdthNE)Lm^P&*e^eV zilOS9)TVKgr9_^_M!TJ^44v<YF2NO=h(oOr5jYxVTxWk0XJ8n0{F_SOH%49WMk*Sg7`g6B(=^< z*rLAW;8I5;1?;Fh{N=f;kxjLpj}u^mD|k8lih|G4#}wEG1j`HIG( z8y;BMR3cE01e?(+k8NLR|Z+)#>qR^iMZc=BkcixWSKYmkaHpIFN?s%*74kc&wxwB zrtbYBGz9%pvV6E(uli6j)5ir%#lQkjb3dvlX*rw5tLv#Z>OZm@`Bf2t{r>u^&lRCg z11*w4A;Lyb@q~I(UQMdvrmi=)$OCVYnk+t;^r>c#G8`h!o`YcqH8gU}9po>S=du9c*l_g~>doGE0IcWrED`rvE=z~Ywv@;O-##+DMmBR>lb!~_7 zR`BUxf?+5fruGkiwwu|HbWP^Jzui=9t^Pmg#NmGvp(?!d)5EY<%rIhD=9w5u)G z%IE9*4yz9o$1)VZJQuppnkY)lK!TBiW`sGyfH16#{EV>_Im$y783ui)a;-}3CPRt- zmxO@Yt$vIOrD}k_^|B2lDb2%nl2OWg6Y)59a?)gy#YtpS+gXx?_I|RZ&XPO`M!yl7 z;2IS@aT4!^l`Tped5UGWStOw5PrH#`=se%(ox%gmJUBk18PsN$*-J8S%r51Y$i!4N zQ!rW%cgj44jA~_x%%smSTU2WG_W0c&PB$A5*kl8{$|865+lSIX~uyDT`uI7qnS!BPAg1Wwrc0e)8Usf zv9^E38H&hWSp5!@K8Qinl|)9 zEB?NMaxZK^GB!PUf1TBw+`H&jFSNI=Q@v5$Ryf-y^#IuXO#vsM5R+9@qz#z0fD0GP z9|Hj#E>?<=HTcsF$`xn`je~D&3kF1Qi%dfH{sKh!~(IpgjkDGQn zQx2F9rv{*x2$(@P9v?|JZY)^b9cd+SO6_1#63n-HAY3fE&s(G031g2@Q^a@63@o?I zE_^r%aUvMhsOi=tkW;}Shom;+Nc%cdktxtkh|>BIneNRGIK{m_1`lDB*U=m|M^HGl zWF#z8NRBduQcF-G43k2-5YrD}6~rn2DKdpV0gD%Kl{02J{G3<4zSJ1GFFSXFehumq zyPvyjMp2SLpdE5dG#@%A>+R3%AhLAwyqxjvGd{I7J`Iw{?=KKPRzyrdFeU}Qj{rm{351DoP_;vx zMo*s+!Gwgn;${(LXXO(xyI@$ULPZI|uzYR%`>MmW6Hcr1y2aM5b$grFwW_(9Fzz$Q z$&8dKNdWvBkK=iYWA|0}s1B7>8J$g*Ij_+S9vC1#jy~uA8nr)yY)a+ zoJ=e>Lp`7v3^tQN<&6UpDi{c1b}F~fJ$9r=p=@U^J_7bOck$5}ncVjYB0yEjbWrhe@E`j64yN3X?=k_F3BalH$aN zV=94?wDNv=BKLB<1*xU|65Zl!%51r5sHQ?qCggCw;$2QfCZ$lN40WPL=n^{Prf^QS zjbZ&1MRGgiZ2T)}DpiluFr#q*!AZJ$1v#d10YQ{>wQ5px!y28-1hCZ7lwvQnQYN*U zOg9BpvB0A$WUzFs+KWk1qLiGTrDT-0>DUpFl??l(FqWVz_3_Xzqg9vTpagp- zZcJ!5W?|0G%W|AJVVHJ7`u6@<4yyqMGHj@kpv`P+LV<)%PM__Rz&oq~t-*vV12@NR zoEVPz<2D>O==MlNI`;l8Gmv49&|1`FR!}2`NLRCqA{@`imLz6zrjS4ui0)O;!Pu&?KPAcX)?tDPS26uKvR(ry(p{6kiXPoZbnQ!vx6dLu zZCaj~Ocr$h##KqsD;9;ZiUwhmUd%5lrwczWr1Yn6V>+IK=>51;N7JDkrm1NY-ZBes z;FxeOTb^HAyA+~P2}WvSSu_fzt_K=(m4wUp%c*^hF zEJ+1dP0{0B8bryXR+qApLz43iu?ga<5QQxTa$1gMCBq0W=4|DTv4nY4T*-^Im%>U~ z)98;hc(d7vk0zAML$WnPWsqK>=O-FZSLI3_WQKr*PCK=(i6LelZ$$}XXrD5cb~VXz zT%egX>8e;KZs@jcD>cL9VP(Q}b0r~ST$Mc%mr1cC8mqRUQc|N^9@Weu$Z|KeczK7HhSFeFV0i)MQmwrn7CBL=p`_9n?nh320m}6-MSv3L7I*<*56GR zZ`zI^1zyC7F#*zVL@M)F2+oqxydaiQz?|ODmqs|Ub8%&KXk9P3P7<4tM?X{~!;Ygw zt=h7)AYGDO9F&wV=BhCyD9exr#YM_-<;Fo~iE>IBEXK$%;JCUAEr;lR&3S_DUy_E) z#!oCYdENVE9OaaeaIrPk-odMtvdFG;ocA#`L6AifMu0og^?Oy9F|Et9q6 z8;3_|9+Io@hqYoN;58x1K&OP!9Vd#dzhTRjB2kI?%31ceHb#Q~WqJV5lw;@b>4@Rd z={z1S`d05YdWC*RLc7sR0bVGSytn-a3`JZL3|d8KC?vj_70Vi4ohP9QbU&Q4?Zjd0 zSZA?KbqLBsJg(qj>fycto3`zN-)lDe4{Ij-QfoBn@rT_tTszA+CnM~xWmE(4zfpCQ z;zPJfl3=ctrggYM!KQg;V{J;utMMF9&BfOe!<{wU0ph?-VQ%cv3B%fFiW?6xBPdf0 zD-HhEU?0C`G@7e+b-=8fj=TP3mdz&SIQ}Nd`*G#DTz9Y@b zaoDF}Gx7ZhPzpDhi^fA7WZ)EAEFv;N2*bKp0T za0t<^1|Zc#`A+?s$!$8eO4CK~PUFECC3BwNR4f)!V&-Y>$xg(%T{MtrH|CPcO(Lf> zE_meE1?6S-qlV^p2fh! zT11Ub)hHw!_mpFDMIAFB`%Yal+`1IXV>b?%!q^Ps%8nh8wtjVGlF-!5x*D29WJ4=M zZ7X(QvKe$YZNgM(HibD7+VO5Q29?@HzS?k$c|3B@JI6dlLgu5S&LbU4=4p-Yn||z@ z4p05vq*k*pbOV9QjVTMp8`c$?t@~!$8&5AP_sz@tk%a$nWHMh-Gm{WS5+q)5W6pU# za@YZXJCLTpZ}zb=$HCYbIm->?Hu6XIBz_d7)n1+3eSLzGVoNQCTHcu9qS2@({0sxc zu<-mhx@Xz_*(S1DEL|d0`YV7uNevL*Y6|DAQmvSp{4DzPL@>hqJ?`FjvIU;<&}YEKDmFUGSBYjRmK{Km-1m%-t=fFfI9kV|POH|SxvO=P+><+1JK_lt5F6fTPf8PXU+lYEJz__** z&>`4F2F8EWE+k7ZsZx9%!?A56{lsk1juYw5zN)V+g$d^Q^Gm}fnHKA6L^36=`e;p% zp{;JD$X3%}O7qINR*2<>a422}_hmc=)-A7B-1#2v85jN5K31t0DtmqON-Dim`XIR; zOo`KRv)gtn?stp*`^f>}UDnGYGnJAbl(4srd>(5fo2#oqi>#bus86EHfeItFIu$+% z;lE|3gjQA`BXHEE5JdcjCoethN`@NEc~zm6CYf@LJ|hT^1>l}gRl7oDHMnw!*5*IC z@@Mi=gO=lZSnWln`dX^4Bd{9zYG{HNIX-87A#5OM%xu*%V?7K3j3CHcN*t!zNK4N4 z!U2?a>0`8m8}UQshILC0g6-k>8~;SRIJ?vQKDj z@U{DrstWIT7ufyRYox^&*IyHYb$3wtB}V^0sS|1OyK#sDc%sh+(gy&NT9j4Aa7J0C zPe$02TylMjad&|{_oe3`zx)Cqns?6qThYue6U=~j5+l0Po4`bX*&9V@a<-O;;vCzm z(af&;e<^}?5$7&MRW$eb*P< zX|33QmDvFSDFK-qMz|RF|Eedum@~W zt~8C1@i8@LammTr)rAgKm8X_SczCg@+@LeWpcmx;VL;iLQJ;t%Z*|XbNWUnHX|o=Q z%bsXc%bw=pk~8%3aV-w(7E$co9_cHQ$!}Ep6YcoCb7~GQBWl#4D!T8A5!P*tSl4FK zK2CX0mjmosg6TSK@-E-He{dm0?9h{&v~}OX15xgF<1-w4DCypYo22%@;uRq`ZFld- z{Uqof@a@P5dW@kfF-`1B1(!R>(DHb&$UXY%Gd+6r?w8klhP&ldzG*6#l#VuM&`)ki z)f$+Rp?YYog9u==<#MC%1daG#%3EOX9A{7$`_(s#_4mV`xZaB+6YlX`H4{}vq;)TF zo~fR@do6EZIR?413A$V6o^fq&QV7P(bB(9m1969szOosyhZRYciAWXe4@u-}s(LeJpuIkSx)XvjXmvVEseG zJvWN4s|$6r;s(3F+cgeh4DMEq??h!$eb^5h#`whT5d03qfYpol8dCim)A^NG1-H}} z!b)V8DTL2Q8@R2p`y4@CeSVj9;8B5#O?jfl-j<$Quv?Ztwp*)GvQ~|W8i6?-ZV@Lf z8$04U_1m{2|AIu+rd8KW`Qk|P1w(}d%}cjG6cxsTJ3Y&*J^_@bQgXwILWY7w zx+z)v81rZv-|mi>y#p$4S7AA760X?)P&0e{iKcWq4xvv@KA@EWjPGdt8CKvh4}p}~ zdUVzuzkBlU2Z+*hTK214><61~h~9zQ3k+-{Pv~w`#4|YdjTFKc{===9Ml7EMFmE!f zH}U3O{Z`DuJrBZbz~OjSVlD6uZSEeNK8epja_LanEh8v;_$Eg9?g*9ihMoat$#qd^ z?;x?a*y3-pW#6|kF^<$w;2^~s!fc;3D~#&#WYZfK@3;bO{MvmN?>qy%_%v`BVCgfC zdwL~(H14Gr6w(1CX|R;zhZh%?*Q{hxJH`MV2)@Jg$pbqjZeL+LO7^vwgi!@3yn@NT zU91-{;BWIi8bV-j-YR|A9Qs?M?e7Ru&Onl1(Sz(kxAw?LEbd+Le%Z43rZgb2h2m|e z^rblc;4r+}?@tC(YIBB_qpQL?_kg{;zO#6JD9{;HSUgf@zIZ)}Bh4wFZIs>meSd}f z4iF~nD$KAV6CVEw+{YOPrW~~y~Y=?snG4dE3edN$~SXh`!c_F zUsQ1M;ARz&v0mIbfP}aLWZ&cBPU+DU{l+0}_>9DZGL{@}lF6QCtgAg;EWUu`D$Evm znblG}kC!}Mw)bR~U;+S}T9TVc6lXWR!LNMm)nmxr*ORkv#&UO$_WQpt0WdX{A=bjC zV^lB~(r;y!C4$Rk0fWUR|09O?KBos@aFQjUx{ODABcj}h5~ObwM_cS>5;iI^I- zPVEP9qrox2CFbG`T5r_GwQQpoI0>mVc_|$o>zdY5vbE~B%oK26jZ)m=1nu_uLEvZ< z8QI_G?ejz`;^ap+REYQzBo}7CnlSHE_DI5qrR!yVx3J1Jl;`UaLnKp2G$R__fAe;R(9%n zC)#)tvvo-9WUBL~r_=XlhpWhM=WS6B0DItw{1160xd;M(JxX_-a&i%PXO@}rnu73_ zObHBZrH%R!#~pjEp~P?qIj4MdAx@sv;E96Doi$eO-~)oUz%Z0Tr4K`-jl06Il!9{s zdjF*1r{XU?)C(%XKPm;UnpnDGD%QL3pgo0ust~+sB0pa|v37>E1dp*Odn)n=DY;5j zDzSAkU9B6F$;|##_mrDe#%hd7pC1u`{9ZKeDdtkyl&4>H=e)Fq@}$UffPt1#cjYZg zd%O%xpg4~brEr>AnKT)kF@`cdX4tMlZ#Vk!l1Xz!G970p`Gkv^lk-|>jmt0W5Wu6woGf?hNA zXO2?BG)<{`NsYAY#3|L^x*=rS7uWU~s<*UhTC8AYc#lGP-=Aw1I)@y(<` znQb^nL~$rlDbsdAc4nc#{+$_;Z4iY;Pi0i9Q;>ZB3+IjWLg_r40-Fso^xF<*_s7Tj zujFrMH{vW3PmCndjQIscnQE%`Qj|E2kidi#c&PcWIMyH+e#7!l`<$_)*pDP$!49pY6w!bN)j8~A1wV%gIakf+vA04 zV)_Q=QMPSj6$M2Ar#KhhxsbZUOq3nZHh8m0?Fr}I6N(Fk zkhXM(f57yOa8vn^97J+g9ISPa=-**6^8ZX&g=z+m&6~x<1>)MyM&tpbWhSf8#+Pcd4rVK#)NSw>1eLKHTO z44A@sc_}Ypi#ggFRbDRFV(IhOnRU&XPrQYh9`mVMo-^U$&AwsXooSRUFqJ7)XUXCK zFpt;gJ}9QTN9xy9$=3OnRkjgUuQZ`X)!}LBm~WUIEKuK-Z%}f?2?+MKucWU<3)>9G zxsz~2pHut1AmH<@66;LdCB9+dSpojE4ggrYS?%icv*Rpi?G0Q($^`(g<1&Z){O_5B$@f#;I2-+Qa1P$a@=u-vOY5vqo z|6G67X;*A|V86ZET9OpFB&02twZtc2K}~ASoQpM_p{vJ{-XvA8UmQa4Ed%fS{D@g( zr_aY0gKw*=2SIGznXXKFo$r0x3)@bq8@4od^U(L0-jvTsK@qYOWX?2G_>N+?;r{TU2{M>V0zid zB_Zu?WSnRl@k?oE*gsgv;jH@+ z-}BDGyR-ls7$dz{e( ztv7lI2|OxNkLD4zc3xGA`!d7LiSdOys4H!8aA(_c0Nm*uLjS4TW%Z3v>am1nwQ_lI zIs85Uufd;cv-(4wi(Js;QsL#|qdv)n;r_?puaK*1>zTC@d=#sK+q1YF_Q(5B%%3TtI8&bNs_e8vIb;oc|Rk`F~u?|A?jj{c={?{Env{mW#q@8 z)#WEgt4B6b&X2?o3=b`ilz;)-h$t4;hsxPDo-%5C(7m#c9tZF-U`vcx0HnVtf_X(}4Tg}4wx(=y!@T7{)4;I_p95mBhikg-|U9z35q`|!1+Zz@97 z(PFE5jCv|=t;^=(CLqYp)k90rV4ZSiFDAhD8YOCzv{}1WDuB?epORibW36);q(Aig ze27@D?lN-ZyjuB4GsebA$;+(KGiOtCe6Bfd%GKRty>dBS1GUe}MXgnu61UdgO=m1& zE(eECPF_%J-lU{;R)eQJot;;}Wch$-8Z|lxN*AAdc;bkpbD`W}F=Z}^Cy(SKyfF#+ zQSalA%JDDAu|77$M3E|kv==3vx~pFPw_<+9xgcE#oigh*>#QsA2}sTYO7uY(h@dhR zHJBi^bb-`1?<1cGFZJa8Akzs{H^$N<)5@hlXeKwt9hD5^5K&`pdHOI92p<7XhS?>| z(5h9KYctN|H+W~Xh2N4W+yjMyBm(AdewjX?PBuRU$^J zS#+U($K6rhFFzf z0q*kJ>B6xI1qAti?H@X@dxtB7_vT+Nj@PNxr?CSK#xqE6jh5S{`nH#zzvjOId=i1X zK(Yjl!7KF(73GXYLVkQA5irn|v-ArCqwi)CM8X&m!#@NQ3bqmQlfurU4qT`zl_m^C zhpk?mfVvy9L|)*+bW8&NY4lG$@0_PKfO9+~(zrbn?wECGi7472W{H&dRPZum^Qf z73C-TR6$#q>XJgYnUgV!WkbmRas;`TY#7CxPXIEGwT6VPBDKbyr#|C2M%q|7l#Ql< zuM}j=2{D+?SxT8?ZJn&Z%cRN8Gu@y(`zV(lfj1T%g44(d#-g&@O0FL5;I9=?bW>!M z%c3J&e}GThdean-<||jUh zlLP`UeKBhhrQ?HHjM3}kfO7Z=EKB%+rs*t+nuBoeuD2yk%n32SA?-s)4+DsTV7U&K zyKQO2b2*tQT}#((=#fkb%hkRkt^%tY&VK$hcs91+hld zJ%lgC!ooILC&|(Z9$zzk=Q0*%&l7wwyf%nv=`C=OcPjb|Q%@9*XkPGFrn+bxp?t^D z!_qO=e-;bnT)^0d|Ex9X&svN9S8M&R>5l*5Df2H@r2l)VfBO@LqeVw`Fz6TSwAt^I z5Wu6A>LNnF7hq4Ow=7D7LEDv3A))d5!M=lT3ConlFN`5eTQMexVVs* zH0tx-*R+-B@&Lp`0V4j6Uy=LJmLQRY_6tH4vnV{_am%kkv|{CYkF}4Wn6U+|9Xre$ zJkO;_=dtw`@aEs|^GlO-zvpp-73H;PYk}V5RrH83G4SVkRJ0YSluQa8pKejcqB4u~ z^9^lDR|?7vEo|jITtaIFI6}1;vTI6n(d0kDGQUJuk>>sqdd7#VBF;?_dM5i<+VMEq zc>habJK}_0eEsOkdwv48d43jKMnqYFMnYDU&c?vi#Fp+S)sxo1-oVJ*g!X^^K! z>z!G8?KfU{qOnLHhaEF4QRHgOpfvoo7@=FG(2ZefYJk- zZuA9ubiTTP9jw9Uzpx8FfJBFt+NNE9dTlM!$g$|lTD za4LMNxWhw8!AV(x;U`IV-(bK@iQ%#QSmq8D$YqLgt?V#|~% z;{ST}6aQbOoewMKYzZT@8|Qq z@9SNBu1UErolMjrhJW-Id&7y<0I<+Z-lr`IHMh1;M)n@g|hx_T-maO`s{Tuhax}EjC zS;1kdL*A3BW5YZXgD|0zm)g3_3vMs>5xgHUhQDl19lfQWMcfLTsw$)amgDs>bW*Oe+$UK^`ioL%F0Ua5vb%II+EGS>*I zw)AmqcWBZpWH&Aswk_FJT=J|^Gn=MfnDTIzMdnoRUB91MeW?e>+C)g3_FDN8rN$(? zL+kH!*L}rq`MK`KDt^v4nUJg3Ce-`IW0Ph0?|}Puq5WIS_a7iEO;~mGQqqo=Ey;ND zhBXA^$ZrCc#&0}dMA&@)&TCq5PMzgJPafZCg-6$R zRqJ2+_t+dGUAY@~xPzU3`od7-(8nnuMfM-4#u`Q~`l-CUGC7u*^5VwH`ot;Ck#R1% zRr%?;!NrB$w^}NW=GGR}m!3a9bh#wXrq?fF7j-IS?E_!GaD3KYzcXhCUHhjEl-6b# zCmIF#4y@HN=^#uIz zRFl8D)Ri1<(Kr~Hoi_MtXWP8^AyTKxi1)ew88bV{*Ok8w8YLXBFW0sRJ<(vU{$ym| zz)feLQbz3k;_}2_{-bW`h~t&2$ObtlbS?k2k|5Kbu?FZLDMTVW_Z6p#A)c)`3DD?a*hxHS2Zj zcIiebfsINfWvwY7Z{YOlIQ61b`j=%6{>MPs+`()Q{wq0z0?|jwRN(1IrMQsj40BHx zvBC_Xfcr;55&}MeoP_@#nz$avCh%FJfE5NNAE~fW@L7~f8Y=?Wno31128EYOK8+O! zc4Vaj-DCsB6CPH$?pQQVbb_(tg^x{$STYM_WKLtrh-_-Hq-M%Ubpt6$mCHY!B{ISD zz}grIo^bNVDw4={SA2*nDNq5`e@ZO5r4TbQpHM)~qfD9!s0h(Jf>vYd;I~j<2fD4)_>ctbwNX6S*8>i^*4 zYKI5<4}d;hM!!N|A$@eg09J|HV;!UUVIau_I~dxZp#?a3u0G)pts6GKdCNk>FKxdh_`Xu!>zO3Kv?u+W6cYJPy!@=PuY868>3|Zg} z$7galV~M`d!q(`I{;CJsq6G9>W0}H6gVY`q7S@9s8ak1r{>}*Q0JyH&f!f8(NZxhC zkn|KS64r^A1fniFel2KkxYByk%erCx9UgFLI)`yuA)X z8SU?6kj!numPNCAj}>1ipax(t{%rxU;6`(Nqt$~Z4~76TQ$9d8l`yJ}rniII%HbH= zlS_7o!qB{55at^>N!Voer%)`KMh9Yd@Z?~nc19*hs)NGN954`O9zA&&vJHbm&|D@E za(&z6A=3NfC;>I)hlI@ulP8E@W-ziGe{iCf_mHvWGldxw8{ng-hI({EtOdALnD9zG ze)fU?I(DNt)Bzdd9Cs^>!|+2!xv1SK=I zJ+y_;=Sq-zqD~GKy@{5(my&aPgFfGY&_mayR_)?dF_^Fwc-n!UAG+fQQGfjWE-1MF YM{}PByk10KD_nuQ4E7Du?}+~TKh4V)`~Uy| literal 0 HcmV?d00001 diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties new file mode 100644 index 000000000..b74bf7fcd --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties @@ -0,0 +1,2 @@ +distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.6/apache-maven-3.8.6-bin.zip +wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/README.md b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/README.md new file mode 100644 index 000000000..f7b98d5cb --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/README.md @@ -0,0 +1,73 @@ +# QUARTZ-MANAGER REST API + +This is a multi-module maven project. + +## PROJECT STRUCTURE +* `quartz-parent/quartz-manager-starter-api` is the core library must be imported to get the Quartz-Manager API and to interact with the [Quartz Scheduler](http://www.quartz-scheduler.org/) via REST. +* `quartz-parent/quartz-manager-starter-security` is a library that can be imported to get an out-of-the-box security layer over the quartz-manager API. +* `quartz-parent/quartz-manager-starter-persistence` is a library that can be imported to persist the Quartz Scheduler managed by Quartz Manager, in a Postgresql database. +* `quartz-parent/quartz-manager-starter-ui` is a maven module with all the logic to build and package the angular frontend in a webjar. +* `quartz-parent/quartz-manager-web-showcase` is nothing but a simple backend which imports the above libraries, helpful to develop with a frontend started locally with the webpack dev server. +* `quartz-frontend` is the angular single-page-app that interacts with the Quartz Manager API. + +## PROJECT DETAILS +**[requirements]** Make sure you have installed +* [JDK](https://java.com/download/) 9 or greater +* [Maven](https://maven.apache.org/) 3.6 or greater +* [npm](https://www.npmjs.com/get-npm) 16 or greater , [node](https://nodejs.org) 8 or greater +* [angular-cli](https://cli.angular.io/) + +To build&run Quartz Manager locally in your machine: + +``` +#CLONE REPOSITORY +git clone https://github.com/fabioformosa/quartz-manager.git + +# START QUARTZ-MANAGER-WEB +cd quartz-manager/quartz-parent +mvn install +cd quartz-manager/quartz-parent/quartz-manager-web-showcase +mvn spring-boot:run + +# START QUARTZ-MANAGER-FRONTEND +cd quartz-manager/quartz-manager-frontend +npm install +npm start + +``` + +1. Open browser at [http://localhost:4200](http://localhost:4200) +1. If you've imported `quartz-manager-security-starter` log in with **default credentials**: `admin/admin` + +If you are not confident with maven CLI, you can start it by your IDE. For more details [spring boot ref.](http://docs.spring.io/spring-boot/docs/current/reference/html/using-boot-running-your-application.html) + + +## HOW TO RUN YOUR SCHEDULED JOB +By default, `quartz-manager-web-showcase` executes the dummy job that logs "hello world!". +Replace the dummy job (class: `it.fabioformosa.quartzmanager.jobs.SampleJob`) with yours. Follow these steps: + +1. Extend the super class `it.fabioformosa.quartzmanager.jobs.AbstractLoggingJob` +1. set property `quartz-manager.jobClassPackages` with the list of the java packages (comma separated) containing the job class eligible for Quartz Manager + +## HOW TO CHANGE SETTINGS +* Num of Threads: `/quartz-manager-parent/quartz-manager-web/src/main/resources/managed-quartz.properties` +* Credentials: To change admin's password, set app property (or ENV var) `quartz-manager.security.accounts.in-memory.users[0].passord` +* quartz-manager backend context path (default `/quartz-manager`) and port (default `8080`): `/quartz-manager/src/main/resources/application.properties` + +## Tech Overview + +**Backend Stack** Java 9, Spring Boot 2.5.6 (Spring MVC 5.3.12, Spring Security 5.5.3), Quartz Scheduler 2.3.2 + +**Frontend** Angular 14.2.12, Web-Socket (stompjs 2.3.3) + +**Style** Angular Material 14, FontAwesome 5 + +Starting from Quartz Manager v2.x.x, the new structure of project is: +* Multi-module maven project: REST API backend +* Angular 14: Single Page Application frontend + +(The first version of quartz manager was a monolithic backend that provided also frontend developed with angularjs 1.6.x. You can find it at the branch 1.x.x) + +## Contributes + +Every contribution is welcome. Open a github's issue, let's discuss about the new features and how to implement them. diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/lombok.config b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/lombok.config new file mode 100644 index 000000000..df71bb6a0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/lombok.config @@ -0,0 +1,2 @@ +config.stopBubbling = true +lombok.addLombokGeneratedAnnotation = true diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw new file mode 100644 index 000000000..8a8fb2282 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw @@ -0,0 +1,316 @@ +#!/bin/sh +# ---------------------------------------------------------------------------- +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# https://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +# ---------------------------------------------------------------------------- + +# ---------------------------------------------------------------------------- +# Maven Start Up Batch script +# +# Required ENV vars: +# ------------------ +# JAVA_HOME - location of a JDK home dir +# +# Optional ENV vars +# ----------------- +# M2_HOME - location of maven2's installed home dir +# MAVEN_OPTS - parameters passed to the Java VM when running Maven +# e.g. to debug Maven itself, use +# set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +# MAVEN_SKIP_RC - flag to disable loading of mavenrc files +# ---------------------------------------------------------------------------- + +if [ -z "$MAVEN_SKIP_RC" ] ; then + + if [ -f /usr/local/etc/mavenrc ] ; then + . /usr/local/etc/mavenrc + fi + + if [ -f /etc/mavenrc ] ; then + . /etc/mavenrc + fi + + if [ -f "$HOME/.mavenrc" ] ; then + . "$HOME/.mavenrc" + fi + +fi + +# OS specific support. $var _must_ be set to either true or false. +cygwin=false; +darwin=false; +mingw=false +case "`uname`" in + CYGWIN*) cygwin=true ;; + MINGW*) mingw=true;; + Darwin*) darwin=true + # Use /usr/libexec/java_home if available, otherwise fall back to /Library/Java/Home + # See https://developer.apple.com/library/mac/qa/qa1170/_index.html + if [ -z "$JAVA_HOME" ]; then + if [ -x "/usr/libexec/java_home" ]; then + export JAVA_HOME="`/usr/libexec/java_home`" + else + export JAVA_HOME="/Library/Java/Home" + fi + fi + ;; +esac + +if [ -z "$JAVA_HOME" ] ; then + if [ -r /etc/gentoo-release ] ; then + JAVA_HOME=`java-config --jre-home` + fi +fi + +if [ -z "$M2_HOME" ] ; then + ## resolve links - $0 may be a link to maven's home + PRG="$0" + + # need this for relative symlinks + while [ -h "$PRG" ] ; do + ls=`ls -ld "$PRG"` + link=`expr "$ls" : '.*-> \(.*\)$'` + if expr "$link" : '/.*' > /dev/null; then + PRG="$link" + else + PRG="`dirname "$PRG"`/$link" + fi + done + + saveddir=`pwd` + + M2_HOME=`dirname "$PRG"`/.. + + # make it fully qualified + M2_HOME=`cd "$M2_HOME" && pwd` + + cd "$saveddir" + # echo Using m2 at $M2_HOME +fi + +# For Cygwin, ensure paths are in UNIX format before anything is touched +if $cygwin ; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --unix "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --unix "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --unix "$CLASSPATH"` +fi + +# For Mingw, ensure paths are in UNIX format before anything is touched +if $mingw ; then + [ -n "$M2_HOME" ] && + M2_HOME="`(cd "$M2_HOME"; pwd)`" + [ -n "$JAVA_HOME" ] && + JAVA_HOME="`(cd "$JAVA_HOME"; pwd)`" +fi + +if [ -z "$JAVA_HOME" ]; then + javaExecutable="`which javac`" + if [ -n "$javaExecutable" ] && ! [ "`expr \"$javaExecutable\" : '\([^ ]*\)'`" = "no" ]; then + # readlink(1) is not available as standard on Solaris 10. + readLink=`which readlink` + if [ ! `expr "$readLink" : '\([^ ]*\)'` = "no" ]; then + if $darwin ; then + javaHome="`dirname \"$javaExecutable\"`" + javaExecutable="`cd \"$javaHome\" && pwd -P`/javac" + else + javaExecutable="`readlink -f \"$javaExecutable\"`" + fi + javaHome="`dirname \"$javaExecutable\"`" + javaHome=`expr "$javaHome" : '\(.*\)/bin'` + JAVA_HOME="$javaHome" + export JAVA_HOME + fi + fi +fi + +if [ -z "$JAVACMD" ] ; then + if [ -n "$JAVA_HOME" ] ; then + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then + # IBM's JDK on AIX uses strange locations for the executables + JAVACMD="$JAVA_HOME/jre/sh/java" + else + JAVACMD="$JAVA_HOME/bin/java" + fi + else + JAVACMD="`\\unset -f command; \\command -v java`" + fi +fi + +if [ ! -x "$JAVACMD" ] ; then + echo "Error: JAVA_HOME is not defined correctly." >&2 + echo " We cannot execute $JAVACMD" >&2 + exit 1 +fi + +if [ -z "$JAVA_HOME" ] ; then + echo "Warning: JAVA_HOME environment variable is not set." +fi + +CLASSWORLDS_LAUNCHER=org.codehaus.plexus.classworlds.launcher.Launcher + +# traverses directory structure from process work directory to filesystem root +# first directory with .mvn subdirectory is considered project base directory +find_maven_basedir() { + + if [ -z "$1" ] + then + echo "Path not specified to find_maven_basedir" + return 1 + fi + + basedir="$1" + wdir="$1" + while [ "$wdir" != '/' ] ; do + if [ -d "$wdir"/.mvn ] ; then + basedir=$wdir + break + fi + # workaround for JBEAP-8937 (on Solaris 10/Sparc) + if [ -d "${wdir}" ]; then + wdir=`cd "$wdir/.."; pwd` + fi + # end of workaround + done + echo "${basedir}" +} + +# concatenates all lines of a file +concat_lines() { + if [ -f "$1" ]; then + echo "$(tr -s '\n' ' ' < "$1")" + fi +} + +BASE_DIR=`find_maven_basedir "$(pwd)"` +if [ -z "$BASE_DIR" ]; then + exit 1; +fi + +########################################################################################## +# Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +# This allows using the maven wrapper in projects that prohibit checking in binary data. +########################################################################################## +if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found .mvn/wrapper/maven-wrapper.jar" + fi +else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Couldn't find .mvn/wrapper/maven-wrapper.jar, downloading it ..." + fi + if [ -n "$MVNW_REPOURL" ]; then + jarUrl="$MVNW_REPOURL/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + else + jarUrl="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + fi + while IFS="=" read key value; do + case "$key" in (wrapperUrl) jarUrl="$value"; break ;; + esac + done < "$BASE_DIR/.mvn/wrapper/maven-wrapper.properties" + if [ "$MVNW_VERBOSE" = true ]; then + echo "Downloading from: $jarUrl" + fi + wrapperJarPath="$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" + if $cygwin; then + wrapperJarPath=`cygpath --path --windows "$wrapperJarPath"` + fi + + if command -v wget > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found wget ... using wget" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + wget "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + else + wget --http-user=$MVNW_USERNAME --http-password=$MVNW_PASSWORD "$jarUrl" -O "$wrapperJarPath" || rm -f "$wrapperJarPath" + fi + elif command -v curl > /dev/null; then + if [ "$MVNW_VERBOSE" = true ]; then + echo "Found curl ... using curl" + fi + if [ -z "$MVNW_USERNAME" ] || [ -z "$MVNW_PASSWORD" ]; then + curl -o "$wrapperJarPath" "$jarUrl" -f + else + curl --user $MVNW_USERNAME:$MVNW_PASSWORD -o "$wrapperJarPath" "$jarUrl" -f + fi + + else + if [ "$MVNW_VERBOSE" = true ]; then + echo "Falling back to using Java to download" + fi + javaClass="$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.java" + # For Cygwin, switch paths to Windows format before running javac + if $cygwin; then + javaClass=`cygpath --path --windows "$javaClass"` + fi + if [ -e "$javaClass" ]; then + if [ ! -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Compiling MavenWrapperDownloader.java ..." + fi + # Compiling the Java class + ("$JAVA_HOME/bin/javac" "$javaClass") + fi + if [ -e "$BASE_DIR/.mvn/wrapper/MavenWrapperDownloader.class" ]; then + # Running the downloader + if [ "$MVNW_VERBOSE" = true ]; then + echo " - Running MavenWrapperDownloader.java ..." + fi + ("$JAVA_HOME/bin/java" -cp .mvn/wrapper MavenWrapperDownloader "$MAVEN_PROJECTBASEDIR") + fi + fi + fi +fi +########################################################################################## +# End of extension +########################################################################################## + +export MAVEN_PROJECTBASEDIR=${MAVEN_BASEDIR:-"$BASE_DIR"} +if [ "$MVNW_VERBOSE" = true ]; then + echo $MAVEN_PROJECTBASEDIR +fi +MAVEN_OPTS="$(concat_lines "$MAVEN_PROJECTBASEDIR/.mvn/jvm.config") $MAVEN_OPTS" + +# For Cygwin, switch paths to Windows format before running java +if $cygwin; then + [ -n "$M2_HOME" ] && + M2_HOME=`cygpath --path --windows "$M2_HOME"` + [ -n "$JAVA_HOME" ] && + JAVA_HOME=`cygpath --path --windows "$JAVA_HOME"` + [ -n "$CLASSPATH" ] && + CLASSPATH=`cygpath --path --windows "$CLASSPATH"` + [ -n "$MAVEN_PROJECTBASEDIR" ] && + MAVEN_PROJECTBASEDIR=`cygpath --path --windows "$MAVEN_PROJECTBASEDIR"` +fi + +# Provide a "standardized" way to retrieve the CLI args that will +# work with both Windows and non-Windows executions. +MAVEN_CMD_LINE_ARGS="$MAVEN_CONFIG $@" +export MAVEN_CMD_LINE_ARGS + +WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +exec "$JAVACMD" \ + $MAVEN_OPTS \ + $MAVEN_DEBUG_OPTS \ + -classpath "$MAVEN_PROJECTBASEDIR/.mvn/wrapper/maven-wrapper.jar" \ + "-Dmaven.home=${M2_HOME}" \ + "-Dmaven.multiModuleProjectDirectory=${MAVEN_PROJECTBASEDIR}" \ + ${WRAPPER_LAUNCHER} $MAVEN_CONFIG "$@" diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw.cmd b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw.cmd new file mode 100644 index 000000000..1d8ab018e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw.cmd @@ -0,0 +1,188 @@ +@REM ---------------------------------------------------------------------------- +@REM Licensed to the Apache Software Foundation (ASF) under one +@REM or more contributor license agreements. See the NOTICE file +@REM distributed with this work for additional information +@REM regarding copyright ownership. The ASF licenses this file +@REM to you under the Apache License, Version 2.0 (the +@REM "License"); you may not use this file except in compliance +@REM with the License. You may obtain a copy of the License at +@REM +@REM https://www.apache.org/licenses/LICENSE-2.0 +@REM +@REM Unless required by applicable law or agreed to in writing, +@REM software distributed under the License is distributed on an +@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +@REM KIND, either express or implied. See the License for the +@REM specific language governing permissions and limitations +@REM under the License. +@REM ---------------------------------------------------------------------------- + +@REM ---------------------------------------------------------------------------- +@REM Maven Start Up Batch script +@REM +@REM Required ENV vars: +@REM JAVA_HOME - location of a JDK home dir +@REM +@REM Optional ENV vars +@REM M2_HOME - location of maven2's installed home dir +@REM MAVEN_BATCH_ECHO - set to 'on' to enable the echoing of the batch commands +@REM MAVEN_BATCH_PAUSE - set to 'on' to wait for a keystroke before ending +@REM MAVEN_OPTS - parameters passed to the Java VM when running Maven +@REM e.g. to debug Maven itself, use +@REM set MAVEN_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=8000 +@REM MAVEN_SKIP_RC - flag to disable loading of mavenrc files +@REM ---------------------------------------------------------------------------- + +@REM Begin all REM lines with '@' in case MAVEN_BATCH_ECHO is 'on' +@echo off +@REM set title of command window +title %0 +@REM enable echoing by setting MAVEN_BATCH_ECHO to 'on' +@if "%MAVEN_BATCH_ECHO%" == "on" echo %MAVEN_BATCH_ECHO% + +@REM set %HOME% to equivalent of $HOME +if "%HOME%" == "" (set "HOME=%HOMEDRIVE%%HOMEPATH%") + +@REM Execute a user defined script before this one +if not "%MAVEN_SKIP_RC%" == "" goto skipRcPre +@REM check for pre script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_pre.bat" call "%USERPROFILE%\mavenrc_pre.bat" %* +if exist "%USERPROFILE%\mavenrc_pre.cmd" call "%USERPROFILE%\mavenrc_pre.cmd" %* +:skipRcPre + +@setlocal + +set ERROR_CODE=0 + +@REM To isolate internal variables from possible post scripts, we use another setlocal +@setlocal + +@REM ==== START VALIDATION ==== +if not "%JAVA_HOME%" == "" goto OkJHome + +echo. +echo Error: JAVA_HOME not found in your environment. >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +:OkJHome +if exist "%JAVA_HOME%\bin\java.exe" goto init + +echo. +echo Error: JAVA_HOME is set to an invalid directory. >&2 +echo JAVA_HOME = "%JAVA_HOME%" >&2 +echo Please set the JAVA_HOME variable in your environment to match the >&2 +echo location of your Java installation. >&2 +echo. +goto error + +@REM ==== END VALIDATION ==== + +:init + +@REM Find the project base dir, i.e. the directory that contains the folder ".mvn". +@REM Fallback to current working directory if not found. + +set MAVEN_PROJECTBASEDIR=%MAVEN_BASEDIR% +IF NOT "%MAVEN_PROJECTBASEDIR%"=="" goto endDetectBaseDir + +set EXEC_DIR=%CD% +set WDIR=%EXEC_DIR% +:findBaseDir +IF EXIST "%WDIR%"\.mvn goto baseDirFound +cd .. +IF "%WDIR%"=="%CD%" goto baseDirNotFound +set WDIR=%CD% +goto findBaseDir + +:baseDirFound +set MAVEN_PROJECTBASEDIR=%WDIR% +cd "%EXEC_DIR%" +goto endDetectBaseDir + +:baseDirNotFound +set MAVEN_PROJECTBASEDIR=%EXEC_DIR% +cd "%EXEC_DIR%" + +:endDetectBaseDir + +IF NOT EXIST "%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config" goto endReadAdditionalConfig + +@setlocal EnableExtensions EnableDelayedExpansion +for /F "usebackq delims=" %%a in ("%MAVEN_PROJECTBASEDIR%\.mvn\jvm.config") do set JVM_CONFIG_MAVEN_PROPS=!JVM_CONFIG_MAVEN_PROPS! %%a +@endlocal & set JVM_CONFIG_MAVEN_PROPS=%JVM_CONFIG_MAVEN_PROPS% + +:endReadAdditionalConfig + +SET MAVEN_JAVA_EXE="%JAVA_HOME%\bin\java.exe" +set WRAPPER_JAR="%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.jar" +set WRAPPER_LAUNCHER=org.apache.maven.wrapper.MavenWrapperMain + +set DOWNLOAD_URL="https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + +FOR /F "usebackq tokens=1,2 delims==" %%A IN ("%MAVEN_PROJECTBASEDIR%\.mvn\wrapper\maven-wrapper.properties") DO ( + IF "%%A"=="wrapperUrl" SET DOWNLOAD_URL=%%B +) + +@REM Extension to allow automatically downloading the maven-wrapper.jar from Maven-central +@REM This allows using the maven wrapper in projects that prohibit checking in binary data. +if exist %WRAPPER_JAR% ( + if "%MVNW_VERBOSE%" == "true" ( + echo Found %WRAPPER_JAR% + ) +) else ( + if not "%MVNW_REPOURL%" == "" ( + SET DOWNLOAD_URL="%MVNW_REPOURL%/org/apache/maven/wrapper/maven-wrapper/3.1.0/maven-wrapper-3.1.0.jar" + ) + if "%MVNW_VERBOSE%" == "true" ( + echo Couldn't find %WRAPPER_JAR%, downloading it ... + echo Downloading from: %DOWNLOAD_URL% + ) + + powershell -Command "&{"^ + "$webclient = new-object System.Net.WebClient;"^ + "if (-not ([string]::IsNullOrEmpty('%MVNW_USERNAME%') -and [string]::IsNullOrEmpty('%MVNW_PASSWORD%'))) {"^ + "$webclient.Credentials = new-object System.Net.NetworkCredential('%MVNW_USERNAME%', '%MVNW_PASSWORD%');"^ + "}"^ + "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12; $webclient.DownloadFile('%DOWNLOAD_URL%', '%WRAPPER_JAR%')"^ + "}" + if "%MVNW_VERBOSE%" == "true" ( + echo Finished downloading %WRAPPER_JAR% + ) +) +@REM End of extension + +@REM Provide a "standardized" way to retrieve the CLI args that will +@REM work with both Windows and non-Windows executions. +set MAVEN_CMD_LINE_ARGS=%* + +%MAVEN_JAVA_EXE% ^ + %JVM_CONFIG_MAVEN_PROPS% ^ + %MAVEN_OPTS% ^ + %MAVEN_DEBUG_OPTS% ^ + -classpath %WRAPPER_JAR% ^ + "-Dmaven.multiModuleProjectDirectory=%MAVEN_PROJECTBASEDIR%" ^ + %WRAPPER_LAUNCHER% %MAVEN_CONFIG% %* +if ERRORLEVEL 1 goto error +goto end + +:error +set ERROR_CODE=1 + +:end +@endlocal & set ERROR_CODE=%ERROR_CODE% + +if not "%MAVEN_SKIP_RC%"=="" goto skipRcPost +@REM check for post script, once with legacy .bat ending and once with .cmd ending +if exist "%USERPROFILE%\mavenrc_post.bat" call "%USERPROFILE%\mavenrc_post.bat" +if exist "%USERPROFILE%\mavenrc_post.cmd" call "%USERPROFILE%\mavenrc_post.cmd" +:skipRcPost + +@REM pause the script if MAVEN_BATCH_PAUSE is set to 'on' +if "%MAVEN_BATCH_PAUSE%"=="on" pause + +if "%MAVEN_TERMINATE_CMD%"=="on" exit %ERROR_CODE% + +cmd /C exit /B %ERROR_CODE% diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/pom.xml new file mode 100644 index 000000000..b23625bb4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/pom.xml @@ -0,0 +1,300 @@ + + 4.0.0 + + + org.springframework.boot + spring-boot-starter-parent + 2.5.6 + + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + pom + + Quartz Manager + API and UI Manager for Quartz Scheduler + + https://github.com/fabioformosa/quartz-manager + + + + Apache License 2.0 + https://github.com/fabioformosa/quartz-manager/blob/master/LICENSE + + + + + scm:git:git://github.com/fabioformosa/quartz-manager.git + scm:git:git@github.com:fabioformosa/quartz-manager.git + https://github.com/fabioformosa/quartz-manager + HEAD + + + + + Fabio Formosa + https://github.com/fabioformosa + + + + + 9 + UTF-8 + 2.22.0 + 2.22.0 + 0.8.8 + 3.4.1 + 1.6.7 + 2.5.3 + 3.0.1 + fabioformosa + https://sonarcloud.io + + **/SpringApplicationTest.java, **/QuartManagerApplicationTests.java, **/MisfireTestJob.java + + + OpenApiConfig.java, + **/SecurityOpenApiConfig.java, **/QuartzModuleProperties.java, **/QuartzManagerDemoApplication.java, + **/ServletInitializer.java, **/SessionController.java, **/HealthCheckController.java, + **/WebShowcaseOpenApiConfig.java, **/MisfireTestJob.java, **/PersistenceConfig.java, + **/QuartzManagerSecurityConfig.java + + + + + quartz-manager-starter-api + quartz-manager-starter-ui + quartz-manager-starter-security + quartz-manager-web-showcase + quartz-manager-starter-persistence + quartz-manager-common + + + + + + it.fabioformosa.quartz-manager + quartz-manager-common + 4.0.9 + + + it.fabioformosa.quartz-manager + quartz-manager-starter-api + 4.0.9 + + + it.fabioformosa.quartz-manager + quartz-manager-starter-security + 4.0.9 + + + it.fabioformosa.quartz-manager + quartz-manager-starter-persistence + 4.0.9 + + + it.fabioformosa.quartz-manager + quartz-manager-starter-ui + 4.0.9 + + + + + + + org.junit.jupiter + junit-jupiter + 5.7.2 + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + ${java.version} + ${java.version} + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-surefire-plugin + ${maven-surefire-plugin.version} + + + org.apache.maven.plugins + maven-failsafe-plugin + ${maven-failsafe-plugin.version} + + + org.jacoco + jacoco-maven-plugin + ${jacoco-maven-plugin.version} + + + **/OpenApiConfig.class + **/SecurityOpenApiConfig.class + **/QuartzModuleProperties.class + **/QuartzManagerDemoApplication.class + **/ServletInitializer.class + **/SessionController.class + **/HealthCheckController.class + **/WebShowcaseOpenApiConfig.class + **/MisfireTestJob.class + + + + + + prepare-agent + + + + generate-code-coverage-report + test + + report + + + + report-aggregate + + report-aggregate + + verify + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.2.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-release-plugin + ${maven-release-plugin.version} + + clean + v@{project.version} + build-webjar + true + false + forked-path + true + -Dgpg.passphrase=${gpg.passphrase} + + + + org.apache.maven.scm + maven-scm-provider-gitexe + 1.9.5 + + + + + org.apache.maven.plugins + maven-javadoc-plugin + ${maven-javadoc-plugin.version} + + + attach-javadocs + + jar + + + false + none + + + + + + + + + + + release-maven-central + + + performRelease + true + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + ${nexus-staging-maven-plugin.version} + true + + ossrh + https://oss.sonatype.org/ + true + + + + org.apache.maven.plugins + maven-gpg-plugin + ${maven-gpg-plugin.version} + + + --pinentry-mode + loopback + + + + + sign-artifacts + verify + + sign + + + + + + + + + deploy-github + + + github + GitHub Packages + https://maven.pkg.github.com/fabioformosa/quartz-manager + + + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml new file mode 100644 index 000000000..8e18ae9cb --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml @@ -0,0 +1,32 @@ + + 4.0.0 + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + quartz-manager-common + + + + org.projectlombok + lombok + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + org.junit.platform + junit-platform-launcher + test + + + org.junit.jupiter + junit-jupiter-engine + test + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java new file mode 100644 index 000000000..a0091ae42 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java @@ -0,0 +1,9 @@ +package it.fabioformosa.quartzmanager.api.common.config; + +public class OpenAPIConfigConsts { + + private OpenAPIConfigConsts(){ + } + public static final String QUARTZ_MANAGER_SEC_OAS_SCHEMA = "quartz-manager-auth"; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java new file mode 100644 index 000000000..2652ca565 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java @@ -0,0 +1,16 @@ +package it.fabioformosa.quartzmanager.api.common.config; + +public class QuartzManagerPaths { + + private QuartzManagerPaths(){ + } + + public static final String QUARTZ_MANAGER_BASE_CONTEXT_PATH = "/quartz-manager"; + public static final String WEBJAR_PATH = "/quartz-manager-ui"; + + public static final String QUARTZ_MANAGER_AUTH_PATH = QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/auth"; + public static final String QUARTZ_MANAGER_LOGIN_PATH = QUARTZ_MANAGER_AUTH_PATH + "/login"; + public static final String QUARTZ_MANAGER_LOGOUT_PATH = QUARTZ_MANAGER_AUTH_PATH + "/logout"; + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java new file mode 100644 index 000000000..68932ae5d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java @@ -0,0 +1,14 @@ +package it.fabioformosa.quartzmanager.api.common.properties; + +import lombok.Data; +import lombok.Generated; + +import java.util.Properties; + +@Data +@Generated +public class QuartzModuleProperties { + + private Properties properties = new Properties(); + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java new file mode 100644 index 000000000..247c22151 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java @@ -0,0 +1,26 @@ +package it.fabioformosa.quartzmanager.api.common.utils; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.time.temporal.ChronoUnit; +import java.util.Date; + +public class DateUtils { + + private DateUtils(){ + } + + public static Date fromLocalDateTimeToDate(LocalDateTime localDateTime){ + return Date.from(localDateTime.atZone(ZoneId.systemDefault()).toInstant().truncatedTo(ChronoUnit.MILLIS)); + } + + public static LocalDateTime fromDateToLocalDateTime(Date date) { + return date.toInstant().atZone(ZoneId.systemDefault()).toLocalDateTime().truncatedTo(ChronoUnit.MILLIS); + } + + public static Date addHoursToNow(long hours){ + return DateUtils.fromLocalDateTimeToDate(LocalDateTime.now().plus(Duration.ofHours(hours))); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java new file mode 100644 index 000000000..4fd255eaf --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java @@ -0,0 +1,53 @@ +package it.fabioformosa.quartzmanager.api.common.utils; + +import lombok.Getter; + +import java.util.function.Function; + +/** + * + * @param success type + */ +@Getter +public class Try { + + private final Throwable failure; + private final R success; + + private Try(Throwable failure, R success) { + this.failure = failure; + this.success = success; + } + + public R getSuccess() { + return success; + } + + private static Try success(R r){ + return new Try<>(null, r); + } + + private static Try failure(Throwable e){ + return new Try<>(e, null); + } + + public static Function> with(CheckedFunction checkedFunction){ + return t -> { + try { + return Try.success(checkedFunction.apply(t)); + } catch (java.lang.Exception e) { + return Try.failure(e); + } + }; + } + + public static Function sneakyThrow(CheckedFunction checkedFunction){ + return t -> Try.with(checkedFunction).apply(t).getSuccess(); + } + + @FunctionalInterface + public static interface CheckedFunction { + R apply(T t) throws java.lang.Exception; + } +} + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java new file mode 100644 index 000000000..8e08efdb4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java @@ -0,0 +1,37 @@ +package it.fabioformosa.quartzmanager.api.common.utils; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.time.LocalDateTime; +import java.time.temporal.ChronoUnit; +import java.util.Calendar; +import java.util.Date; + +class DateUtilsTest { + + @Test + void givenALocaleDatetime_whenTheConversionIsCalled_shouldGetADate(){ + LocalDateTime originalLocalDateTime = LocalDateTime.now().truncatedTo(ChronoUnit.MILLIS); + Date date = DateUtils.fromLocalDateTimeToDate(originalLocalDateTime); + LocalDateTime convertedLocalDateTime = DateUtils.fromDateToLocalDateTime(date); + Assertions.assertThat(convertedLocalDateTime).isEqualTo(originalLocalDateTime); + } + + @Test + void givenALocalDatetime_whenTheAddHoursToNowIsCalled_shouldReturnAFutureDate(){ + Calendar calendar = Calendar.getInstance(); + Date futureDate = DateUtils.addHoursToNow(1); + + calendar.add(Calendar.HOUR_OF_DAY, 1); + calendar.add(Calendar.MINUTE, -1); + Date hourStartingAround = calendar.getTime(); + + calendar.add(Calendar.HOUR_OF_DAY, 1); + calendar.add(Calendar.MINUTE, 2); + Date hourEndingAround = calendar.getTime(); + + Assertions.assertThat(futureDate).isBetween(hourStartingAround, hourEndingAround); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java new file mode 100644 index 000000000..be555a926 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java @@ -0,0 +1,42 @@ +package it.fabioformosa.quartzmanager.api.common.utils; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.Optional; + +class TryTest { + + String raiseExceptionIfHello(String greetings) throws Exception { + if("hello".equals(greetings)) + throw new Exception("hello"); + return greetings; + } + + @Test + void givenAFunctionWhichRaisesAnException_whenSneakyThrowIsCalled_thenItReturnsNull(){ + String hello = Optional.of("hello").map(Try.sneakyThrow(this::raiseExceptionIfHello)).orElse(null); + Assertions.assertThat(hello).isNull(); + } + + @Test + void givenAFunctionWhichDoesntRaiseAnException_whenSneakyThrowIsCalled_thenItReturnsTheValue(){ + String hello = Optional.of("not hello").map(Try.sneakyThrow(this::raiseExceptionIfHello)).orElse(null); + Assertions.assertThat(hello).isEqualTo("not hello"); + } + + @Test + void givenAFunctionWhichRaisesAnException_whenTryWithIsCalled_thenItReturnsAFailureObj(){ + Try aTry = Optional.of("hello").map(greet -> Try.with(this::raiseExceptionIfHello).apply(greet)).get(); + Assertions.assertThat(aTry.getFailure()).isNotNull(); + Assertions.assertThat(aTry.getFailure().getMessage()).isEqualTo("hello"); + } + + @Test + void givenAFunctionWhichDoesntRaiseAnException_whenTryWithIsCalled_thenItReturnsTheValue(){ + Try aTry = Optional.of("not hello").map(greet -> Try.with(this::raiseExceptionIfHello).apply(greet)).get(); + Assertions.assertThat(aTry.getFailure()).isNull(); + Assertions.assertThat(aTry.getSuccess()).isEqualTo("not hello"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore new file mode 100644 index 000000000..3b266738e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore @@ -0,0 +1,4 @@ +/.classpath +/.project +/target/** +.settings/** \ No newline at end of file diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml new file mode 100644 index 000000000..053f50b38 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml @@ -0,0 +1,150 @@ + + + 4.0.0 + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + + quartz-manager-starter-api + + Quartz Manager Starter API + REST API layer for your scheduler and triggered jobs, to be included in your spring webapp + + https://github.com/fabioformosa/quartz-manager + + ${basedir}/../.. + UTF-8 + UTF-8 + 1.5.12 + 9 + **/QuartManagerApplicationTests.java, **/OpenApiConfig.java + + + + + it.fabioformosa.quartz-manager + quartz-manager-common + + + + + org.springframework.boot + spring-boot-starter + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-devtools + runtime + true + + + org.springframework.boot + spring-boot-starter-websocket + + + org.springframework.boot + spring-boot-starter-validation + + + org.springframework + spring-context-support + + + org.springframework.boot + spring-boot-starter-test + test + + + + + com.fasterxml.jackson.core + jackson-annotations + + + com.h2database + h2 + runtime + + + org.projectlombok + lombok + provided + + + org.apache.commons + commons-lang3 + + + it.fabioformosa + metamorphosis-core + 3.0.0 + + + javax.validation + validation-api + 2.0.1.Final + + + org.hibernate.validator + hibernate-validator + 6.0.2.Final + + + org.glassfish + javax.el + 3.0.0 + + + org.reflections + reflections + 0.10.2 + + + org.yaml + snakeyaml + + + + + org.quartz-scheduler + quartz + + + commons-io + commons-io + 1.3.2 + + + + + org.springdoc + springdoc-openapi-ui + ${springdoc-openapi.version} + true + + + org.springdoc + springdoc-openapi-common + ${springdoc-openapi.version} + + + + + org.junit.platform + junit-platform-launcher + test + + + org.springframework + spring-tx + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java new file mode 100644 index 000000000..740aaf806 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java @@ -0,0 +1,9 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import it.fabioformosa.metamorphosis.core.EnableMetamorphosisConversions; +import org.springframework.context.annotation.Configuration; + +@Configuration +@EnableMetamorphosisConversions(basePackages = { "it.fabioformosa.quartzmanager" }) +public class ConversionConfig { +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java new file mode 100644 index 000000000..1eb92b748 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java @@ -0,0 +1,51 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import lombok.Generated; +import lombok.extern.slf4j.Slf4j; +import org.springdoc.core.GroupedOpenApi; +import org.springdoc.core.customizers.OpenApiCustomiser; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +import java.util.Optional; + + +@Slf4j +@Configuration +@Generated +public class OpenApiConfig { + + @ConditionalOnProperty(name = "quartz-manager.oas.enabled") + @ConditionalOnMissingBean + @Bean + public OpenAPI quartzManagerOpenAPI() { + log.info("No OpenAPI found! Quart Manager is creating it..."); + return new OpenAPI().info(new Info() + .title("QUARTZ MANAGER API") + .description("Quartz Manager - REST API") + .version("1.0.0") + .license(new License() + .name("Apache License 2.0") + .url("https://github.com/fabioformosa/quartz-manager/blob/master/LICENSE"))); + } + + @ConditionalOnProperty(name = "quartz-manager.oas.enabled") + @Bean + public GroupedOpenApi quartzManagerStoreOpenApi(@Autowired(required = false) @Qualifier("quartzManagerOpenApiCustomiser") Optional openApiCustomiser) { + String[] paths = {QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/**"}; + GroupedOpenApi.Builder groupedOpenApiBuilder = GroupedOpenApi.builder().group("quartz-manager").pathsToMatch(paths); + openApiCustomiser.ifPresent(groupedOpenApiBuilder::addOpenApiCustomiser); + return groupedOpenApiBuilder.build(); + } + + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java new file mode 100644 index 000000000..11e0a5288 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java @@ -0,0 +1,22 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import it.fabioformosa.quartzmanager.api.common.properties.QuartzModuleProperties; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@ConditionalOnProperty(name = "quartz-manager.quartz.enabled", matchIfMissing = true) +public class QuartzDefaultPropertiesConfig { + + protected static final String QUARTZ_MANAGER_SCHEDULER_DEFAULT_NAME = "quartz-manager-scheduler"; + + @Bean("quartzDefaultProperties") + public QuartzModuleProperties defaultApiQuartzProps() { + QuartzModuleProperties quartzModuleProperties = new QuartzModuleProperties(); + quartzModuleProperties.getProperties().setProperty("org.quartz.scheduler.instanceName", QUARTZ_MANAGER_SCHEDULER_DEFAULT_NAME); + quartzModuleProperties.getProperties().setProperty("org.quartz.threadPool.threadCount", "1"); + return quartzModuleProperties; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java new file mode 100644 index 000000000..2655835bc --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java @@ -0,0 +1,9 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; + +@ComponentScan(basePackages = {"it.fabioformosa.quartzmanager.api"}) +@Configuration +public class QuartzManagerApiConfig { +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java new file mode 100644 index 000000000..3d64b2567 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java @@ -0,0 +1,62 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import it.fabioformosa.quartzmanager.api.common.properties.QuartzModuleProperties; +import it.fabioformosa.quartzmanager.api.scheduler.AutowiringSpringBeanJobFactory; +import org.quartz.spi.JobFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.config.PropertiesFactoryBean; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.boot.autoconfigure.condition.ConditionalOnResource; +import org.springframework.context.ApplicationContext; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.io.ClassPathResource; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; + +import java.io.IOException; +import java.util.List; +import java.util.Properties; + +@Configuration +@ConditionalOnProperty(name = "quartz-manager.quartz.enabled", matchIfMissing = true) +public class SchedulerConfig { + + private final List quartzModuleProperties; + + @Autowired(required = false) + public SchedulerConfig(List quartzModuleProperties) { + this.quartzModuleProperties = quartzModuleProperties; + } + + @Bean(name = "quartzJobFactory") + public JobFactory jobFactory(ApplicationContext applicationContext) { + AutowiringSpringBeanJobFactory jobFactory = new AutowiringSpringBeanJobFactory(); + jobFactory.setApplicationContext(applicationContext); + return jobFactory; + } + + @ConditionalOnResource(resources = {"managed-quartz.properties"}) + @Bean(name = "ManagedQuartzProperties") + public Properties quartzProperties() throws IOException { + PropertiesFactoryBean propertiesFactoryBean = new PropertiesFactoryBean(); + propertiesFactoryBean.setLocation(new ClassPathResource("/managed-quartz.properties")); + propertiesFactoryBean.afterPropertiesSet(); + return propertiesFactoryBean.getObject(); + } + + @Bean(name = "quartzManagerScheduler") + public SchedulerFactoryBean schedulerFactoryBean(@Qualifier("quartzJobFactory") JobFactory jobFactory, + @Autowired(required = false) @Qualifier("ManagedQuartzProperties") Properties quartzProperties) { + SchedulerFactoryBean factory = new SchedulerFactoryBean(); + factory.setJobFactory(jobFactory); + Properties mergedProperties = new Properties(); + quartzModuleProperties.stream().forEach(prop -> mergedProperties.putAll(prop.getProperties())); + if (quartzProperties != null && quartzProperties.size() > 0) + mergedProperties.putAll(quartzProperties); + factory.setQuartzProperties(mergedProperties); + boolean isAutoStartup = mergedProperties.getProperty("org.quartz.scheduler.isAutoStartup") != null && mergedProperties.getProperty("org.quartz.scheduler.isAutoStartup").equals("true"); + factory.setAutoStartup(isAutoStartup); + return factory; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java new file mode 100644 index 000000000..2580bfed7 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.messaging.simp.config.MessageBrokerRegistry; +import org.springframework.web.socket.config.annotation.AbstractWebSocketMessageBrokerConfigurer; +import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker; +import org.springframework.web.socket.config.annotation.StompEndpointRegistry; + +@Configuration +@ComponentScan(basePackages = {"it.fabioformosa.quartzmanager.api.websockets"}) +@EnableWebSocketMessageBroker +public class WebsocketConfig extends AbstractWebSocketMessageBrokerConfigurer { + + @Override + public void configureMessageBroker(MessageBrokerRegistry config) { + config.enableSimpleBroker("/topic"); //enable a simple memory-based message broker + // on destinations prefixed with /topic + config.setApplicationDestinationPrefixes("/job"); // it designates the prefix for messages + // that are bound for methods annotated with @MessageMapping + } + + @Override + public void registerStompEndpoints(StompEndpointRegistry registry) { + registry.addEndpoint(QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/logs").setAllowedOrigins("/**").withSockJS(); + registry.addEndpoint(QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/progress").setAllowedOrigins("/**").withSockJS(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java new file mode 100644 index 000000000..ad47df282 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java @@ -0,0 +1,41 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import it.fabioformosa.quartzmanager.api.common.config.OpenAPIConfigConsts; +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import it.fabioformosa.quartzmanager.api.services.JobService; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; +import java.util.stream.Collectors; + +@RequestMapping(JobController.JOB_CONTROLLER_BASE_URL) +@SecurityRequirement(name = OpenAPIConfigConsts.QUARTZ_MANAGER_SEC_OAS_SCHEMA) +@RestController +public class JobController { + public static final String JOB_CONTROLLER_BASE_URL = QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/jobs"; + private final JobService jobService; + + public JobController(JobService jobService) { + this.jobService = jobService; + } + + @GetMapping + @Operation(summary = "Get the list of job classes eligible for Quartz-Manager") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Return a list of qualified java classes", + content = {@Content(mediaType = "application/json", + schema = @Schema(implementation = String.class))}) + }) + public List listJobs() { + return jobService.getJobClasses().stream().map(Class::getName).collect(Collectors.toList()); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java new file mode 100644 index 000000000..bce342c92 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java @@ -0,0 +1,98 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import it.fabioformosa.quartzmanager.api.services.SchedulerService; +import lombok.extern.slf4j.Slf4j; +import org.quartz.SchedulerException; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +import static it.fabioformosa.quartzmanager.api.common.config.OpenAPIConfigConsts.QUARTZ_MANAGER_SEC_OAS_SCHEMA; +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH; + +/** + * This controller provides scheduler info about config and status. It provides + * also methods to set new config and start/stop/resume the scheduler. + * + * @author Fabio.Formosa + */ +@Slf4j +@RestController +@SecurityRequirement(name = QUARTZ_MANAGER_SEC_OAS_SCHEMA) +@RequestMapping(SchedulerController.SCHEDULER_CONTROLLER_BASE_URL) +public class SchedulerController { + + protected static final String SCHEDULER_CONTROLLER_BASE_URL = QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/scheduler"; + + private final SchedulerService schedulerService; + + public SchedulerController(SchedulerService schedulerService) { + this.schedulerService = schedulerService; + } + + @GetMapping + @Operation(summary = "Get the scheduler details") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Return the scheduler config", + content = { @Content(mediaType = "application/json", + schema = @Schema(implementation = SchedulerDTO.class)) }) + }) + public SchedulerDTO getScheduler() { + log.trace("SCHEDULER - GET Scheduler..."); + return schedulerService.getScheduler(); + } + + @GetMapping("/pause") + @Operation(summary = "Get paused the scheduler") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "Got paused successfully") + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void pause() throws SchedulerException { + log.info("SCHEDULER - PAUSE COMMAND"); + schedulerService.standby(); + } + + @GetMapping("/resume") + @Operation(summary = "Get resumed the scheduler") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "Got resumed successfully") + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void resume() throws SchedulerException { + log.info("SCHEDULER - RESUME COMMAND"); + schedulerService.start(); + } + + @GetMapping("/run") + @Operation(summary = "Start the scheduler") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "Got started successfully") + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void run() throws SchedulerException { + log.info("SCHEDULER - START COMMAND"); + schedulerService.start(); + } + + @GetMapping("/stop") + @Operation(summary = "Stop the scheduler") + @ApiResponses(value = { + @ApiResponse(responseCode = "204", description = "Got stopped successfully") + }) + @ResponseStatus(HttpStatus.NO_CONTENT) + public void stop() throws SchedulerException { + log.info("SCHEDULER - STOP COMMAND"); + schedulerService.shutdown(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java new file mode 100644 index 000000000..22e53f102 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java @@ -0,0 +1,93 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import it.fabioformosa.quartzmanager.api.common.config.OpenAPIConfigConsts; +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerInputDTO; +import it.fabioformosa.quartzmanager.api.dto.TriggerDTO; +import it.fabioformosa.quartzmanager.api.services.SimpleTriggerService; +import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; +import lombok.extern.slf4j.Slf4j; +import org.quartz.SchedulerException; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; + +@Slf4j +@RequestMapping(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL) +@SecurityRequirement(name = OpenAPIConfigConsts.QUARTZ_MANAGER_SEC_OAS_SCHEMA) +@RestController +public class SimpleTriggerController { + + protected static final String SIMPLE_TRIGGER_CONTROLLER_BASE_URL = QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/simple-triggers"; + + private final SimpleTriggerService simpleSchedulerService; + + public SimpleTriggerController(SimpleTriggerService simpleSchedulerService) { + this.simpleSchedulerService = simpleSchedulerService; + } + + @GetMapping("/{name}") + @Operation(summary = "Get a simple trigger by name") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Got the trigger by its name", + content = { @Content(mediaType = "application/json", + schema = @Schema(implementation = SimpleTriggerDTO.class)) }), + @ApiResponse(responseCode = "404", description = "Trigger not found", + content = @Content) + }) + public SimpleTriggerDTO getSimpleTrigger(@PathVariable String name) throws SchedulerException, TriggerNotFoundException { + return simpleSchedulerService.getSimpleTriggerByName(name); + } + + @PostMapping("/{name}") + @ResponseStatus(HttpStatus.CREATED) + @Operation(summary = "Schedule a new simple trigger") + @ApiResponses(value = { + @ApiResponse(responseCode = "201", description = "Scheduled a new simple trigger", + content = { @Content(mediaType = "application/json", + schema = @Schema(implementation = SimpleTriggerDTO.class)) }), + @ApiResponse(responseCode = "400", description = "Invalid trigger configuration", + content = @Content) + }) + public SimpleTriggerDTO postSimpleTrigger(@PathVariable String name, @Valid @RequestBody SimpleTriggerInputDTO simpleTriggerInputDTO) throws SchedulerException, ClassNotFoundException { + log.info("SIMPLE TRIGGER - CREATING a SimpleTrigger {} {}", name, simpleTriggerInputDTO); + SimpleTriggerCommandDTO simpleTriggerCommandDTO = SimpleTriggerCommandDTO.builder() + .triggerName(name) + .simpleTriggerInputDTO(simpleTriggerInputDTO) + .build(); + SimpleTriggerDTO newTriggerDTO = simpleSchedulerService.scheduleSimpleTrigger(simpleTriggerCommandDTO); + log.info("SIMPLE TRIGGER - CREATED a SimpleTrigger {}", newTriggerDTO); + return newTriggerDTO; + } + + @PutMapping("/{name}") + @Operation(summary = "Reschedule a simple trigger") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Rescheduled a simple trigger", + content = { @Content(mediaType = "application/json", + schema = @Schema(implementation = TriggerDTO.class)) }), + @ApiResponse(responseCode = "400", description = "Invalid trigger configuration", + content = @Content) + }) + public TriggerDTO rescheduleSimpleTrigger(@PathVariable String name, @Valid @RequestBody SimpleTriggerInputDTO simpleTriggerInputDTO) throws SchedulerException { + log.info("SIMPLE TRIGGER - RESCHEDULING the trigger {} {}", name, simpleTriggerInputDTO); + SimpleTriggerCommandDTO simpleTriggerCommandDTO = SimpleTriggerCommandDTO.builder() + .triggerName(name) + .simpleTriggerInputDTO(simpleTriggerInputDTO) + .build(); + TriggerDTO triggerDTO = simpleSchedulerService.rescheduleSimpleTrigger(simpleTriggerCommandDTO); + log.info("SIMPLE TRIGGER - RESCHEDULED the trigger {}", triggerDTO); + return triggerDTO; + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java new file mode 100644 index 000000000..72726eed4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java @@ -0,0 +1,47 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import io.swagger.v3.oas.annotations.Operation; +import io.swagger.v3.oas.annotations.media.Content; +import io.swagger.v3.oas.annotations.media.Schema; +import io.swagger.v3.oas.annotations.responses.ApiResponse; +import io.swagger.v3.oas.annotations.responses.ApiResponses; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO; +import it.fabioformosa.quartzmanager.api.services.TriggerService; +import lombok.extern.slf4j.Slf4j; +import org.quartz.SchedulerException; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import java.util.List; + +import static it.fabioformosa.quartzmanager.api.common.config.OpenAPIConfigConsts.QUARTZ_MANAGER_SEC_OAS_SCHEMA; +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH; + +@Slf4j +@RequestMapping(TriggerController.TRIGGER_CONTROLLER_BASE_URL) +@SecurityRequirement(name = QUARTZ_MANAGER_SEC_OAS_SCHEMA) +@RestController +public class TriggerController { + + protected static final String TRIGGER_CONTROLLER_BASE_URL = QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/triggers"; + + private final TriggerService triggerService; + + public TriggerController(TriggerService triggerService) { + this.triggerService = triggerService; + } + + @GetMapping + @Operation(summary = "Get a list of triggers") + @ApiResponses(value = { + @ApiResponse(responseCode = "200", description = "Got the trigger list", + content = { @Content(mediaType = "application/json", + schema = @Schema(implementation = TriggerKeyDTO.class)) }) + }) + public List listTriggers() throws SchedulerException { + return triggerService.fetchTriggers(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java new file mode 100644 index 000000000..3baf7af0d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java @@ -0,0 +1,20 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import org.springframework.messaging.handler.annotation.MessageMapping; +import org.springframework.messaging.handler.annotation.SendTo; +import org.springframework.stereotype.Controller; + +@Controller +public class WebsocketController { + + @MessageMapping({ + QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/logs", + QuartzManagerPaths.QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/progress" + }) + @SendTo("/topic/logs") + public String subscribe() { + return "subscribed"; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java new file mode 100644 index 000000000..d59acb54b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java @@ -0,0 +1,31 @@ +package it.fabioformosa.quartzmanager.api.controllers.advices; + +import it.fabioformosa.quartzmanager.api.exceptions.ExceptionResponse; +import it.fabioformosa.quartzmanager.api.exceptions.ResourceConflictException; +import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ControllerAdvice; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.ResponseBody; +import org.springframework.web.bind.annotation.ResponseStatus; + +@ControllerAdvice +public class ExceptionHandlingController { + + @ExceptionHandler(ResourceConflictException.class) + public ResponseEntity resourceConflict(ResourceConflictException ex) { + ExceptionResponse response = new ExceptionResponse(); + response.setErrorCode("Conflict"); + response.setErrorMessage(ex.getMessage()); + return new ResponseEntity<>(response, HttpStatus.CONFLICT); + } + + @ExceptionHandler(TriggerNotFoundException.class) + @ResponseStatus(HttpStatus.NOT_FOUND) + @ResponseBody + public ExceptionResponse triggerNotFound(TriggerNotFoundException ex){ + return ExceptionResponse.builder().errorCode(HttpStatus.NOT_FOUND.toString()).errorMessage(ex.getMessage()).build(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java new file mode 100644 index 000000000..a09f8dad4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java @@ -0,0 +1,27 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverterToDTO; +import it.fabioformosa.quartzmanager.api.dto.JobDetailDTO; +import lombok.SneakyThrows; +import org.quartz.JobDetail; +import org.quartz.JobKey; +import org.quartz.Scheduler; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.stereotype.Component; + +@Component +public class JobKeyToJobDetailDTO extends AbstractBaseConverterToDTO { + + @Qualifier("quartzManagerScheduler") + @Autowired + private Scheduler scheduler; + + @SneakyThrows + @Override + protected void convert(JobKey jobKey, JobDetailDTO jobDetailDTO) { + JobDetail jobDetail = scheduler.getJobDetail(jobKey); + jobDetailDTO.setJobClassName(jobDetail.getJobClass().getName()); + jobDetailDTO.setDescription(jobDetail.getDescription()); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java new file mode 100644 index 000000000..14517e998 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverterToDTO; +import it.fabioformosa.quartzmanager.api.dto.JobKeyDTO; +import org.quartz.JobKey; +import org.springframework.stereotype.Component; + +@Component +public class JobKeyToJobKeyDTO extends AbstractBaseConverterToDTO { + @Override + protected void convert(JobKey source, JobKeyDTO target) { + target.setName(source.getName()); + target.setGroup(source.getGroup()); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java new file mode 100644 index 000000000..1a0ca26c9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java @@ -0,0 +1,33 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverterToDTO; +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import it.fabioformosa.quartzmanager.api.enums.SchedulerStatus; +import lombok.SneakyThrows; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.impl.matchers.GroupMatcher; +import org.springframework.stereotype.Component; + +@Component +public class SchedulerToSchedulerDTO extends AbstractBaseConverterToDTO { + + @SneakyThrows + @Override + protected void convert(Scheduler source, SchedulerDTO target) { + target.setName(source.getSchedulerName()); + target.setInstanceId(source.getSchedulerInstanceId()); + if(!source.isShutdown()) + target.setTriggerKeys(source.getTriggerKeys(GroupMatcher.anyTriggerGroup())); + target.setStatus(buildTheSchedulerStatus(source)); + } + + private SchedulerStatus buildTheSchedulerStatus(Scheduler scheduler) throws SchedulerException { + if (scheduler.isShutdown() || !scheduler.isStarted()) + return SchedulerStatus.STOPPED; + else if (scheduler.isStarted() && scheduler.isInStandbyMode()) + return SchedulerStatus.PAUSED; + return SchedulerStatus.RUNNING; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java new file mode 100644 index 000000000..bea3bcfad --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java @@ -0,0 +1,60 @@ +package it.fabioformosa.quartzmanager.api.converters; + + +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; +import org.quartz.JobDataMap; +import org.quartz.SimpleScheduleBuilder; +import org.quartz.SimpleTrigger; +import org.quartz.Trigger; +import org.quartz.TriggerBuilder; +import org.springframework.core.convert.converter.Converter; +import org.springframework.stereotype.Component; + +@Component +public class SimpleTriggerCommandDTOToSimpleTrigger implements Converter { + @Override + public SimpleTrigger convert(SimpleTriggerCommandDTO triggerCommandDTO) { + TriggerBuilder triggerTriggerBuilder = TriggerBuilder.newTrigger(); + if (triggerCommandDTO.getSimpleTriggerInputDTO().getStartDate() != null) + triggerTriggerBuilder.startAt(triggerCommandDTO.getSimpleTriggerInputDTO().getStartDate()); + if (triggerCommandDTO.getSimpleTriggerInputDTO().getEndDate() != null) + triggerTriggerBuilder.endAt(triggerCommandDTO.getSimpleTriggerInputDTO().getEndDate()); + + if (triggerCommandDTO.getSimpleTriggerInputDTO().getJobDataMap() != null) + triggerTriggerBuilder.usingJobData(new JobDataMap(triggerCommandDTO.getSimpleTriggerInputDTO().getJobDataMap())); + + SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule(); + if (triggerCommandDTO.getSimpleTriggerInputDTO().getRepeatInterval() != null) + scheduleBuilder.withIntervalInMilliseconds(triggerCommandDTO.getSimpleTriggerInputDTO().getRepeatInterval()); + + if (triggerCommandDTO.getSimpleTriggerInputDTO().getRepeatCount() != null) + scheduleBuilder.withRepeatCount(triggerCommandDTO.getSimpleTriggerInputDTO().getRepeatCount()); + + setTheMisfireInstruction(triggerCommandDTO, scheduleBuilder); + + return triggerTriggerBuilder.withSchedule( + scheduleBuilder + ) + .withIdentity(triggerCommandDTO.getTriggerName()).build(); + } + + private static void setTheMisfireInstruction(SimpleTriggerCommandDTO triggerCommandDTO, SimpleScheduleBuilder scheduleBuilder) { + switch (triggerCommandDTO.getSimpleTriggerInputDTO().getMisfireInstruction()) { + case MISFIRE_INSTRUCTION_FIRE_NOW: + scheduleBuilder.withMisfireHandlingInstructionFireNow(); + break; + case MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT: + scheduleBuilder.withMisfireHandlingInstructionNowWithExistingCount(); + break; + case MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT: + scheduleBuilder.withMisfireHandlingInstructionNowWithRemainingCount(); + break; + case MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT: + scheduleBuilder.withMisfireHandlingInstructionNextWithRemainingCount(); + break; + case MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT: + scheduleBuilder.withMisfireHandlingInstructionNextWithExistingCount(); + break; + } + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java new file mode 100644 index 000000000..a7aabfe84 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java @@ -0,0 +1,24 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import org.quartz.SimpleTrigger; +import org.springframework.stereotype.Component; + +@Component +public class SimpleTriggerToSimpleTriggerDTO extends TriggerToTriggerDTO { + + @Override + protected void convert(SimpleTrigger source, SimpleTriggerDTO target) { + super.convert(source, target); + target.setTimesTriggered(source.getTimesTriggered()); + target.setRepeatCount(source.getRepeatCount()); + target.setRepeatInterval(source.getRepeatInterval()); + target.setMisfireInstruction(source.getMisfireInstruction()); + target.setJobDataMap(source.getJobDataMap()); + } + + @Override + protected SimpleTriggerDTO createOrRetrieveTarget(SimpleTrigger source) { + return new SimpleTriggerDTO(); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java new file mode 100644 index 000000000..9aed13b10 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java @@ -0,0 +1,16 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverterToDTO; +import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO; +import org.quartz.TriggerKey; +import org.springframework.stereotype.Component; + +@Component +public class TriggerKeyToTriggerKeyDTO extends AbstractBaseConverterToDTO { + + @Override + protected void convert(TriggerKey source, TriggerKeyDTO target) { + target.setName(source.getName()); + target.setGroup(source.getGroup()); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java new file mode 100644 index 000000000..77c50ba28 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java @@ -0,0 +1,44 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.metamorphosis.core.converters.AbstractBaseConverter; +import it.fabioformosa.quartzmanager.api.dto.JobDetailDTO; +import it.fabioformosa.quartzmanager.api.dto.JobKeyDTO; +import it.fabioformosa.quartzmanager.api.dto.TriggerDTO; +import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO; +import org.quartz.JobKey; +import org.quartz.Trigger; +import org.quartz.TriggerKey; +import org.springframework.stereotype.Component; + +@Component +public class TriggerToTriggerDTO extends AbstractBaseConverter { + + @Override + protected void convert(S source, T target) { + TriggerKey triggerKey = source.getKey(); + TriggerKeyDTO triggerKeyDTO = conversionService.convert(triggerKey, TriggerKeyDTO.class); + target.setTriggerKeyDTO(triggerKeyDTO); + + target.setStartTime(source.getStartTime()); + target.setDescription(source.getDescription()); + target.setEndTime(source.getEndTime()); + target.setFinalFireTime(source.getFinalFireTime()); + target.setMisfireInstruction(source.getMisfireInstruction()); + target.setNextFireTime(source.getNextFireTime()); + target.setPriority(source.getPriority()); + target.setMayFireAgain(source.mayFireAgain()); + + JobKey jobKey = source.getJobKey(); + JobKeyDTO jobKeyDTO = conversionService.convert(jobKey, JobKeyDTO.class); + target.setJobKeyDTO(jobKeyDTO); + + JobDetailDTO jobDetailDTO = conversionService.convert(jobKey, JobDetailDTO.class); + target.setJobDetailDTO(jobDetailDTO); + } + + @Override + protected T createOrRetrieveTarget(S source) { + return (T) new TriggerDTO(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java new file mode 100644 index 000000000..953600184 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java @@ -0,0 +1,14 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +public class JobDetailDTO { + private String jobClassName; + private String description; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java new file mode 100644 index 000000000..7827ee763 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Data +@Builder +public class JobKeyDTO { + private String name; + private String group; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java new file mode 100644 index 000000000..c90e1b75e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java @@ -0,0 +1,27 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.Getter; + +import java.util.Arrays; + +public enum MisfireInstruction { + MISFIRE_INSTRUCTION_FIRE_NOW(1), + MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT(2), + MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_REMAINING_REPEAT_COUNT(3), + MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_REMAINING_COUNT(4), + MISFIRE_INSTRUCTION_RESCHEDULE_NEXT_WITH_EXISTING_COUNT(5); + + @Getter + private int num; + + MisfireInstruction(int num) { + this.num = num; + } + + public static MisfireInstruction parseInt(int num) { + return Arrays.stream(MisfireInstruction.values()) + .filter(misfireInstruction -> misfireInstruction.getNum() == num) + .findFirst().orElseThrow(() -> new IllegalArgumentException(num + " is not a valid misfire instruction code!")); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java new file mode 100644 index 000000000..07dfd21d9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java @@ -0,0 +1,21 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import it.fabioformosa.quartzmanager.api.enums.SchedulerStatus; +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; +import org.quartz.TriggerKey; + +import java.util.Set; + +@NoArgsConstructor +@AllArgsConstructor +@Data +@Builder +public class SchedulerDTO { + private String name; + private String instanceId; + private SchedulerStatus status; + private Set triggerKeys; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java new file mode 100644 index 000000000..ae8c62214 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java @@ -0,0 +1,13 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.*; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Data +@ToString +public class SimpleTriggerCommandDTO { + private String triggerName; + private SimpleTriggerInputDTO simpleTriggerInputDTO; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java new file mode 100644 index 000000000..1fa500b23 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java @@ -0,0 +1,16 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.*; +import lombok.experimental.SuperBuilder; + +@NoArgsConstructor @AllArgsConstructor +@Data +@ToString(callSuper = true) @EqualsAndHashCode(callSuper = true) +@SuperBuilder +public class SimpleTriggerDTO extends TriggerDTO{ + + private int repeatCount; + private long repeatInterval; + private int timesTriggered; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java new file mode 100644 index 000000000..8c643fd53 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java @@ -0,0 +1,25 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import it.fabioformosa.quartzmanager.api.validators.ValidTriggerRepetition; +import lombok.*; +import lombok.experimental.SuperBuilder; +import javax.annotation.Nullable; +import javax.validation.constraints.Positive; +import java.util.Map; + +@ValidTriggerRepetition +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) +@Data +@ToString(callSuper = true) +public class SimpleTriggerInputDTO extends TriggerCommandDTO implements TriggerRepetitionDTO { + private Integer repeatCount; + + @Positive + private Long repeatInterval; + + @Nullable + private Map jobDataMap; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java new file mode 100644 index 000000000..2ea91b4c9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import it.fabioformosa.quartzmanager.api.validators.ValidTriggerPeriod; +import lombok.*; +import lombok.experimental.SuperBuilder; + +import javax.validation.constraints.NotBlank; +import java.util.Date; + +@ValidTriggerPeriod +@SuperBuilder +@NoArgsConstructor +@AllArgsConstructor +@EqualsAndHashCode +@ToString +@Data +public class TriggerCommandDTO implements TriggerPeriodDTO { + @NotBlank + private String jobClass; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + private Date startDate; + + @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'") + private Date endDate; + + @Builder.Default + private MisfireInstruction misfireInstruction = MisfireInstruction.MISFIRE_INSTRUCTION_RESCHEDULE_NOW_WITH_EXISTING_REPEAT_COUNT; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java new file mode 100644 index 000000000..0e1d77289 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java @@ -0,0 +1,28 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; +import org.quartz.JobDataMap; + +import java.util.Date; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@SuperBuilder +public class TriggerDTO { + private TriggerKeyDTO triggerKeyDTO; + private int priority; + private Date startTime; + private String description; + private Date endTime; + private Date finalFireTime; + private int misfireInstruction; + private Date nextFireTime; + private JobKeyDTO jobKeyDTO; + private JobDetailDTO jobDetailDTO; + private boolean mayFireAgain; + private JobDataMap jobDataMap; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java new file mode 100644 index 000000000..0e696d3bf --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java @@ -0,0 +1,34 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.*; + +import java.util.Date; + +@Data +@Builder +@NoArgsConstructor +@AllArgsConstructor +public class TriggerFiredBundleDTO { + + private int timesTriggered; + + private int repeatCount; + + private Date finalFireTime; + + private Date nextFireTime; + + private Date previousFireTime; + + private String jobKey; + + private String jobClass; + + public int getPercentage() { + if (this.repeatCount <= 0) + return -1; + return Math.round((float) timesTriggered / (float) this.repeatCount + * 100); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java new file mode 100644 index 000000000..d68ad65b3 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@AllArgsConstructor +@NoArgsConstructor +@Data +@Builder +public class TriggerKeyDTO { + private String name; + private String group; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java new file mode 100644 index 000000000..e930d9166 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java @@ -0,0 +1,11 @@ +package it.fabioformosa.quartzmanager.api.dto; + +public interface TriggerPeriodDTO { + java.util.Date getStartDate(); + + java.util.Date getEndDate(); + + void setStartDate(java.util.Date startDate); + + void setEndDate(java.util.Date endDate); +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java new file mode 100644 index 000000000..d71d2931b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java @@ -0,0 +1,11 @@ +package it.fabioformosa.quartzmanager.api.dto; + +public interface TriggerRepetitionDTO { + Integer getRepeatCount(); + + Long getRepeatInterval(); + + void setRepeatCount(Integer repeatCount); + + void setRepeatInterval(Long repeatInterval); +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java new file mode 100644 index 000000000..0a0f3f625 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java @@ -0,0 +1,5 @@ +package it.fabioformosa.quartzmanager.api.enums; + +public enum SchedulerStatus { + RUNNING, STOPPED, PAUSED +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java new file mode 100644 index 000000000..2c11a0557 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.exceptions; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@NoArgsConstructor +@AllArgsConstructor +@Builder +@Data +public class ExceptionResponse { + private String errorCode; + private String errorMessage; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java new file mode 100644 index 000000000..c7ba754a9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.exceptions; + +import lombok.Getter; +import lombok.Setter; + +@Getter @Setter +public class ResourceConflictException extends RuntimeException { + + private static final long serialVersionUID = 1791564636123821405L; + + public ResourceConflictException(Long resourceId, String message) { + super("Conflict on resourceID " + resourceId + " " + message); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java new file mode 100644 index 000000000..d3e01136a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java @@ -0,0 +1,7 @@ +package it.fabioformosa.quartzmanager.api.exceptions; + +public class TriggerNotFoundException extends Exception { + public TriggerNotFoundException(String name) { + super("Trigger with name " + name + " not found!"); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java new file mode 100644 index 000000000..609ee8de8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java @@ -0,0 +1,48 @@ +package it.fabioformosa.quartzmanager.api.jobs; + +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import it.fabioformosa.quartzmanager.api.websockets.WebSocketProgressNotifier; +import it.fabioformosa.quartzmanager.api.websockets.WebhookSender; +import it.fabioformosa.quartzmanager.api.dto.TriggerFiredBundleDTO; +import org.quartz.Job; +import org.quartz.JobExecutionContext; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.annotation.Resource; + +/** + * Extends this class to create a job that produces LogRecord to be displayed + * into the GUI panel + * + * @author Fabio.Formosa + */ +public abstract class AbstractQuartzManagerJob implements Job { + + private static final Logger log = LoggerFactory.getLogger(AbstractQuartzManagerJob.class); + + @Resource + private WebhookSender webSocketProgressNotifier; + + @Resource + private WebhookSender webSocketLogsNotifier; + + /** + * @param jobExecutionContext + * @return final log + */ + public abstract LogRecord doIt(JobExecutionContext jobExecutionContext); + + @Override + public final void execute(JobExecutionContext jobExecutionContext) { + LogRecord logMsg = doIt(jobExecutionContext); + log.info(logMsg.getMessage()); + + logMsg.setThreadName(Thread.currentThread().getName()); + webSocketLogsNotifier.send(logMsg); + + TriggerFiredBundleDTO triggerFiredBundleDTO = WebSocketProgressNotifier.buildTriggerFiredBundle(jobExecutionContext); + webSocketProgressNotifier.send(triggerFiredBundleDTO); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java new file mode 100644 index 000000000..64511513d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java @@ -0,0 +1,35 @@ +package it.fabioformosa.quartzmanager.api.jobs.entities; + +import lombok.Data; +import lombok.ToString; + +import java.util.Date; + +/** + * Log record produced by a job at the end of each run + * + * @author Fabio.Formosa + * + */ +@Data +@ToString +public class LogRecord { + + public enum LogType { + INFO, WARN, ERROR; + } + + private Date date; + private LogType type; + + private String message; + private String threadName; + + public LogRecord(LogType type, String msg) { + super(); + this.type = type; + message = msg; + date = new Date(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java new file mode 100644 index 000000000..fff1828cd --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java @@ -0,0 +1,26 @@ +package it.fabioformosa.quartzmanager.api.scheduler; + +import org.quartz.spi.TriggerFiredBundle; +import org.springframework.beans.factory.config.AutowireCapableBeanFactory; +import org.springframework.context.ApplicationContext; +import org.springframework.context.ApplicationContextAware; +import org.springframework.scheduling.quartz.SpringBeanJobFactory; + +public final class AutowiringSpringBeanJobFactory extends SpringBeanJobFactory + implements ApplicationContextAware { + + private AutowireCapableBeanFactory beanFactory; + + @Override + protected Object createJobInstance(final TriggerFiredBundle bundle) + throws Exception { + final Object job = super.createJobInstance(bundle); + beanFactory.autowireBean(job); + return job; + } + + @Override + public void setApplicationContext(final ApplicationContext context) { + beanFactory = context.getAutowireCapableBeanFactory(); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java new file mode 100644 index 000000000..1687dd0b7 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java @@ -0,0 +1,28 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; +import org.quartz.*; +import org.springframework.core.convert.ConversionService; + +public class AbstractSchedulerService { + + protected Scheduler scheduler; + protected ConversionService conversionService; + + public AbstractSchedulerService(Scheduler scheduler, ConversionService conversionService) { + this.scheduler = scheduler; + this.conversionService = conversionService; + } + + protected Trigger getTriggerByName(String name) throws SchedulerException, TriggerNotFoundException { + Trigger trigger = scheduler.getTrigger(new TriggerKey(name)); + if(trigger == null) + throw new TriggerNotFoundException(name); + return trigger; + } + + protected JobDetail getJobDetailByKey(JobKey jobKey) throws SchedulerException { + return scheduler.getJobDetail(jobKey); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java new file mode 100644 index 000000000..500e9ff1c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java @@ -0,0 +1,50 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.jobs.AbstractQuartzManagerJob; +import lombok.Getter; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.lang3.StringUtils; +import org.reflections.Reflections; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import javax.annotation.PostConstruct; +import java.util.*; +import java.util.stream.Collectors; + +@Slf4j +@Service +public class JobService { + + @Getter + private List> jobClasses = new ArrayList<>(); + + private List jobClassPackages = new ArrayList<>(); + + public JobService(@Value("${quartz-manager.jobClassPackages}") String jobClassPackages) { + List splitPackages = Arrays.stream(Optional.of(jobClassPackages).map(str -> str.split(",")) + .orElseThrow(() -> new RuntimeException("The prop quartz-manager.jobClassPackages cannot be blank!"))) + .map(String::trim) + .filter(StringUtils::isNotBlank) + .collect(Collectors.toList()); + if (!splitPackages.isEmpty()) + this.jobClassPackages.addAll(splitPackages); + } + + @PostConstruct + public void initJobClassList() { + List> foundJobClasses = jobClassPackages.stream().flatMap(jobClassPackage -> findJobClassesInPackage(jobClassPackage).stream()).collect(Collectors.toList()); + if (!foundJobClasses.isEmpty()) { + log.info("Found the following eligible job classes: {}", foundJobClasses); + this.jobClasses.addAll(foundJobClasses); + } + else + log.warn("Not found any eligible job classes!"); + } + + private static Set> findJobClassesInPackage(String packageStr) { + Reflections reflections = new Reflections(packageStr); + return reflections.getSubTypesOf(AbstractQuartzManagerJob.class); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java new file mode 100644 index 000000000..c2291ab86 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java @@ -0,0 +1,31 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.convert.ConversionService; +import org.springframework.stereotype.Service; + +@Service +public class SchedulerService extends AbstractSchedulerService{ + + public SchedulerService(@Qualifier("quartzManagerScheduler") Scheduler scheduler, ConversionService conversionService) { + super(scheduler, conversionService); + } + + public SchedulerDTO getScheduler() { + return conversionService.convert(scheduler, SchedulerDTO.class); + } + + public void standby() throws SchedulerException { + scheduler.standby(); + } + public void start() throws SchedulerException { + scheduler.start(); + } + public void shutdown() throws SchedulerException { + scheduler.shutdown(true); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java new file mode 100644 index 000000000..908f81527 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java @@ -0,0 +1,45 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; +import org.quartz.*; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.convert.ConversionService; +import org.springframework.stereotype.Service; + +@Service +public class SimpleTriggerService extends AbstractSchedulerService { + + public SimpleTriggerService(@Qualifier("quartzManagerScheduler") Scheduler scheduler, ConversionService conversionService) { + super(scheduler, conversionService); + } + + public SimpleTriggerDTO getSimpleTriggerByName(String name) throws SchedulerException, TriggerNotFoundException { + Trigger trigger = getTriggerByName(name); + return conversionService.convert(trigger, SimpleTriggerDTO.class); + } + + public SimpleTriggerDTO scheduleSimpleTrigger(SimpleTriggerCommandDTO simpleTriggerCommandDTO) throws SchedulerException, ClassNotFoundException { + Class jobClass = (Class) Class.forName(simpleTriggerCommandDTO.getSimpleTriggerInputDTO().getJobClass()); + JobDetail jobDetail = JobBuilder.newJob() + .ofType(jobClass) + .storeDurably(false) + .build(); + + SimpleTrigger newSimpleTrigger = conversionService.convert(simpleTriggerCommandDTO, SimpleTrigger.class); + scheduler.scheduleJob(jobDetail, newSimpleTrigger); + + return conversionService.convert(newSimpleTrigger, SimpleTriggerDTO.class); + } + + public SimpleTriggerDTO rescheduleSimpleTrigger(SimpleTriggerCommandDTO triggerCommandDTO) throws SchedulerException { + SimpleTrigger newSimpleTrigger = conversionService.convert(triggerCommandDTO, SimpleTrigger.class); + + TriggerKey triggerKey = TriggerKey.triggerKey(triggerCommandDTO.getTriggerName()); + scheduler.rescheduleJob(triggerKey, newSimpleTrigger); + + return conversionService.convert(newSimpleTrigger, SimpleTriggerDTO.class); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java new file mode 100644 index 000000000..31bfa9c4c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java @@ -0,0 +1,34 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.TriggerKey; +import org.quartz.impl.matchers.GroupMatcher; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.core.convert.ConversionService; +import org.springframework.core.convert.TypeDescriptor; +import org.springframework.stereotype.Service; + +import java.util.List; +import java.util.Set; + +@Service +public class TriggerService { + + private Scheduler scheduler; + private ConversionService conversionService; + + public TriggerService(@Qualifier("quartzManagerScheduler") Scheduler scheduler, ConversionService conversionService) { + this.scheduler = scheduler; + this.conversionService = conversionService; + } + + public List fetchTriggers() throws SchedulerException { + Set triggerKeys = scheduler.getTriggerKeys(GroupMatcher.anyTriggerGroup()); + return (List) conversionService.convert(triggerKeys, + TypeDescriptor.collection(Set.class, TypeDescriptor.valueOf(TriggerKey.class)), + TypeDescriptor.collection(List.class, TypeDescriptor.valueOf(TriggerKeyDTO.class))); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java new file mode 100644 index 000000000..ccc35806c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.validators; + +import it.fabioformosa.quartzmanager.api.dto.TriggerRepetitionDTO; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class ValidRepetitionValidator implements ConstraintValidator { + + @Override + public boolean isValid(TriggerRepetitionDTO repetitionDTO, ConstraintValidatorContext constraintValidatorContext) { + return (repetitionDTO.getRepeatCount() == null && repetitionDTO.getRepeatInterval() == null) || + (repetitionDTO.getRepeatCount() != null && repetitionDTO.getRepeatInterval() != null); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java new file mode 100644 index 000000000..9fb9c1ebe --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java @@ -0,0 +1,17 @@ +package it.fabioformosa.quartzmanager.api.validators; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Constraint(validatedBy = ValidTriggerPeriodValidator.class) +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface ValidTriggerPeriod { + String message() default "Invalid period values. The end date cannot be before the start date"; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java new file mode 100644 index 000000000..55856f2c3 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java @@ -0,0 +1,15 @@ +package it.fabioformosa.quartzmanager.api.validators; + +import it.fabioformosa.quartzmanager.api.dto.TriggerPeriodDTO; + +import javax.validation.ConstraintValidator; +import javax.validation.ConstraintValidatorContext; + +public class ValidTriggerPeriodValidator implements ConstraintValidator { + @Override + public boolean isValid(TriggerPeriodDTO triggerPeriodDTO, ConstraintValidatorContext constraintValidatorContext) { + if(triggerPeriodDTO.getStartDate() != null && triggerPeriodDTO.getEndDate() != null) + return !triggerPeriodDTO.getEndDate().before(triggerPeriodDTO.getStartDate()); + return true; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java new file mode 100644 index 000000000..919420e3d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java @@ -0,0 +1,17 @@ +package it.fabioformosa.quartzmanager.api.validators; + +import javax.validation.Constraint; +import javax.validation.Payload; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Constraint(validatedBy = ValidRepetitionValidator.class) +@Target(ElementType.TYPE) +@Retention(RetentionPolicy.RUNTIME) +public @interface ValidTriggerRepetition { + String message() default "Invalid repetition values. Repeat Count and Repeat interval must be both set or unset."; + Class[] groups() default {}; + Class[] payload() default {}; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java new file mode 100644 index 000000000..9ced56339 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java @@ -0,0 +1,20 @@ +package it.fabioformosa.quartzmanager.api.websockets; + +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.simp.SimpMessageSendingOperations; +import org.springframework.stereotype.Component; + +@Component +public class WebSocketLogsNotifier implements WebhookSender { + + public static final String TOPIC_LOGS = "/topic/logs"; + + @Autowired + private SimpMessageSendingOperations messagingTemplate; + + @Override + public void send(LogRecord logRecord) { + messagingTemplate.convertAndSend(TOPIC_LOGS, logRecord); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java new file mode 100644 index 000000000..7eeba6d22 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java @@ -0,0 +1,50 @@ +package it.fabioformosa.quartzmanager.api.websockets; + +import it.fabioformosa.quartzmanager.api.dto.TriggerFiredBundleDTO; +import org.quartz.*; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.messaging.simp.SimpMessageSendingOperations; +import org.springframework.stereotype.Component; + +/** + * Notify the progress of the trigger through websocket + * + * @author Fabio Formosa + */ +@Component +public class WebSocketProgressNotifier implements WebhookSender { + + public static final String TOPIC_PROGRESS = "/topic/progress"; + + @Autowired + private SimpMessageSendingOperations messagingTemplate; + + @Override + public void send(TriggerFiredBundleDTO triggerFiredBundleDTO) { + messagingTemplate.convertAndSend(TOPIC_PROGRESS, triggerFiredBundleDTO); + } + + public static TriggerFiredBundleDTO buildTriggerFiredBundle(JobExecutionContext jobExecutionContext) { + TriggerFiredBundleDTO triggerFiredBundleDTO = new TriggerFiredBundleDTO(); + + Trigger trigger = jobExecutionContext.getTrigger(); + triggerFiredBundleDTO.setFinalFireTime(trigger.getFinalFireTime()); + triggerFiredBundleDTO.setNextFireTime(trigger.getNextFireTime()); + triggerFiredBundleDTO.setPreviousFireTime(trigger.getPreviousFireTime()); + + if (trigger instanceof SimpleTrigger) { + SimpleTrigger simpleTrigger = (SimpleTrigger) trigger; + triggerFiredBundleDTO.setRepeatCount(simpleTrigger.getRepeatCount() + 1); + triggerFiredBundleDTO.setTimesTriggered(simpleTrigger.getTimesTriggered()); + } else if (trigger instanceof DailyTimeIntervalTrigger) { + DailyTimeIntervalTrigger dailyTrigger = (DailyTimeIntervalTrigger) trigger; + triggerFiredBundleDTO.setRepeatCount(dailyTrigger.getRepeatCount() + 1); + } + + JobDetail jobDetail = jobExecutionContext.getJobDetail(); + triggerFiredBundleDTO.setJobKey(jobDetail.getKey().getName()); + triggerFiredBundleDTO.setJobClass(jobDetail.getJobClass().getName()); + return triggerFiredBundleDTO; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java new file mode 100644 index 000000000..a4a9c536b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java @@ -0,0 +1,14 @@ +package it.fabioformosa.quartzmanager.api.websockets; + +/** + * + * Notify the progress of the trigger to all consumers + * + * @author Fabio Formosa + * + */ +public interface WebhookSender { + + void send(T message); + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..09e0c3745 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +it.fabioformosa.quartzmanager.api.configuration.QuartzManagerApiConfig diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java new file mode 100644 index 000000000..b843cce23 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java @@ -0,0 +1,10 @@ +package it.fabioformosa.quartzmanager.api; + +import org.springframework.boot.SpringBootConfiguration; +import org.springframework.context.annotation.ComponentScan; + +@ComponentScan("it.fabioformosa.quartzmanager") +@SpringBootConfiguration +public class QuartManagerApplicationTests { + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java new file mode 100644 index 000000000..9054f97a2 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java @@ -0,0 +1,29 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.boot.test.context.SpringBootTest; + +@SpringBootTest +class SchedulerConfigDefaultAppPropertiesTest { + + @Autowired + @Qualifier("quartzManagerScheduler") + private Scheduler scheduler; + + @Test + void givenTheQuartzPropMissing_whenTheBootstrapOccurs_thenAQuartzInstanceShouldBeInstantiated(){ + Assertions.assertThat(scheduler).isNotNull(); + } + + @Test + void givenTheQuartzNameMissing_whenTheBootstrapOccurs_thenAQuartzInstanceShouldBeTheDefaultName() throws SchedulerException { + Assertions.assertThat(scheduler.getSchedulerName()).isEqualTo(QuartzDefaultPropertiesConfig.QUARTZ_MANAGER_SCHEDULER_DEFAULT_NAME); + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java new file mode 100644 index 000000000..b94a5f343 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java @@ -0,0 +1,84 @@ +package it.fabioformosa.quartzmanager.api.configuration; + +import it.fabioformosa.quartzmanager.api.common.properties.QuartzModuleProperties; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.quartz.Scheduler; +import org.springframework.context.support.GenericApplicationContext; +import org.springframework.scheduling.quartz.SchedulerFactoryBean; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +class SchedulerConfigTest { + + public static final String TEST_SCHEDULER_NAME = "foo"; + public static final String QUARTZ_SCHEDULER_DEFAULT_NAME = "QuartzScheduler"; + + @Test + void givenASchedulerName_whenTheSchedulerIsInstantiated_thenTheSchedulerHasThatName() throws Exception { + List quartzModulePropertiesList = getQuartzModulePropertiesWithASchedulerName(TEST_SCHEDULER_NAME); + SchedulerConfig schedulerConfig = new SchedulerConfig(quartzModulePropertiesList); + GenericApplicationContext applicationContext = new GenericApplicationContext(); + applicationContext.refresh(); + SchedulerFactoryBean schedulerFactoryBean = schedulerConfig.schedulerFactoryBean(schedulerConfig.jobFactory(applicationContext), null); + + schedulerFactoryBean.afterPropertiesSet(); + Scheduler scheduler = schedulerFactoryBean.getScheduler(); + Assertions.assertThat(scheduler.getSchedulerName()).isEqualTo(TEST_SCHEDULER_NAME); + } + + private static List getQuartzModulePropertiesWithASchedulerName(String schedulerName) { + QuartzModuleProperties quartzModuleProperties = new QuartzModuleProperties(); + quartzModuleProperties.getProperties().put("org.quartz.scheduler.instanceName", schedulerName); + List quartzModulePropertiesList = new ArrayList<>(); + quartzModulePropertiesList.add(quartzModuleProperties); + return quartzModulePropertiesList; + } + + @Test + void givenNoSchedulerName_whenTheSchedulerIsInstantiated_thenTheSchedulerHasTheDefaultName() throws Exception { + QuartzModuleProperties quartzModuleProperties = new QuartzModuleProperties(); + List quartzModulePropertiesList = new ArrayList<>(); + quartzModulePropertiesList.add(quartzModuleProperties); + SchedulerConfig schedulerConfig = new SchedulerConfig(quartzModulePropertiesList); + GenericApplicationContext applicationContext = new GenericApplicationContext(); + applicationContext.refresh(); + SchedulerFactoryBean schedulerFactoryBean = schedulerConfig.schedulerFactoryBean(schedulerConfig.jobFactory(applicationContext), null); + + schedulerFactoryBean.afterPropertiesSet(); + Scheduler scheduler = schedulerFactoryBean.getScheduler(); + Assertions.assertThat(scheduler.getSchedulerName()).isEqualTo(QUARTZ_SCHEDULER_DEFAULT_NAME); + } + + @Test + void givenAManagedProperties_whenTheSchedulerIsInstantiated_thenTheManagedPropsHavePriority() throws Exception { + List quartzModulePropertiesList = getQuartzModulePropertiesWithASchedulerName(TEST_SCHEDULER_NAME); + SchedulerConfig schedulerConfig = new SchedulerConfig(quartzModulePropertiesList); + GenericApplicationContext applicationContext = new GenericApplicationContext(); + applicationContext.refresh(); + + Properties managedProps = new Properties(); + String overridden_scheduler_name = "OVERRIDDEN_SCHEDULER_NAME"; + managedProps.put("org.quartz.scheduler.instanceName", overridden_scheduler_name); + SchedulerFactoryBean schedulerFactoryBean = schedulerConfig.schedulerFactoryBean(schedulerConfig.jobFactory(applicationContext), managedProps); + + schedulerFactoryBean.afterPropertiesSet(); + Scheduler scheduler = schedulerFactoryBean.getScheduler(); + Assertions.assertThat(scheduler.getSchedulerName()).isEqualTo(overridden_scheduler_name); + } + + @Test + void givenAnEmptyManagedPropFile_whenSchedulerConfigRuns_thenItReturnsAnEmptyPropList() throws IOException { + List quartzModulePropertiesList = getQuartzModulePropertiesWithASchedulerName(TEST_SCHEDULER_NAME); + SchedulerConfig schedulerConfig = new SchedulerConfig(quartzModulePropertiesList); + GenericApplicationContext applicationContext = new GenericApplicationContext(); + applicationContext.refresh(); + + Properties properties = schedulerConfig.quartzProperties(); + Assertions.assertThat(properties).isEmpty(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java new file mode 100644 index 000000000..49838de87 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java @@ -0,0 +1,46 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.QuartManagerApplicationTests; +import it.fabioformosa.quartzmanager.api.controllers.utils.TestUtils; +import it.fabioformosa.quartzmanager.api.jobs.SampleJob; +import it.fabioformosa.quartzmanager.api.services.JobService; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import java.util.List; + +import static org.junit.jupiter.api.Assertions.*; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; + +@ContextConfiguration(classes = {QuartManagerApplicationTests.class}) +@WebMvcTest(controllers = SimpleTriggerController.class, properties = { + "quartz-manager.jobClassPackages=it.fabioformosa.quartzmanager.jobs" +}) +class JobControllerTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private JobService jobService; + + @Test + void whenGetListIsCalled_thenTheSimpleJobIsReturned() throws Exception { + Mockito.when(jobService.getJobClasses()).thenReturn(List.of(SampleJob.class)); + + List expectedJobs = List.of(SampleJob.class.getName()); + mockMvc.perform(get(JobController.JOB_CONTROLLER_BASE_URL) + .contentType(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedJobs))); + + Mockito.verify(jobService, Mockito.times(1)).getJobClasses(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java new file mode 100644 index 000000000..7df7b444f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java @@ -0,0 +1,28 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.QuartManagerApplicationTests; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +@ContextConfiguration(classes = {QuartManagerApplicationTests.class}) +@WebMvcTest(controllers = SimpleTriggerController.class, properties = { + "quartz-manager.jobClassPackages=it.fabioformosa.quartzmanager.jobs" +}) +class ResourceConflictControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Test + void whenAResourceConflictExceptionIsRaised_thenTheExceptionHandlerReturns409() throws Exception { + mockMvc.perform( + MockMvcRequestBuilders.post(TestController.TEST_CONTROLLER_BASE_URL + "/test-conflict") + .contentType(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers.status().isConflict()); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java new file mode 100644 index 000000000..3e5ff80e5 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java @@ -0,0 +1,89 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.QuartManagerApplicationTests; +import it.fabioformosa.quartzmanager.api.controllers.utils.TestUtils; +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import it.fabioformosa.quartzmanager.api.enums.SchedulerStatus; +import it.fabioformosa.quartzmanager.api.services.SchedulerService; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get; + +@ContextConfiguration(classes = {QuartManagerApplicationTests.class}) +@WebMvcTest(controllers = SimpleTriggerController.class, properties = { + "quartz-manager.jobClassPackages=it.fabioformosa.quartzmanager.jobs" +}) +class SchedulerControllerTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private SchedulerService schedulerService; + + @Test + void whenTheGetIsCalled_thenTheSchedulerServiceIsReturned() throws Exception { + SchedulerDTO schedulerDTO = SchedulerDTO.builder() + .name("TEST_SCHEDULER") + .instanceId("testSchedulerId") + .status(SchedulerStatus.STOPPED) + .build(); + Mockito.when(schedulerService.getScheduler()).thenReturn(schedulerDTO); + + mockMvc.perform(get(SchedulerController.SCHEDULER_CONTROLLER_BASE_URL) + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(schedulerDTO))); + + Mockito.verify(schedulerService).getScheduler(); + } + + @Test + void givenAScheduler_whenTheGetPausedIsCalled_then2xxReturned() throws Exception { + mockMvc.perform(get(SchedulerController.SCHEDULER_CONTROLLER_BASE_URL + "/pause") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isNoContent()) + .andExpect(MockMvcResultMatchers.content().string("")); + + Mockito.verify(schedulerService).standby(); + } + + @Test + void givenAScheduler_whenTheGetResumedIsCalled_then2xxReturned() throws Exception { + mockMvc.perform(get(SchedulerController.SCHEDULER_CONTROLLER_BASE_URL + "/resume") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isNoContent()) + .andExpect(MockMvcResultMatchers.content().string("")); + + Mockito.verify(schedulerService).start(); + } + + @Test + void givenAScheduler_whenTheGetRunIsCalled_then2xxReturned() throws Exception { + mockMvc.perform(get(SchedulerController.SCHEDULER_CONTROLLER_BASE_URL + "/run") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isNoContent()) + .andExpect(MockMvcResultMatchers.content().string("")); + + Mockito.verify(schedulerService).start(); + } + + @Test + void givenAScheduler_whenTheGetStoppedIsCalled_then2xxReturned() throws Exception { + mockMvc.perform(get(SchedulerController.SCHEDULER_CONTROLLER_BASE_URL + "/stop") + .contentType(MediaType.APPLICATION_JSON)) + .andExpect(MockMvcResultMatchers.status().isNoContent()) + .andExpect(MockMvcResultMatchers.content().string("")); + + Mockito.verify(schedulerService).shutdown(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java new file mode 100644 index 000000000..01472e4f6 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java @@ -0,0 +1,104 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.QuartManagerApplicationTests; +import it.fabioformosa.quartzmanager.api.common.utils.DateUtils; +import it.fabioformosa.quartzmanager.api.controllers.utils.TestUtils; +import it.fabioformosa.quartzmanager.api.controllers.utils.TriggerUtils; +import it.fabioformosa.quartzmanager.api.dto.MisfireInstruction; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerInputDTO; +import it.fabioformosa.quartzmanager.api.services.SimpleTriggerService; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import java.util.Date; +import java.util.Map; +import static java.util.Map.entry; +import static org.mockito.ArgumentMatchers.any; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; + +@ContextConfiguration(classes = {QuartManagerApplicationTests.class}) +@WebMvcTest(controllers = SimpleTriggerController.class, properties = { + "quartz-manager.jobClassPackages=it.fabioformosa.quartzmanager.jobs" +}) +class SimpleTriggerControllerTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private SimpleTriggerService simpleTriggerService; + + @AfterEach + void cleanUp(){ + Mockito.reset(simpleTriggerService); + } + + @Test + void whenGetIsCalled_thenASimpleTriggerIsReturned() throws Exception { + SimpleTriggerDTO expectedSimpleTriggerDTO = TriggerUtils.getSimpleTriggerInstance("mytrigger"); + Mockito.when(simpleTriggerService.getSimpleTriggerByName("mytrigger")).thenReturn(expectedSimpleTriggerDTO); + + mockMvc.perform(get(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") + .contentType(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedSimpleTriggerDTO))); + } + + @Test + void givenACompleteSimpleTriggerCommandDTO_whenPosted_thenANewSimpleTriggerIsCreated() throws Exception { + SimpleTriggerInputDTO simpleTriggerInputDTO = buildACompleteSimpleTriggerCommandDTO(); + SimpleTriggerDTO expectedSimpleTriggerDTO = TriggerUtils.getSimpleTriggerInstance("mytrigger", simpleTriggerInputDTO); + Mockito.when(simpleTriggerService.scheduleSimpleTrigger(any())).thenReturn(expectedSimpleTriggerDTO); + mockMvc.perform( + post(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(simpleTriggerInputDTO)) + ) + .andExpect(MockMvcResultMatchers.status().isCreated()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedSimpleTriggerDTO))) + ; + } + + private SimpleTriggerInputDTO buildACompleteSimpleTriggerCommandDTO() { + Map triggerJobDataMap = Map.ofEntries( + entry("customTriggerData1", "value1"), + entry("customTriggerData2", "value2") + ); + return SimpleTriggerInputDTO.builder() + .jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob") + .startDate(new Date()) + .endDate(DateUtils.addHoursToNow(6)) + .misfireInstruction(MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW) + .repeatCount(5) + .repeatInterval(1000L * 60 * 60) + .jobDataMap(triggerJobDataMap) + .build(); + } + + @Test + void givenATriggerName_whenPutSimpleTriggerCommandDTO_thenTheSimpleTriggerIsRescheduled() throws Exception { + SimpleTriggerInputDTO simpleTriggerInputDTO = buildACompleteSimpleTriggerCommandDTO(); + SimpleTriggerDTO expectedSimpleTriggerDTO = TriggerUtils.getSimpleTriggerInstance("mytrigger", simpleTriggerInputDTO); + SimpleTriggerCommandDTO simpleTriggerCommandDTO = SimpleTriggerCommandDTO.builder() + .triggerName("mytrigger") + .simpleTriggerInputDTO(simpleTriggerInputDTO) + .build(); + Mockito.when(simpleTriggerService.rescheduleSimpleTrigger(simpleTriggerCommandDTO)).thenReturn(expectedSimpleTriggerDTO); + + mockMvc.perform(put(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(simpleTriggerInputDTO))) + .andExpect(MockMvcResultMatchers.status().isOk()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedSimpleTriggerDTO))); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java new file mode 100644 index 000000000..36d20e3e8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java @@ -0,0 +1,113 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.QuartManagerApplicationTests; +import it.fabioformosa.quartzmanager.api.controllers.utils.InvalidSimpleTriggerCommandDTOProvider; +import it.fabioformosa.quartzmanager.api.controllers.utils.TestUtils; +import it.fabioformosa.quartzmanager.api.controllers.utils.TriggerUtils; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerInputDTO; +import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; +import it.fabioformosa.quartzmanager.api.services.SimpleTriggerService; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ArgumentsSource; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.http.MediaType; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.result.MockMvcResultMatchers; + +import java.util.Date; + +import static org.mockito.ArgumentMatchers.any; +import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*; + +@ContextConfiguration(classes = {QuartManagerApplicationTests.class}) +@WebMvcTest(controllers = SimpleTriggerController.class, properties = { + "quartz-manager.jobClassPackages=it.fabioformosa.quartzmanager.jobs" +}) +class SimpleTriggerControllerValidationTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private SimpleTriggerService simpleTriggerService; + + @AfterEach + void cleanUp(){ + Mockito.reset(simpleTriggerService); + } + + + @Test + void givenANotExistingTrigger_whenGetIsCalled_then404IsReturned() throws Exception { + Mockito.when(simpleTriggerService.getSimpleTriggerByName("not_existing_trigger_name")).thenThrow(new TriggerNotFoundException("not_existing_trigger_name")); + + mockMvc.perform(get(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/not_existing_trigger_name") + .contentType(MediaType.APPLICATION_JSON)).andExpect(MockMvcResultMatchers.status().isNotFound()); + } + + + @Test + void givenAMinimalSimpleTriggerCommandDTO_whenPosted_thenANewSimpleTriggerIsCreated() throws Exception { + SimpleTriggerInputDTO simpleTriggerInputDTO = buildAMinimalSimpleTriggerCommandDTO(); + SimpleTriggerDTO expectedSimpleTriggerDTO = TriggerUtils.getSimpleTriggerInstance("my-minimal-trigger"); + Mockito.when(simpleTriggerService.scheduleSimpleTrigger(any())).thenReturn(expectedSimpleTriggerDTO); + mockMvc.perform( + post(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/my-minimal-trigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(simpleTriggerInputDTO)) + ) + .andExpect(MockMvcResultMatchers.status().isCreated()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedSimpleTriggerDTO))) + ; + } + + private SimpleTriggerInputDTO buildAMinimalSimpleTriggerCommandDTO() { + return SimpleTriggerInputDTO.builder() + .jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob") + .build(); + } + + @Test + void givenStartDateAndEndDateEqual_whenScheduled_thenANewSimpleTriggerIsCreated() throws Exception { + SimpleTriggerInputDTO simpleTriggerInputDTO = buildAMinimalSimpleTriggerCommandDTO(); + Date now = new Date(); + simpleTriggerInputDTO.setStartDate(now); + simpleTriggerInputDTO.setEndDate(now); + SimpleTriggerDTO expectedSimpleTriggerDTO = TriggerUtils.getSimpleTriggerInstance("my-puntual-trigger"); + Mockito.when(simpleTriggerService.scheduleSimpleTrigger(any())).thenReturn(expectedSimpleTriggerDTO); + mockMvc.perform( + post(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/my-puntual-trigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(simpleTriggerInputDTO)) + ) + .andExpect(MockMvcResultMatchers.status().isCreated()) + .andExpect(MockMvcResultMatchers.content().json(TestUtils.toJson(expectedSimpleTriggerDTO))) + ; + } + + @ParameterizedTest + @ArgumentsSource(InvalidSimpleTriggerCommandDTOProvider.class) + void givenAnInvalidSimpleTriggerCommandDTO_whenPostedANewTrigger_thenAnErrorIsReturned(SimpleTriggerInputDTO invalidSimpleTriggerComandDTO) throws Exception { + mockMvc.perform(post(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(invalidSimpleTriggerComandDTO))) + .andExpect(MockMvcResultMatchers.status().is4xxClientError()); + } + + @ParameterizedTest + @ArgumentsSource(InvalidSimpleTriggerCommandDTOProvider.class) + void givenAnInvalidSimpleTriggerCommandDTO_whenATriggerIsRescheduled_thenAnErrorIsReturned(SimpleTriggerInputDTO invalidSimpleTriggerCommandTO) throws Exception { + mockMvc.perform(put(SimpleTriggerController.SIMPLE_TRIGGER_CONTROLLER_BASE_URL + "/mytrigger") + .contentType(MediaType.APPLICATION_JSON) + .content(TestUtils.toJson(invalidSimpleTriggerCommandTO))) + .andExpect(MockMvcResultMatchers.status().is4xxClientError()); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java new file mode 100644 index 000000000..88a0b11a9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java @@ -0,0 +1,19 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.exceptions.ResourceConflictException; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping(TestController.TEST_CONTROLLER_BASE_URL) +@RestController +public class TestController { + + public static final String TEST_CONTROLLER_BASE_URL = "/test-controller"; + + @PostMapping("/test-conflict") + public void raiseConflictException(){ + throw new ResourceConflictException(1000L, "another entity has found with the same ID"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java new file mode 100644 index 000000000..fdc2e3508 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.api.controllers; + +import it.fabioformosa.quartzmanager.api.QuartManagerApplicationTests; +import it.fabioformosa.quartzmanager.api.services.TriggerService; +import org.junit.jupiter.api.AfterEach; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest; +import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.test.context.ContextConfiguration; +import org.springframework.test.web.servlet.MockMvc; + +@ContextConfiguration(classes = {QuartManagerApplicationTests.class}) +@WebMvcTest(controllers = TriggerController.class, properties = { + "quartz-manager.jobClassPackages=it.fabioformosa.quartzmanager.jobs" +}) +class TriggerControllerTest { + + @Autowired + private MockMvc mockMvc; + + @MockBean + private TriggerService triggerService; + + @AfterEach + void cleanUp(){ + Mockito.reset(triggerService); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java new file mode 100644 index 000000000..4364f1ce9 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java @@ -0,0 +1,49 @@ +package it.fabioformosa.quartzmanager.api.controllers.utils; + +import it.fabioformosa.quartzmanager.api.common.utils.DateUtils; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerInputDTO; +import org.junit.jupiter.api.extension.ExtensionContext; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.ArgumentsProvider; + +import java.util.Date; +import java.util.stream.Stream; + +public class InvalidSimpleTriggerCommandDTOProvider implements ArgumentsProvider { + @Override + public Stream provideArguments(ExtensionContext extensionContext) { + return Stream.of( + Arguments.of(buildSimpleTriggerWithBlankMandatoryFields()), + Arguments.of(buildSimpleTriggerWithRepeatCountAndWithoutRepeatInterval()), + Arguments.of(buildSimpleTriggerWithRepeatIntervalAndWithoutRepeatCount()), + Arguments.of(buildSimpleTriggerWithNegativeRepeatInterval()), + Arguments.of(buildSimpleTriggerWithInvalidTriggerPeriod()) + ); + } + + private SimpleTriggerInputDTO buildSimpleTriggerWithNegativeRepeatInterval() { + return minimalSimpleTriggerBuilder().repeatInterval(-2000L).repeatCount(10).build(); + } + + private static SimpleTriggerInputDTO buildSimpleTriggerWithRepeatIntervalAndWithoutRepeatCount() { + return minimalSimpleTriggerBuilder().repeatInterval(1L).build(); + } + + private static SimpleTriggerInputDTO.SimpleTriggerInputDTOBuilder minimalSimpleTriggerBuilder() { + return SimpleTriggerInputDTO.builder() + .jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob"); + } + + private static SimpleTriggerInputDTO buildSimpleTriggerWithRepeatCountAndWithoutRepeatInterval() { + return minimalSimpleTriggerBuilder().repeatCount(1).build(); + } + + private static SimpleTriggerInputDTO buildSimpleTriggerWithBlankMandatoryFields() { + return SimpleTriggerInputDTO.builder().build(); + } + + private static SimpleTriggerInputDTO buildSimpleTriggerWithInvalidTriggerPeriod() { + return minimalSimpleTriggerBuilder().endDate(new Date()).startDate(DateUtils.addHoursToNow(1)).build(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java new file mode 100644 index 000000000..fb12b973f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java @@ -0,0 +1,21 @@ +package it.fabioformosa.quartzmanager.api.controllers.utils; + +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializationFeature; +import com.fasterxml.jackson.databind.util.StdDateFormat; +import lombok.SneakyThrows; + +public class TestUtils { + + static public ObjectMapper objectMapper = new ObjectMapper(); + static{ + objectMapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS); + objectMapper.setDateFormat(new StdDateFormat().withColonInTimeZone(true)); // StdDateFormat is ISO8601 since jackson 2.9 + } + + @SneakyThrows + static public String toJson(Object object){ + return objectMapper.writeValueAsString(object); + }; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java new file mode 100644 index 000000000..4add3722c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java @@ -0,0 +1,127 @@ +package it.fabioformosa.quartzmanager.api.controllers.utils; + +import it.fabioformosa.quartzmanager.api.common.utils.DateUtils; +import it.fabioformosa.quartzmanager.api.dto.*; +import org.quartz.JobDataMap; +import org.quartz.SimpleScheduleBuilder; +import org.quartz.SimpleTrigger; +import org.quartz.Trigger; +import org.quartz.TriggerBuilder; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.time.LocalDateTime; +import java.util.Date; +import java.util.Map; + +import static java.util.Map.entry; + +public class TriggerUtils { + + static public TriggerDTO getTriggerInstance(String triggerName) { + return TriggerDTO.builder() + .description("sample trigger") + .endTime(DateUtils.addHoursToNow(2L)) + .finalFireTime(DateUtils.addHoursToNow(2L)) + .jobKeyDTO(JobKeyDTO.builder() + .group("defaultJobGroup") + .name("sampleJob") + .build()) + .mayFireAgain(true) + .triggerKeyDTO(TriggerKeyDTO.builder() + .group("defaultTriggerGroup") + .name(triggerName) + .build()) + .misfireInstruction(1) + .nextFireTime(DateUtils.addHoursToNow(1L)) + .priority(1) + .startTime(DateUtils.fromLocalDateTimeToDate(LocalDateTime.now())) + .build(); + } + + static public SimpleTriggerDTO getSimpleTriggerInstance(String triggerName, SimpleTriggerInputDTO simpleTriggerInputDTO) { + return SimpleTriggerDTO.builder() + .description("simple trigger") + .repeatCount(simpleTriggerInputDTO.getRepeatCount()) + .repeatInterval(simpleTriggerInputDTO.getRepeatInterval()) + .endTime(DateUtils.addHoursToNow(2L)) + .finalFireTime(DateUtils.addHoursToNow(2L)) + .jobKeyDTO(JobKeyDTO.builder() + .group("defaultJobGroup") + .name("sampleJob") + .build()) + .mayFireAgain(true) + .triggerKeyDTO(TriggerKeyDTO.builder() + .group("defaultTriggerGroup") + .name(triggerName) + .build()) + .misfireInstruction(1) + .nextFireTime(DateUtils.addHoursToNow(1L)) + .priority(1) + .startTime(DateUtils.fromLocalDateTimeToDate(LocalDateTime.now())) + .jobDataMap(new JobDataMap(simpleTriggerInputDTO.getJobDataMap())) + .build(); + } + + static public SimpleTriggerDTO getSimpleTriggerInstance(String triggerName) { + return SimpleTriggerDTO.builder() + .description("simple trigger") + .repeatCount(2) + .repeatInterval(1000L) + .endTime(DateUtils.addHoursToNow(2L)) + .finalFireTime(DateUtils.addHoursToNow(2L)) + .jobKeyDTO(JobKeyDTO.builder() + .group("defaultJobGroup") + .name("sampleJob") + .build()) + .mayFireAgain(true) + .triggerKeyDTO(TriggerKeyDTO.builder() + .group("defaultTriggerGroup") + .name(triggerName) + .build()) + .misfireInstruction(1) + .nextFireTime(DateUtils.addHoursToNow(1L)) + .priority(1) + .startTime(DateUtils.fromLocalDateTimeToDate(LocalDateTime.now())) + .jobDataMap(new JobDataMap(Map.ofEntries(entry("customTriggerData1", "value1")))) + .build(); + } + + static public SimpleTrigger buildSimpleTrigger() { + TriggerBuilder triggerTriggerBuilder = TriggerBuilder.newTrigger(); + triggerTriggerBuilder.startAt(new Date()); + triggerTriggerBuilder.endAt(DateUtils.addHoursToNow(1)); + triggerTriggerBuilder.usingJobData(new JobDataMap(Map.ofEntries(entry("data", "value")))); + + SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule(); + scheduleBuilder.withIntervalInMilliseconds(1000); + scheduleBuilder.withRepeatCount(1); + scheduleBuilder.withMisfireHandlingInstructionFireNow(); + + return triggerTriggerBuilder.withSchedule( + scheduleBuilder + ) + .withIdentity("simpleTrigger").build(); + } + + static public SimpleTriggerCommandDTO buildSimpleTriggerCommandDTO(String triggerName) throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date startDate = dateFormat.parse("2024-02-02"); + Date endDate = dateFormat.parse("2024-03-02"); + + SimpleTriggerInputDTO triggerInputDTO = SimpleTriggerInputDTO.builder() + .misfireInstruction(MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW) + .jobClass("sample.jobClass") + .repeatCount(1) + .repeatInterval(1000L) + .startDate(startDate) + .endDate(endDate) + .jobDataMap(Map.ofEntries(entry("data", "value"))) + .build(); + return SimpleTriggerCommandDTO.builder() + .triggerName(triggerName) + .simpleTriggerInputDTO(triggerInputDTO) + .build(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java new file mode 100644 index 000000000..872934892 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java @@ -0,0 +1,71 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import it.fabioformosa.quartzmanager.api.enums.SchedulerStatus; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.convert.ConversionService; +import org.springframework.test.annotation.DirtiesContext; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@SpringBootTest +class SchedulerToSchedulerDTOTest { + + @Autowired + private Scheduler scheduler; + + @Autowired + private ConversionService conversionService; + + + + @Order(1) + @Test + void givenAnActiveScheduler_whenItIsConverted_thenADtoIsReturned () throws SchedulerException { + Assertions.assertThat(scheduler.isShutdown()).isFalse(); + SchedulerDTO schedulerDTO = conversionService.convert(scheduler, SchedulerDTO.class); + Assertions.assertThat(schedulerDTO).isNotNull(); + Assertions.assertThat(schedulerDTO.getName()).isEqualTo(scheduler.getSchedulerName()); + Assertions.assertThat(schedulerDTO.getInstanceId()).isEqualTo(scheduler.getSchedulerInstanceId()); + } + + @Order(2) + @Test + void givenAnActiveScheduler_whenItIsConverted_thenADtoHasAStatus () throws SchedulerException { + scheduler.start(); + Assertions.assertThat(scheduler.isStarted()).isTrue(); + SchedulerDTO schedulerDTO = conversionService.convert(scheduler, SchedulerDTO.class); + Assertions.assertThat(schedulerDTO.getStatus()).isEqualTo(SchedulerStatus.RUNNING); + + scheduler.standby(); + Assertions.assertThat(scheduler.isInStandbyMode()).isTrue(); + schedulerDTO = conversionService.convert(scheduler, SchedulerDTO.class); + Assertions.assertThat(schedulerDTO.getStatus()).isEqualTo(SchedulerStatus.PAUSED); + + } + + @DirtiesContext + @Order(3) + @Test + void givenASchedulerInShutdown_whenItIsConverted_thenADtoIsReturnedWithNoTriggers () throws SchedulerException { + Assertions.assertThat(scheduler.isShutdown()).isFalse(); + scheduler.shutdown(false); + Assertions.assertThat(scheduler.isShutdown()).isTrue(); + + SchedulerDTO schedulerDTO = conversionService.convert(scheduler, SchedulerDTO.class); + Assertions.assertThat(schedulerDTO).isNotNull(); + Assertions.assertThat(schedulerDTO.getName()).isEqualTo(scheduler.getSchedulerName()); + Assertions.assertThat(schedulerDTO.getInstanceId()).isEqualTo(scheduler.getSchedulerInstanceId()); + Assertions.assertThat(schedulerDTO.getTriggerKeys()).isNull(); + Assertions.assertThat(schedulerDTO.getStatus()).isEqualTo(SchedulerStatus.STOPPED); + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java new file mode 100644 index 000000000..63ba0cfc7 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java @@ -0,0 +1,41 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.quartzmanager.api.controllers.utils.TriggerUtils; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.quartz.SimpleTrigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.convert.ConversionService; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@SpringBootTest +class SimpleTriggerCommandDTOToSimpleTriggerTest { + + @Autowired + private ConversionService conversionService; + + @Order(1) + @Test + void givenSimpleTriggerCommandDTO_whenItIsConverted_thenASimpleTriggerIsReturned() throws ParseException { + SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); + Date startDate = dateFormat.parse("2024-02-02"); + Date endDate = dateFormat.parse("2024-03-02"); + SimpleTriggerCommandDTO simpleTriggerCommandDTO = TriggerUtils.buildSimpleTriggerCommandDTO("mytrigger"); + SimpleTrigger simpleTrigger = conversionService.convert(simpleTriggerCommandDTO, SimpleTrigger.class); + Assertions.assertThat(simpleTrigger).isNotNull(); + Assertions.assertThat(simpleTrigger.getRepeatCount()).isEqualTo(simpleTriggerCommandDTO.getSimpleTriggerInputDTO().getRepeatCount()); + Assertions.assertThat(simpleTrigger.getRepeatInterval()).isEqualTo(simpleTriggerCommandDTO.getSimpleTriggerInputDTO().getRepeatInterval()); + Assertions.assertThat(simpleTrigger.getJobDataMap()).containsEntry("data", "value"); + Assertions.assertThat(simpleTrigger.getStartTime()).isEqualTo(startDate); + Assertions.assertThat(simpleTrigger.getEndTime()).isEqualTo(endDate); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java new file mode 100644 index 000000000..fa63edd8b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java @@ -0,0 +1,36 @@ +package it.fabioformosa.quartzmanager.api.converters; + +import it.fabioformosa.quartzmanager.api.controllers.utils.TriggerUtils; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.quartz.SimpleTrigger; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.core.convert.ConversionService; + + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@SpringBootTest +class SimpleTriggerToSimpleTriggerDTOTest { + + @Autowired + private ConversionService conversionService; + + @Order(1) + @Test + void givenSimpleTrigger_whenItIsConverted_thenADtoIsReturned() { + SimpleTrigger simpleTrigger = TriggerUtils.buildSimpleTrigger(); + SimpleTriggerDTO simpleTriggerDTO = conversionService.convert(simpleTrigger, SimpleTriggerDTO.class); + Assertions.assertThat(simpleTriggerDTO).isNotNull(); + Assertions.assertThat(simpleTriggerDTO.getRepeatCount()).isEqualTo(simpleTrigger.getRepeatCount()); + Assertions.assertThat(simpleTriggerDTO.getRepeatInterval()).isEqualTo(simpleTrigger.getRepeatInterval()); + Assertions.assertThat(simpleTriggerDTO.getJobDataMap()).containsEntry("data", "value"); + Assertions.assertThat(simpleTriggerDTO.getStartTime()).isEqualTo(simpleTrigger.getStartTime()); + Assertions.assertThat(simpleTriggerDTO.getEndTime()).isEqualTo(simpleTrigger.getEndTime()); + } +} + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java new file mode 100644 index 000000000..a30156989 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java @@ -0,0 +1,33 @@ +package it.fabioformosa.quartzmanager.api.dto; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +import static org.junit.jupiter.api.Assertions.*; + +class TriggerFiredBundleDTOTest { + + @CsvSource({ + "10, 100, 10", + "23, 1000, 2", + "26, 1000, 3" + }) + @ParameterizedTest + void givenARepeatCount_whenTheTriggerHasFiredXTimes_thenThePercentageIsCalculatedAccordingly(int timesTriggered, int repeatCount, int expectedPercentage){ + TriggerFiredBundleDTO triggerFiredBundleDTO = TriggerFiredBundleDTO.builder().build(); + triggerFiredBundleDTO.setTimesTriggered(timesTriggered); + triggerFiredBundleDTO.setRepeatCount(repeatCount); + Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isEqualTo(expectedPercentage); + } + + @Test + void givenAnInfiniteRecursion_whenTheTriggerHasFired10_thenThePercentageIsMinus1(){ + TriggerFiredBundleDTO triggerFiredBundleDTO = TriggerFiredBundleDTO.builder().build(); + triggerFiredBundleDTO.setTimesTriggered(10); + triggerFiredBundleDTO.setRepeatCount(-1); + Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isEqualTo(-1); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java new file mode 100644 index 000000000..0b607165e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java @@ -0,0 +1,13 @@ +package it.fabioformosa.quartzmanager.api.jobs; + +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import org.quartz.JobExecutionContext; + +public class SampleJob extends AbstractQuartzManagerJob { + + @Override + public LogRecord doIt(JobExecutionContext jobExecutionContext) { + return new LogRecord(LogRecord.LogType.INFO, "Hello!"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java new file mode 100644 index 000000000..f56bd0d0e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java @@ -0,0 +1,79 @@ +package it.fabioformosa.quartzmanager.api.jobs; + +import it.fabioformosa.quartzmanager.api.dto.TriggerFiredBundleDTO; +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import it.fabioformosa.quartzmanager.api.websockets.WebhookSender; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.quartz.*; + +import static org.mockito.ArgumentMatchers.argThat; + +class SampleJobTest { + + @InjectMocks + private SampleJob sampleJob; + + @Mock + private WebhookSender webSocketProgressNotifier; + @Mock + private WebhookSender webSocketLogsNotifier; + + @BeforeEach + void setUp() { + MockitoAnnotations.openMocks(this); + } + + @Test + void givenASampleJob_whenTheJobIsExecuted_thenTheWebhookSendersAreCalled() { + JobExecutionContext jobExecutionContext = Mockito.mock(JobExecutionContext.class); + + ScheduleBuilder schedulerBuilder = SimpleScheduleBuilder.simpleSchedule() + .withRepeatCount(5) + .withIntervalInMilliseconds(1000L); + JobDetail jobDetail = JobBuilder + .newJob(SampleJob.class).withIdentity(JobKey.jobKey("test-job")) + .build(); + Trigger trigger = TriggerBuilder.newTrigger() + .forJob(jobDetail) + .withSchedule(schedulerBuilder) + .build(); + Mockito.when(jobExecutionContext.getTrigger()).thenReturn(trigger); + Mockito.when(jobExecutionContext.getJobDetail()).thenReturn(jobDetail); + + sampleJob.execute(jobExecutionContext); + Mockito.verify(webSocketLogsNotifier).send(argThat(actualLogRecord -> { + Assertions.assertThat(actualLogRecord.getMessage()).isEqualTo("Hello!"); + Assertions.assertThat(actualLogRecord.getType()).isEqualTo(LogRecord.LogType.INFO); + Assertions.assertThat(actualLogRecord.getDate()).isNotNull(); + Assertions.assertThat(actualLogRecord.getThreadName()).isNotNull(); + return true; + })); + Mockito.verify(webSocketProgressNotifier).send(argThat(triggerFiredBundleDTO -> { + Assertions.assertThat(triggerFiredBundleDTO.getJobKey()).isEqualTo("test-job"); + Assertions.assertThat(triggerFiredBundleDTO.getRepeatCount()).isEqualTo(6); + Assertions.assertThat(triggerFiredBundleDTO.getJobClass()).isEqualTo(SampleJob.class.getName()); + Assertions.assertThat(triggerFiredBundleDTO.getTimesTriggered()).isZero(); + Assertions.assertThat(triggerFiredBundleDTO.getNextFireTime()).isNull(); + Assertions.assertThat(triggerFiredBundleDTO.getPercentage()).isZero(); + Assertions.assertThat(triggerFiredBundleDTO.getFinalFireTime()).isNotNull(); + Assertions.assertThat(triggerFiredBundleDTO.getPreviousFireTime()).isNull(); + return true; + })); + } + + @Test + void givenASampleJob_whenTheDoItMethodIsCalled_thenALogRecordIsReturned() { + JobExecutionContext jobExecutionContext = Mockito.mock(JobExecutionContext.class); + LogRecord logRecord = sampleJob.doIt(jobExecutionContext); + Assertions.assertThat(logRecord.getMessage()).isEqualTo("Hello!"); + Assertions.assertThat(logRecord.getType()).isEqualTo(LogRecord.LogType.INFO); + Assertions.assertThat(logRecord.getDate()).isNotNull(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java new file mode 100644 index 000000000..10cf4248b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java @@ -0,0 +1,45 @@ +package it.fabioformosa.quartzmanager.api.services; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; + + +class JobServiceTest { + + @Test + void givenTwoJobClassesInTwoPackages_whenTheJobServiceIsCalled_shouldReturnTwoJobClasses(){ + JobService jobService = new JobService("it.fabioformosa.quartzmanager.api.jobs, it.fabioformosa.samplepackage"); + jobService.initJobClassList(); + Assertions.assertThat(jobService).isNotNull(); + Assertions.assertThat(jobService.getJobClasses()).hasSize(2); + } + + @ParameterizedTest + @ValueSource(strings = { + "it.fabioformosa.quartzmanager.api.jobs", + "it.fabioformosa.quartzmanager.api.jobs,", + ",it.fabioformosa.quartzmanager.api.jobs" + }) + void givenOnePackage_whenTheJobServiceIsCalled_shouldReturnOneJobClasses(String packageStr){ + JobService jobService = new JobService(packageStr); + jobService.initJobClassList(); + Assertions.assertThat(jobService).isNotNull(); + Assertions.assertThat(jobService.getJobClasses()).hasSize(1); + } + + @ParameterizedTest + @ValueSource(strings = { + "", + ",", + ", " + }) + void givenNoPackages_whenTheJobServiceIsCalled_shouldReturnNoJobClasses(String packageStr){ + JobService jobService = new JobService(packageStr); + jobService.initJobClassList(); + Assertions.assertThat(jobService).isNotNull(); + Assertions.assertThat(jobService.getJobClasses()).isEmpty(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java new file mode 100644 index 000000000..1f54ccc16 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java @@ -0,0 +1,57 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.Order; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.TestMethodOrder; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.annotation.DirtiesContext; + +@TestMethodOrder(MethodOrderer.OrderAnnotation.class) +@SpringBootTest +class SchedulerServiceIntegrationTest { + + @Autowired + private SchedulerService schedulerService; + + @Autowired + private Scheduler scheduler; + + @Test + void givenASchedulerService_whenGetSchedulerIsCalled_thenReturnIt() throws SchedulerException { + SchedulerDTO schedulerDTO = schedulerService.getScheduler(); + Assertions.assertThat(schedulerDTO).isNotNull(); + Assertions.assertThat(schedulerDTO.getName()).isEqualTo(scheduler.getSchedulerName()); + } + + @Order(1) + @Test + void givenASchedulerService_whenTheStatusIsChange_thenTheSchedulerReflectsTheSame() throws SchedulerException { + Assertions.assertThat(scheduler.isStarted()).isFalse(); + schedulerService.start(); + Assertions.assertThat(scheduler.isStarted()).isTrue(); + } + @Order(2) + @Test + void givenASchedulerService_whenStandByIsCalled_thenTheStandByIsPropagated() throws SchedulerException { + Assertions.assertThat(scheduler.isInStandbyMode()).isFalse(); + schedulerService.standby(); + Assertions.assertThat(scheduler.isInStandbyMode()).isTrue(); + } + + @Order(3) + @DirtiesContext(methodMode = DirtiesContext.MethodMode.AFTER_METHOD) + @Test + void givenASchedulerService_whenShutdownIsCalled_thenTheShutdownIsPropagated() throws SchedulerException { + Assertions.assertThat(scheduler.isShutdown()).isFalse(); + schedulerService.start(); + schedulerService.shutdown(); + Assertions.assertThat(scheduler.isShutdown()).isTrue(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java new file mode 100644 index 000000000..b9d11bb8a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java @@ -0,0 +1,63 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.SchedulerDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.springframework.core.convert.ConversionService; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.MockitoAnnotations.openMocks; + +class SchedulerServiceTest { + + @InjectMocks + private SchedulerService schedulerService; + + @Mock + private Scheduler scheduler; + + @Mock + private ConversionService conversionService; + + @BeforeEach + void setUp() { + openMocks(this); + } + + @Test + void givenASchedulerService_whenGetSchedulerIsCalled_thenReturnIt(){ + Mockito.when(conversionService.convert(any(Scheduler.class), eq(SchedulerDTO.class))).thenReturn(SchedulerDTO.builder() + .name("testScheduler") + .build()); + + SchedulerDTO schedulerDTO = schedulerService.getScheduler(); + Assertions.assertThat(schedulerDTO).isNotNull(); + Assertions.assertThat(schedulerDTO.getName()).isEqualTo("testScheduler"); + } + + @Test + void givenASchedulerService_whenStandByIsCalled_thenTheStandByIsPropagated() throws SchedulerException { + schedulerService.standby(); + Mockito.verify(scheduler).standby(); + } + + @Test + void givenASchedulerService_whenShutdownIsCalled_thenTheShutdownIsPropagated() throws SchedulerException { + schedulerService.shutdown(); + Mockito.verify(scheduler).shutdown(true); + } + + @Test + void givenASchedulerService_whenStarted_thenTheSchedulerIsStarted() throws SchedulerException { + schedulerService.start(); + Mockito.verify(scheduler).start(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java new file mode 100644 index 000000000..f26e8296e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java @@ -0,0 +1,84 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.common.utils.DateUtils; +import it.fabioformosa.quartzmanager.api.dto.MisfireInstruction; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerCommandDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerInputDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.quartz.SchedulerException; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.context.SpringBootTest; + +import java.time.Duration; +import java.time.LocalDateTime; +import java.util.Date; + +@SpringBootTest +class SimpleTriggerServiceIntegrationTest { + + @Autowired + private SimpleTriggerService simpleTriggerService; + + @Test + void givenASimpleTriggerCommandDTOWithAllData_whenANewSimpleTriggerIsScheduled_thenShouldGetATriggertDTO() throws SchedulerException, ClassNotFoundException { + String simpleTriggerTestName = "simpleTriggerWithAllData"; + String jobClass = "it.fabioformosa.quartzmanager.api.jobs.SampleJob"; + Date startDate = new Date(); + Date endDate = DateUtils.addHoursToNow(5); + int repeatCount = 3; + long repeatInterval = 1000L * 60 * 60; + LocalDateTime expectedFinalDateTime = DateUtils.fromDateToLocalDateTime(startDate).plus(Duration.ofHours(3)); + LocalDateTime expectedNextDateTime = DateUtils.fromDateToLocalDateTime(startDate).plus(Duration.ofHours(1)); + MisfireInstruction misfireInstructionFireNow = MisfireInstruction.MISFIRE_INSTRUCTION_FIRE_NOW; + + SimpleTriggerCommandDTO simpleTriggerCommand = SimpleTriggerCommandDTO.builder() + .triggerName(simpleTriggerTestName) + .simpleTriggerInputDTO(SimpleTriggerInputDTO.builder() + .startDate(startDate) + .endDate(endDate) + .repeatCount(repeatCount) + .repeatInterval(repeatInterval) + .misfireInstruction(misfireInstructionFireNow) + .jobClass(jobClass) + .build()) + .build(); + SimpleTriggerDTO simpleTriggerDTO = simpleTriggerService.scheduleSimpleTrigger(simpleTriggerCommand); + + Assertions.assertThat(simpleTriggerDTO.getTriggerKeyDTO().getName()).isEqualTo(simpleTriggerTestName); + Assertions.assertThat(simpleTriggerDTO.getStartTime()).isEqualTo(startDate); + Assertions.assertThat(simpleTriggerDTO.getEndTime()).isEqualTo(endDate); + Assertions.assertThat(simpleTriggerDTO.getRepeatCount()).isEqualTo(repeatCount); + Assertions.assertThat(simpleTriggerDTO.getRepeatInterval()).isEqualTo(repeatInterval); + Assertions.assertThat(simpleTriggerDTO.getMisfireInstruction()).isEqualTo(misfireInstructionFireNow.getNum()); + Assertions.assertThat(simpleTriggerDTO.getTimesTriggered()).isZero(); + Assertions.assertThat(simpleTriggerDTO.getFinalFireTime()).isEqualTo(DateUtils.fromLocalDateTimeToDate(expectedFinalDateTime)); + Assertions.assertThat(simpleTriggerDTO.getNextFireTime()).isEqualTo(startDate); + Assertions.assertThat(simpleTriggerDTO.getJobKeyDTO().getName()).isNotNull(); + } + + @Test + void givenASimpleTriggerCommandDTOWithMissingOptionalField_whenANewSimpleTriggerIsScheduled_thenShouldGetATriggertDTO() throws SchedulerException, ClassNotFoundException { + String simpleTriggerTestName = "simpleTriggerWithoutOptionalData"; + String jobClass = "it.fabioformosa.quartzmanager.api.jobs.SampleJob"; + + SimpleTriggerCommandDTO simpleTriggerCommand = SimpleTriggerCommandDTO.builder() + .triggerName(simpleTriggerTestName) + .simpleTriggerInputDTO(SimpleTriggerInputDTO.builder() + .jobClass(jobClass) + .build()) + .build(); + SimpleTriggerDTO simpleTriggerDTO = simpleTriggerService.scheduleSimpleTrigger(simpleTriggerCommand); + + Assertions.assertThat(simpleTriggerDTO.getTriggerKeyDTO().getName()).isEqualTo(simpleTriggerTestName); + Assertions.assertThat(simpleTriggerDTO.getTimesTriggered()).isZero(); + Assertions.assertThat(simpleTriggerDTO.getJobKeyDTO().getName()).isNotNull(); + Assertions.assertThat(simpleTriggerDTO.getStartTime()).isNotNull(); + Assertions.assertThat(simpleTriggerDTO.getEndTime()).isNull(); + Assertions.assertThat(simpleTriggerDTO.getFinalFireTime()).isNotNull(); + Assertions.assertThat(simpleTriggerDTO.getRepeatCount()).isZero(); + Assertions.assertThat(simpleTriggerDTO.getRepeatInterval()).isZero(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java new file mode 100644 index 000000000..e396c978b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java @@ -0,0 +1,132 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.common.utils.DateUtils; +import it.fabioformosa.quartzmanager.api.dto.*; +import it.fabioformosa.quartzmanager.api.exceptions.TriggerNotFoundException; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.quartz.*; +import org.springframework.core.convert.ConversionService; + +import java.util.Date; + +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.MockitoAnnotations.openMocks; + +class SimpleTriggerServiceTest { + + @InjectMocks + private SimpleTriggerService simpleSchedulerService; + + @Mock + private Scheduler scheduler; + + @Mock + private ConversionService conversionService; + + @BeforeEach + void setUp() { + openMocks(this); + } + + @Test + void givenANotExistingTrigger_whenGetSimplerTriggerByNameIsCalled_thenThrowException() throws SchedulerException { + String not_existing_trigger = "not_existing_trigger"; + Mockito.when(scheduler.getTrigger(any())).thenReturn(null); + + Throwable throwable = Assertions.catchThrowable(() -> simpleSchedulerService.getSimpleTriggerByName(not_existing_trigger)); + Assertions.assertThat(throwable).isInstanceOf(TriggerNotFoundException.class); + } + + @Test + void givenAnExistingTrigger_whenGetSimplerTriggerByNameIsCalled_thenTheDtoIsReturned() throws SchedulerException, TriggerNotFoundException { + String existing_trigger = "existing_trigger"; + Mockito.when(scheduler.getTrigger(any(TriggerKey.class))) + .thenReturn(TriggerBuilder.newTrigger().withIdentity(existing_trigger).build()); + Mockito.when(conversionService.convert(any(SimpleTrigger.class), eq(SimpleTriggerDTO.class))) + .thenReturn(SimpleTriggerDTO.builder() + .triggerKeyDTO(TriggerKeyDTO.builder().name(existing_trigger).build()) + .build()); + + + SimpleTriggerDTO simpleTriggerByName = simpleSchedulerService.getSimpleTriggerByName(existing_trigger); + Assertions.assertThat(simpleTriggerByName.getTriggerKeyDTO().getName()).isEqualTo(existing_trigger); + } + + @Test + void givenASimpleTriggerCommandDTO_whenASimpleTriggerIsScheduled_thenATriggerDTOIsReturned() throws SchedulerException, ClassNotFoundException { + SimpleTriggerInputDTO triggerInputDTO = SimpleTriggerInputDTO.builder() + .jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob") + .startDate(new Date()) + .repeatInterval(5000L).repeatCount(5) + .endDate(DateUtils.addHoursToNow(1)) + .build(); + + String simpleTriggerName = "simpleTrigger"; + + SimpleTriggerDTO expectedTriggerDTO = SimpleTriggerDTO.builder() + .startTime(triggerInputDTO.getStartDate()) + .repeatInterval(1000) + .repeatCount(10) + .mayFireAgain(true) + .finalFireTime(triggerInputDTO.getEndDate()) + .jobKeyDTO(JobKeyDTO.builder().name("MyJob").build()) + .misfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW) + .triggerKeyDTO(TriggerKeyDTO.builder().name(simpleTriggerName).build()) + .build(); + + Mockito.when(scheduler.scheduleJob(any(), any())).thenReturn(new Date()); + Mockito.when(conversionService.convert(any(), eq(SimpleTriggerDTO.class))).thenReturn(expectedTriggerDTO); + + SimpleTriggerCommandDTO simpleTriggerCommandDTO = SimpleTriggerCommandDTO.builder() + .triggerName(simpleTriggerName) + .simpleTriggerInputDTO(triggerInputDTO) + .build(); + SimpleTriggerDTO simpleTrigger = simpleSchedulerService.scheduleSimpleTrigger(simpleTriggerCommandDTO); + + Assertions.assertThat(simpleTrigger).isEqualTo(expectedTriggerDTO); + } + + @Test + void givenASimpleTriggerCommandDTO_whenASimpleTriggerIsRecheduled_thenATriggerDTOIsReturned() throws SchedulerException, ClassNotFoundException { + SimpleTriggerInputDTO triggerInputDTO = SimpleTriggerInputDTO.builder() + .jobClass("it.fabioformosa.quartzmanager.api.jobs.SampleJob") + .startDate(new Date()) + .repeatInterval(5000L).repeatCount(5) + .endDate(DateUtils.addHoursToNow(1)) + .build(); + + String simpleTriggerName = "simpleTrigger"; + + SimpleTriggerDTO expectedTriggerDTO = SimpleTriggerDTO.builder() + .startTime(triggerInputDTO.getStartDate()) + .repeatInterval(1000) + .repeatCount(10) + .mayFireAgain(true) + .finalFireTime(triggerInputDTO.getEndDate()) + .jobKeyDTO(JobKeyDTO.builder().name("MyJob").build()) + .misfireInstruction(SimpleTrigger.MISFIRE_INSTRUCTION_FIRE_NOW) + .triggerKeyDTO(TriggerKeyDTO.builder().name(simpleTriggerName).build()) + .build(); + + Mockito.when(scheduler.rescheduleJob(any(), any())).thenReturn(new Date()); + Mockito.when(conversionService.convert(any(), eq(SimpleTriggerDTO.class))).thenReturn(expectedTriggerDTO); + + SimpleTriggerCommandDTO simpleTriggerCommandDTO = SimpleTriggerCommandDTO.builder() + .triggerName(simpleTriggerName) + .simpleTriggerInputDTO(triggerInputDTO) + .build(); + SimpleTriggerDTO simpleTrigger = simpleSchedulerService.rescheduleSimpleTrigger(simpleTriggerCommandDTO); + + Assertions.assertThat(simpleTrigger).isEqualTo(expectedTriggerDTO); + + Mockito.verify(scheduler).rescheduleJob(any(), any()); + Mockito.verify(conversionService).convert(any(), eq(SimpleTriggerDTO.class)); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java new file mode 100644 index 000000000..0d7979d34 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java @@ -0,0 +1,50 @@ +package it.fabioformosa.quartzmanager.api.services; + +import it.fabioformosa.quartzmanager.api.dto.TriggerKeyDTO; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.mockito.MockitoAnnotations; +import org.quartz.Scheduler; +import org.quartz.SchedulerException; +import org.quartz.TriggerKey; +import org.springframework.core.convert.ConversionService; +import org.springframework.core.convert.TypeDescriptor; + +import java.util.List; +import java.util.Set; + +import static org.mockito.ArgumentMatchers.any; + +class TriggerServiceTest { + + @InjectMocks + private TriggerService triggerService; + + @Mock + private Scheduler scheduler; + + @Mock + private ConversionService conversionService; + + @BeforeEach + void setUp(){ + MockitoAnnotations.openMocks(this); + } + + @Test + void givenATrigger_whenTheyAreFecthed_TheServiceReturnsTheDtos() throws SchedulerException { + String triggerTestName = "triggerTest"; + Mockito.when(scheduler.getTriggerKeys(any())).thenReturn(Set.of(TriggerKey.triggerKey(triggerTestName))); + Mockito.when(conversionService.convert(any(Set.class), any(TypeDescriptor.class), any(TypeDescriptor.class))) + .thenReturn(List.of(TriggerKeyDTO.builder().name(triggerTestName).build())); + + List triggerKeyDTOs = triggerService.fetchTriggers(); + Assertions.assertThat(triggerKeyDTOs).hasSize(1); + Assertions.assertThat(triggerKeyDTOs.get(0).getName()).isEqualTo(triggerTestName); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java new file mode 100644 index 000000000..c2e41fe72 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java @@ -0,0 +1,51 @@ +package it.fabioformosa.quartzmanager.api.validators; + +import it.fabioformosa.quartzmanager.api.dto.TriggerRepetitionDTO; +import it.fabioformosa.quartzmanager.api.dto.SimpleTriggerInputDTO; +import org.apache.commons.lang3.StringUtils; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.CsvSource; + +class ValidRepetitionValidatorTest { + + private ValidRepetitionValidator validRepetitionValidator = new ValidRepetitionValidator(); + + @Test + void givenACountAndIntervalSet_whenTheValidatorIsCalled_shouldReturnValid() { + TriggerRepetitionDTO repetitionDTO = new SimpleTriggerInputDTO(); + repetitionDTO.setRepeatCount(10); + repetitionDTO.setRepeatInterval(1000L); + boolean valid = validRepetitionValidator.isValid(repetitionDTO, null); + Assertions.assertThat(valid).isTrue(); + } + + @Test + void givenACountAndIntervalUnSet_whenTheValidatorIsCalled_shouldReturnInValid() { + TriggerRepetitionDTO repetitionDTO = new SimpleTriggerInputDTO(); + boolean valid = validRepetitionValidator.isValid(repetitionDTO, null); + Assertions.assertThat(valid).isTrue(); + } + + @ParameterizedTest + @CsvSource({"10, ", ",1000"}) + void givenACountAndIntervalNotSet_whenTheValidatorIsCalled_shouldReturnInValid(String repeatCountStr, String repeatIntervalStr) { + Integer repeatCount = null; + if (StringUtils.isNotBlank(repeatCountStr)) + repeatCount = Integer.valueOf(repeatCountStr); + + Long repeatInterval = null; + if (StringUtils.isNotBlank(repeatIntervalStr)) + repeatInterval = Long.valueOf(repeatIntervalStr); + + TriggerRepetitionDTO repetitionDTO = new SimpleTriggerInputDTO(); + repetitionDTO.setRepeatInterval(repeatInterval); + repetitionDTO.setRepeatCount(repeatCount); + + boolean valid = validRepetitionValidator.isValid(repetitionDTO, null); + Assertions.assertThat(valid).isFalse(); + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java new file mode 100644 index 000000000..99a60160f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java @@ -0,0 +1,15 @@ +package it.fabioformosa.samplepackage; + +import it.fabioformosa.quartzmanager.api.jobs.AbstractQuartzManagerJob; +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord.LogType; +import org.quartz.JobExecutionContext; + +public class SampleExtraJob extends AbstractQuartzManagerJob { + + @Override + public LogRecord doIt(JobExecutionContext jobExecutionContext) { + return new LogRecord(LogType.INFO, "Hello!"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml new file mode 100644 index 000000000..7378be2ac --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml @@ -0,0 +1,11 @@ +quartz: + enabled: true + +quartz-manager: + jobClassPackages: it.fabioformosa.quartzmanager.api.jobs + +logging: + level: + org.springframework.boot.autoconfigure.security: INFO + it.fabioformosa: DEBUG + org.quartz: INFO diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties new file mode 100644 index 000000000..524d636f4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties @@ -0,0 +1,2 @@ +#org.quartz.scheduler.instanceName=test //disabled to use the default value +#org.quartz.threadPool.threadCount=1 //disabled to use the default value diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker new file mode 100644 index 000000000..1f0955d45 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker @@ -0,0 +1 @@ +mock-maker-inline diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml new file mode 100644 index 000000000..52f3e0353 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml @@ -0,0 +1,51 @@ + + 4.0.0 + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + + quartz-manager-starter-persistence + + Quartz Manager Starter Security + Persist quartz jobs into a database + + https://github.com/fabioformosa/quartz-manager + + ${basedir}/../.. + UTF-8 + UTF-8 + 9 + + + + + it.fabioformosa.quartz-manager + quartz-manager-common + + + org.liquibase + liquibase-core + + + org.springframework.boot + spring-boot-starter-data-jpa + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.postgresql + postgresql + + + org.projectlombok + lombok + provided + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java new file mode 100644 index 000000000..403d74fd4 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java @@ -0,0 +1,68 @@ +package it.fabioformosa.quartzmanager.api.persistence; + +import it.fabioformosa.quartzmanager.api.common.properties.QuartzModuleProperties; +import liquibase.integration.spring.SpringLiquibase; +import lombok.Data; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.boot.jdbc.DataSourceBuilder; +import org.springframework.context.annotation.*; + +import javax.sql.DataSource; + +@Configuration +public class PersistenceConfig { + + @Value("${quartz-manager.persistence.quartz.datasource.url}") + private String quartzDatasourceUrl; + + @Value("${quartz-manager.persistence.quartz.datasource.user}") + private String quartzDatasourceUser; + + @Value("${quartz-manager.persistence.quartz.datasource.password}") + private String quartzDatasourcePassword; + + @Data + public class PersistenceDatasourceProps { + private String changeLog; + private String contexts; + } + + @Bean + public SpringLiquibase liquibase(PersistenceDatasourceProps persistenceDatasourceProps, DataSource quartzManagerDatasource) { + SpringLiquibase liquibase = new SpringLiquibase(); + liquibase.setContexts(persistenceDatasourceProps.getContexts()); + liquibase.setChangeLog(persistenceDatasourceProps.getChangeLog()); + liquibase.setDataSource(quartzManagerDatasource); + liquibase.setDropFirst(false); + return liquibase; + } + + @Bean + @ConfigurationProperties(prefix = "spring.liquibase") + public PersistenceDatasourceProps persistenceDatasourceProps() { + return new PersistenceDatasourceProps(); + } + + @Bean("quartzPersistenceProperties") + public QuartzModuleProperties persistenceQuartzProps(QuartzPersistencePropConfig quartzPersistencePropConfig) { + QuartzModuleProperties quartzModuleProperties = new QuartzModuleProperties(); + quartzModuleProperties.setProperties(quartzPersistencePropConfig.getProperties()); + quartzModuleProperties.getProperties().setProperty("org.quartz.dataSource.quartzDataSource.URL", quartzDatasourceUrl); + quartzModuleProperties.getProperties().setProperty("org.quartz.dataSource.quartzDataSource.user", quartzDatasourceUser); + quartzModuleProperties.getProperties().setProperty("org.quartz.dataSource.quartzDataSource.password", quartzDatasourcePassword); + return quartzModuleProperties; + } + + @Primary + @Bean + public DataSource quartzManagerDatasource() { + return DataSourceBuilder.create() + .url(quartzDatasourceUrl) + .driverClassName("org.postgresql.Driver") + .username(quartzDatasourceUser) + .password(quartzDatasourcePassword) + .build(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java new file mode 100644 index 000000000..1ac05551a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java @@ -0,0 +1,17 @@ +package it.fabioformosa.quartzmanager.api.persistence; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.PropertySource; + +import java.util.Properties; + +@Configuration +@PropertySource("classpath:quartz-persistence.properties") +@ConfigurationProperties(prefix = "spring.quartz") +@Getter @Setter +public class QuartzPersistencePropConfig { + private Properties properties; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..a36f8dc04 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +it.fabioformosa.quartzmanager.api.persistence.PersistenceConfig diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml new file mode 100644 index 000000000..a3861e1d6 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml @@ -0,0 +1,10 @@ + + + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql new file mode 100644 index 000000000..47ba2bf12 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql @@ -0,0 +1,218 @@ +--liquibase formatted sql + +/* https://github.com/quartz-scheduler/quartz/blob/master/quartz-core/src/main/resources/org/quartz/impl/jdbcjobstore/tables_postgres.sql */ + +--changeset V202102190034_01 (dbms:postgresql) +DROP TABLE IF EXISTS QRTZ_FIRED_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_PAUSED_TRIGGER_GRPS; +DROP TABLE IF EXISTS QRTZ_SCHEDULER_STATE; +DROP TABLE IF EXISTS QRTZ_LOCKS; +DROP TABLE IF EXISTS QRTZ_SIMPLE_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_CRON_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_SIMPROP_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_BLOB_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_TRIGGERS; +DROP TABLE IF EXISTS QRTZ_JOB_DETAILS; +DROP TABLE IF EXISTS QRTZ_CALENDARS; + +--changeset V202102190034_02 (dbms:postgresql) +CREATE TABLE QRTZ_JOB_DETAILS +( + SCHED_NAME VARCHAR(120) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + JOB_CLASS_NAME VARCHAR(250) NOT NULL, + IS_DURABLE BOOL NOT NULL, + IS_NONCONCURRENT BOOL NOT NULL, + IS_UPDATE_DATA BOOL NOT NULL, + REQUESTS_RECOVERY BOOL NOT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +--changeset V202102190034_03 (dbms:postgresql) +CREATE TABLE QRTZ_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + JOB_NAME VARCHAR(200) NOT NULL, + JOB_GROUP VARCHAR(200) NOT NULL, + DESCRIPTION VARCHAR(250) NULL, + NEXT_FIRE_TIME BIGINT NULL, + PREV_FIRE_TIME BIGINT NULL, + PRIORITY INTEGER NULL, + TRIGGER_STATE VARCHAR(16) NOT NULL, + TRIGGER_TYPE VARCHAR(8) NOT NULL, + START_TIME BIGINT NOT NULL, + END_TIME BIGINT NULL, + CALENDAR_NAME VARCHAR(200) NULL, + MISFIRE_INSTR SMALLINT NULL, + JOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, JOB_NAME, JOB_GROUP) + REFERENCES QRTZ_JOB_DETAILS (SCHED_NAME, JOB_NAME, JOB_GROUP) +); + +--changeset V202102190034_04 (dbms:postgresql) +CREATE TABLE QRTZ_SIMPLE_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + REPEAT_COUNT BIGINT NOT NULL, + REPEAT_INTERVAL BIGINT NOT NULL, + TIMES_TRIGGERED BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +--changeset V202102190034_05 (dbms:postgresql) +CREATE TABLE QRTZ_CRON_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + CRON_EXPRESSION VARCHAR(120) NOT NULL, + TIME_ZONE_ID VARCHAR(80), + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +--changeset V202102190034_06 (dbms:postgresql) +CREATE TABLE QRTZ_SIMPROP_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + STR_PROP_1 VARCHAR(512) NULL, + STR_PROP_2 VARCHAR(512) NULL, + STR_PROP_3 VARCHAR(512) NULL, + INT_PROP_1 INT NULL, + INT_PROP_2 INT NULL, + LONG_PROP_1 BIGINT NULL, + LONG_PROP_2 BIGINT NULL, + DEC_PROP_1 NUMERIC(13, 4) NULL, + DEC_PROP_2 NUMERIC(13, 4) NULL, + BOOL_PROP_1 BOOL NULL, + BOOL_PROP_2 BOOL NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +--changeset V202102190034_07 (dbms:postgresql) +CREATE TABLE QRTZ_BLOB_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + BLOB_DATA BYTEA NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP), + FOREIGN KEY (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) + REFERENCES QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP) +); + +--changeset V202102190034_08 (dbms:postgresql) +CREATE TABLE QRTZ_CALENDARS +( + SCHED_NAME VARCHAR(120) NOT NULL, + CALENDAR_NAME VARCHAR(200) NOT NULL, + CALENDAR BYTEA NOT NULL, + PRIMARY KEY (SCHED_NAME, CALENDAR_NAME) +); + +--changeset V202102190034_09 (dbms:postgresql) +CREATE TABLE QRTZ_PAUSED_TRIGGER_GRPS +( + SCHED_NAME VARCHAR(120) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + PRIMARY KEY (SCHED_NAME, TRIGGER_GROUP) +); + +--changeset V202102190034_10 (dbms:postgresql) +CREATE TABLE QRTZ_FIRED_TRIGGERS +( + SCHED_NAME VARCHAR(120) NOT NULL, + ENTRY_ID VARCHAR(95) NOT NULL, + TRIGGER_NAME VARCHAR(200) NOT NULL, + TRIGGER_GROUP VARCHAR(200) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + FIRED_TIME BIGINT NOT NULL, + SCHED_TIME BIGINT NOT NULL, + PRIORITY INTEGER NOT NULL, + STATE VARCHAR(16) NOT NULL, + JOB_NAME VARCHAR(200) NULL, + JOB_GROUP VARCHAR(200) NULL, + IS_NONCONCURRENT BOOL NULL, + REQUESTS_RECOVERY BOOL NULL, + PRIMARY KEY (SCHED_NAME, ENTRY_ID) +); + +--changeset V202102190034_11 (dbms:postgresql) +CREATE TABLE QRTZ_SCHEDULER_STATE +( + SCHED_NAME VARCHAR(120) NOT NULL, + INSTANCE_NAME VARCHAR(200) NOT NULL, + LAST_CHECKIN_TIME BIGINT NOT NULL, + CHECKIN_INTERVAL BIGINT NOT NULL, + PRIMARY KEY (SCHED_NAME, INSTANCE_NAME) +); + +--changeset V202102190034_12 (dbms:postgresql) +CREATE TABLE QRTZ_LOCKS +( + SCHED_NAME VARCHAR(120) NOT NULL, + LOCK_NAME VARCHAR(40) NOT NULL, + PRIMARY KEY (SCHED_NAME, LOCK_NAME) +); + +--changeset V202102190034_13 (dbms:postgresql) +CREATE INDEX IDX_QRTZ_J_REQ_RECOVERY + ON QRTZ_JOB_DETAILS (SCHED_NAME, REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_J_GRP + ON QRTZ_JOB_DETAILS (SCHED_NAME, JOB_GROUP); + +CREATE INDEX IDX_QRTZ_T_J + ON QRTZ_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_JG + ON QRTZ_TRIGGERS (SCHED_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_T_C + ON QRTZ_TRIGGERS (SCHED_NAME, CALENDAR_NAME); +CREATE INDEX IDX_QRTZ_T_G + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_T_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_N_G_STATE + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_GROUP, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NEXT_FIRE_TIME + ON QRTZ_TRIGGERS (SCHED_NAME, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST + ON QRTZ_TRIGGERS (SCHED_NAME, TRIGGER_STATE, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_MISFIRE + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_STATE); +CREATE INDEX IDX_QRTZ_T_NFT_ST_MISFIRE_GRP + ON QRTZ_TRIGGERS (SCHED_NAME, MISFIRE_INSTR, NEXT_FIRE_TIME, TRIGGER_GROUP, TRIGGER_STATE); + +CREATE INDEX IDX_QRTZ_FT_TRIG_INST_NAME + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, INSTANCE_NAME); +CREATE INDEX IDX_QRTZ_FT_INST_JOB_REQ_RCVRY + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, INSTANCE_NAME, REQUESTS_RECOVERY); +CREATE INDEX IDX_QRTZ_FT_J_G + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_JG + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, JOB_GROUP); +CREATE INDEX IDX_QRTZ_FT_T_G + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_NAME, TRIGGER_GROUP); +CREATE INDEX IDX_QRTZ_FT_TG + ON QRTZ_FIRED_TRIGGERS (SCHED_NAME, TRIGGER_GROUP); + + +COMMIT; diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties new file mode 100644 index 000000000..fbd821ce7 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties @@ -0,0 +1,13 @@ +spring.liquibase.change-log=classpath:db/quartz-scheduler/liquibase-changelog-master.xml +spring.liquibase.contexts=default +spring.quartz.job-store-type=jdbc +spring.quartz.initialize-schema=never +spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate +spring.quartz.properties.org.quartz.dataSource.quartzDataSource.driver=org.postgresql.Driver +spring.quartz.properties.org.quartz.dataSource.quartzDataSource.maxConnections=5 +spring.quartz.properties.org.quartz.jobStore.class=org.quartz.impl.jdbcjobstore.JobStoreTX +spring.quartz.properties.org.quartz.jobStore.dataSource=quartzDataSource +spring.quartz.properties.org.quartz.dataSource.quartzDataSource.provider=hikaricp +spring.quartz.properties.org.quartz.jobStore.misfireThreshold=1000 +# org.quartz.jobStore.isClustered=true +# org.quartz.scheduler.instanceId=AUTO diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml new file mode 100644 index 000000000..53d5f7148 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml @@ -0,0 +1,115 @@ + + 4.0.0 + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + + quartz-manager-starter-security + + Quartz Manager Starter Security + Security Layer for Quartz Manager. Import it in your spring webapp + + https://github.com/fabioformosa/quartz-manager + + ${basedir}/../.. + UTF-8 + UTF-8 + 9 + 1.5.12 + **/SpringApplicationTest.java + + + + + + + it.fabioformosa.quartz-manager + quartz-manager-common + + + + + org.springframework.boot + spring-boot-starter-security + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-validation + + + + + io.jsonwebtoken + jjwt + 0.9.0 + + + org.apache.commons + commons-lang3 + + + org.projectlombok + lombok + provided + + + javax.servlet + javax.servlet-api + provided + + + + + org.springdoc + springdoc-openapi-ui + ${springdoc-openapi.version} + true + + + + + org.junit.platform + junit-platform-launcher + test + + + org.springframework.boot + spring-boot-test-autoconfigure + test + + + org.springframework.security + spring-security-test + test + + + org.springframework + spring-test + test + + + org.springframework.boot + spring-boot-starter-test + test + + + org.springframework.boot + spring-boot-starter-web + test + + + org.junit.jupiter + junit-jupiter-params + test + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java new file mode 100644 index 000000000..cdaedae0e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java @@ -0,0 +1,173 @@ +package it.fabioformosa.quartzmanager.api.security; + +import com.fasterxml.jackson.databind.ObjectMapper; +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import it.fabioformosa.quartzmanager.api.security.helpers.LoginConfigurer; +import it.fabioformosa.quartzmanager.api.security.helpers.impl.*; +import it.fabioformosa.quartzmanager.api.security.properties.InMemoryAccountProperties; +import it.fabioformosa.quartzmanager.api.security.properties.JwtSecurityProperties; +import org.apache.commons.lang3.BooleanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Qualifier; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.ComponentScan; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; +import org.springframework.http.HttpMethod; +import org.springframework.http.HttpStatus; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.authentication.configuration.AuthenticationConfiguration; +import org.springframework.security.config.annotation.method.configuration.EnableGlobalMethodSecurity; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityCustomizer; +import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.core.userdetails.User; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.security.provisioning.InMemoryUserDetailsManager; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.security.web.SecurityFilterChain; +import org.springframework.security.web.authentication.HttpStatusEntryPoint; +import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; + +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; + +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.*; + +/** + * @author Fabio.Formosa + */ + +@ComponentScan(basePackages = {"it.fabioformosa.quartzmanager.api.security"}) +@Configuration +@EnableWebSecurity +@EnableGlobalMethodSecurity(prePostEnabled = true) +public class QuartzManagerSecurityConfig { + + private static final String[] PATTERNS_SWAGGER_UI = {"/swagger-ui/**", "/swagger-ui.html", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**"}; + public static final String QUARTZ_MANAGER_API_ANT_MATCHER = QUARTZ_MANAGER_BASE_CONTEXT_PATH + "/**"; + public static final String QUARTZ_MANAGER_UI_ANT_MATCHER = QuartzManagerPaths.WEBJAR_PATH + "/**"; + + @Value("${server.servlet.context-path:/}") + private String contextPath; + + @Value("${app.name:quartz-manager}") + private String appName; + + @Value("${quartz-manager.security.login-model.form-login-enabled:true}") + private Boolean formLoginEnabled; + @Value("${quartz-manager.security.login-model.userpwd-filter-enabled:false}") + private Boolean userpwdFilterEnabled; + + @Autowired + private JwtSecurityProperties jwtSecurityProps; + + @Autowired + private ObjectMapper objectMapper; + + @Bean + public AuthenticationManager authenticationManager(AuthenticationConfiguration authenticationConfiguration) throws Exception { + return authenticationConfiguration.getAuthenticationManager(); + } + + @Bean + public PasswordEncoder quartzManagerPasswordEncoder(){ + return new BCryptPasswordEncoder(); + } + + @Bean(name = "quartzManagerInMemoryAuthentication") + public InMemoryUserDetailsManager configureInMemoryAuthentication(InMemoryAccountProperties inMemoryAccountProps, PasswordEncoder quartzManagerPasswordEncoder) throws Exception { + List users = new ArrayList<>(); + if (inMemoryAccountProps.isEnabled() && inMemoryAccountProps.getUsers() != null && !inMemoryAccountProps.getUsers().isEmpty()) { + users = inMemoryAccountProps.getUsers().stream() + .map(u -> User + .withUsername(u.getUsername()) + .password(quartzManagerPasswordEncoder.encode(u.getPassword())) + .roles(u.getRoles().toArray(new String[0])) + .build()).collect(Collectors.toList()); + } + return new InMemoryUserDetailsManager(users); + } + + @Order(Ordered.HIGHEST_PRECEDENCE) + @Bean(name = "quartzManagerFilterChain") + public SecurityFilterChain filterChain(HttpSecurity http, + @Qualifier("quartzManagerInMemoryAuthentication") InMemoryUserDetailsManager userDetailsService, + AuthenticationManager authenticationManager) throws Exception { + http.antMatcher(QUARTZ_MANAGER_API_ANT_MATCHER).csrf().disable() // + .sessionManagement().sessionCreationPolicy(SessionCreationPolicy.STATELESS).and() // + .exceptionHandling().authenticationEntryPoint(restAuthEntryPoint()).and() // + .addFilterBefore(jwtAuthenticationTokenFilter(userDetailsService), BasicAuthenticationFilter.class) // + .authorizeRequests(); + + QuartzManagerHttpSecurity.from(http).withLoginConfigurer(loginConfigurer(), logoutConfigurer()) // + .login(QUARTZ_MANAGER_LOGIN_PATH, authenticationManager).logout(QUARTZ_MANAGER_LOGOUT_PATH); + + http.authorizeRequests() + .antMatchers(QUARTZ_MANAGER_API_ANT_MATCHER).authenticated(); + + return http.build(); + } + + @Bean(name = "quartzManagerWebSecurityCustomizer") + public WebSecurityCustomizer webSecurityCustomizer(@Value("${quartz-manager.oas.enabled:false}") Boolean oasEnabled) { + return web -> { + web.ignoring()// + .antMatchers(HttpMethod.GET, QUARTZ_MANAGER_UI_ANT_MATCHER); + if(BooleanUtils.isNotFalse(oasEnabled)) + web.ignoring() + .antMatchers(HttpMethod.GET, PATTERNS_SWAGGER_UI); + }; + } + + public LoginConfigurer formLoginConfigurer() { + JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler = jwtAuthenticationSuccessHandler(); + AuthenticationSuccessHandler authenticationSuccessHandler = new AuthenticationSuccessHandler(jwtAuthenticationSuccessHandler); + AuthenticationFailureHandler authenticationFailureHandler = new AuthenticationFailureHandler(); + return new FormLoginConfig(authenticationSuccessHandler, authenticationFailureHandler); + } + + @Bean(name = "quartzManagerJwtAuthenticationSuccessHandler") + public JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler() { + JwtTokenHelper jwtTokenHelper = jwtTokenHelper(); + return new JwtAuthenticationSuccessHandlerImpl(contextPath, jwtSecurityProps, jwtTokenHelper, objectMapper); + } + + public JwtTokenAuthenticationFilter jwtAuthenticationTokenFilter(UserDetailsService userDetailsService) { + return new JwtTokenAuthenticationFilter(jwtTokenHelper(), userDetailsService); + } + + @Bean(name = "quartzManagerJwtTokenHelper") + public JwtTokenHelper jwtTokenHelper() { + return new JwtTokenHelper(appName, jwtSecurityProps); + } + + public LoginConfigurer loginConfigurer() { + if (BooleanUtils.isTrue(userpwdFilterEnabled)) + return userpwdFilterLoginConfigurer(); + if (BooleanUtils.isNotFalse(formLoginEnabled)) + return formLoginConfigurer(); + throw new IllegalStateException("No login configurer enabled!"); + } + + public LogoutSuccess logoutConfigurer() { + return new LogoutSuccess(objectMapper); + } + + @Bean(name = "quartzManagerRestAuthEntryPoint") + public AuthenticationEntryPoint restAuthEntryPoint() { + return new HttpStatusEntryPoint(HttpStatus.UNAUTHORIZED); + } + + public LoginConfigurer userpwdFilterLoginConfigurer() { + return new JwtUsernamePasswordFiterLoginConfig(jwtAuthenticationSuccessHandler()); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java new file mode 100644 index 000000000..87b6fa71f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java @@ -0,0 +1,63 @@ +package it.fabioformosa.quartzmanager.api.security.config; + +import io.swagger.v3.oas.models.Components; +import io.swagger.v3.oas.models.Operation; +import io.swagger.v3.oas.models.PathItem; +import io.swagger.v3.oas.models.media.*; +import io.swagger.v3.oas.models.parameters.RequestBody; +import io.swagger.v3.oas.models.responses.ApiResponse; +import io.swagger.v3.oas.models.responses.ApiResponses; +import io.swagger.v3.oas.models.security.SecurityScheme; +import it.fabioformosa.quartzmanager.api.common.config.OpenAPIConfigConsts; +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import it.fabioformosa.quartzmanager.api.security.properties.JwtSecurityProperties; +import lombok.Generated; +import lombok.extern.slf4j.Slf4j; +import org.springdoc.core.customizers.OpenApiCustomiser; +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.core.Ordered; +import org.springframework.core.annotation.Order; + +import java.util.Arrays; + +@Slf4j +@ConditionalOnProperty(name = "quartz-manager.oas.enabled") +@Configuration +@Generated +public class SecurityOpenApiConfig { + + @Order(Ordered.HIGHEST_PRECEDENCE) + @Bean("quartzManagerOpenApiCustomiser") + public OpenApiCustomiser configureQuartzManagerOpenAPI(JwtSecurityProperties jwtSecurityProps) { + return openAPI -> { + if (!jwtSecurityProps.getCookieStrategy().isEnabled()) + openAPI + .components(new Components().addSecuritySchemes(OpenAPIConfigConsts.QUARTZ_MANAGER_SEC_OAS_SCHEMA, buildBasicAuthScheme())); + + openAPI.path(QuartzManagerPaths.QUARTZ_MANAGER_LOGIN_PATH, + new PathItem().post(new Operation() + .operationId("login") + .tags(Arrays.asList("auth")) + .requestBody(new RequestBody().content( + new Content().addMediaType("application/x-www-form-urlencoded", new MediaType().schema(new Schema().type("object") + .addProperties("username", new StringSchema()) + .addProperties("password", new PasswordSchema()) + .required(Arrays.asList("username", "password")) + )))) + .responses(new ApiResponses().addApiResponse("200", new ApiResponse().description("JWT Token to authenticate the next requests"))) + .responses(new ApiResponses().addApiResponse("401", new ApiResponse().description("Unauthorized - Username or password are incorrect!"))) + )); + }; + } + + private SecurityScheme buildBasicAuthScheme() { + return new SecurityScheme() + .type(SecurityScheme.Type.HTTP) + .scheme("bearer") + .bearerFormat("JWT") + .description("A JWT Token in required to access this API. You can obtain a JWT Token by providing the username and password in the login API"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java new file mode 100644 index 000000000..a26910901 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java @@ -0,0 +1,33 @@ +package it.fabioformosa.quartzmanager.api.security.controllers; + +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.security.SecurityRequirement; +import it.fabioformosa.quartzmanager.api.common.config.OpenAPIConfigConsts; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.security.core.context.SecurityContext; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.QUARTZ_MANAGER_AUTH_PATH; + +@RestController +@Hidden +@SecurityRequirement(name = OpenAPIConfigConsts.QUARTZ_MANAGER_SEC_OAS_SCHEMA) +@RequestMapping(value = QUARTZ_MANAGER_AUTH_PATH, produces = MediaType.APPLICATION_JSON_VALUE) +public class UserController { + + public static final String WHOAMI_URL = "/whoami"; + + @GetMapping(WHOAMI_URL) + public ResponseEntity getLoggedUser() { + SecurityContext context = SecurityContextHolder.getContext(); + if (context != null && context.getAuthentication() != null) + return new ResponseEntity<>(context.getAuthentication().getPrincipal(), HttpStatus.OK); + return new ResponseEntity<>(HttpStatus.NOT_FOUND); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java new file mode 100644 index 000000000..011ba8043 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java @@ -0,0 +1,21 @@ +package it.fabioformosa.quartzmanager.api.security.helpers; + +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; + +/** + * It configures filters to authenticate credentials sent by client or to set authenticationSuccessHandler + * + * Implement this interface for a login strategy + * + */ +public interface LoginConfigurer { + + /** + * If the authentication is based on cookie, it returns the name of cookie to be erased at the logout + */ + String cookieMustBeDeletedAtLogout(); + + HttpSecurity login(String loginPath, HttpSecurity http, AuthenticationManager authenticationManager) throws Exception; + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java new file mode 100644 index 000000000..2ea141086 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import lombok.EqualsAndHashCode; +import org.springframework.security.authentication.AbstractAuthenticationToken; + +@EqualsAndHashCode +public class AnonAuthentication extends AbstractAuthenticationToken { + private static final long serialVersionUID = 1L; + + public AnonAuthentication() { + super( null ); + } + + @Override + public Object getCredentials() { + return null; + } + + @Override + public Object getPrincipal() { + return null; + } + + @Override + public boolean isAuthenticated() { + return true; + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java new file mode 100644 index 000000000..2ac4f9746 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java @@ -0,0 +1,7 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import org.springframework.security.web.authentication.SimpleUrlAuthenticationFailureHandler; + +public class AuthenticationFailureHandler extends SimpleUrlAuthenticationFailureHandler { + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java new file mode 100644 index 000000000..ccde4135d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.SimpleUrlAuthenticationSuccessHandler; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +public class AuthenticationSuccessHandler extends SimpleUrlAuthenticationSuccessHandler { + + private final JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler; + + public AuthenticationSuccessHandler(JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler) { + super(); + this.jwtAuthenticationSuccessHandler = jwtAuthenticationSuccessHandler; + } + + public String cookieMustBeDeletedAtLogout() { + return jwtAuthenticationSuccessHandler.cookieMustBeDeletedAtLogout(); + } + + @Override + public void onAuthenticationSuccess(HttpServletRequest request, HttpServletResponse response, + Authentication authentication) throws IOException { + clearAuthenticationAttributes(request); + jwtAuthenticationSuccessHandler.onLoginSuccess(authentication, response); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java new file mode 100644 index 000000000..d3b164fd0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java @@ -0,0 +1,73 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import it.fabioformosa.quartzmanager.api.security.helpers.LoginConfigurer; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.FormLoginConfigurer; + +/** + * It delegates the login to the @FormLoginConfigurer of the httpSecurity. + * + */ +public class FormLoginConfig implements LoginConfigurer { + + private static final Logger log = LoggerFactory.getLogger(FormLoginConfig.class); + + private final AuthenticationSuccessHandler authenticationSuccessHandler; + + private final AuthenticationFailureHandler authenticationFailureHandler; + + + public FormLoginConfig() { + super(); + authenticationSuccessHandler = null; + authenticationFailureHandler = null; + } + + public FormLoginConfig(AuthenticationFailureHandler authenticationFailureHandler) { + super(); + authenticationSuccessHandler = null; + this.authenticationFailureHandler = authenticationFailureHandler; + } + + public FormLoginConfig(AuthenticationSuccessHandler authenticationSuccessHandler) { + super(); + this.authenticationSuccessHandler = authenticationSuccessHandler; + authenticationFailureHandler = null; + } + + public FormLoginConfig(AuthenticationSuccessHandler authenticationSuccessHandler, + AuthenticationFailureHandler authenticationFailureHandler) { + super(); + this.authenticationSuccessHandler = authenticationSuccessHandler; + this.authenticationFailureHandler = authenticationFailureHandler; + } + + @Override + public String cookieMustBeDeletedAtLogout() { + return authenticationSuccessHandler.cookieMustBeDeletedAtLogout(); + } + + @Override + public HttpSecurity login(String loginPath, + HttpSecurity http, AuthenticationManager authenticationManager) throws Exception { + log.debug("Configuring login through FormLoginConfigurer..."); + + FormLoginConfigurer login = http.formLogin().loginPage(loginPath); + + if(authenticationSuccessHandler != null) { + log.debug("Setting an authenticationSuccessHandler"); + login = login.successHandler(authenticationSuccessHandler); + } + + if(authenticationFailureHandler != null) { + log.debug("Setting an authenticationFailureHandler"); + login = login.failureHandler(authenticationFailureHandler); + } + + return login.and(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java new file mode 100644 index 000000000..217c2fcce --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java @@ -0,0 +1,34 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import javax.servlet.FilterChain; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter; + +import lombok.SneakyThrows; + +/** + * It extends the @UsernamePasswordAuthenticationFilter and it overrides the successfulAuthentication method to put jwtToken in the response + * + */ +public class JwtAuthenticationFilter extends UsernamePasswordAuthenticationFilter { + + private JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler; + + public JwtAuthenticationFilter(AuthenticationManager authenticationManager, JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler) { + this.jwtAuthenticationSuccessHandler = jwtAuthenticationSuccessHandler; + setAuthenticationManager(authenticationManager); + } + + @SneakyThrows + @Override + protected void successfulAuthentication(HttpServletRequest req, + HttpServletResponse res, + FilterChain chain, + Authentication auth) { + jwtAuthenticationSuccessHandler.onLoginSuccess(auth, res); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java new file mode 100644 index 000000000..2a8fdc8a2 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java @@ -0,0 +1,14 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import java.io.IOException; + +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.core.Authentication; + +public interface JwtAuthenticationSuccessHandler { + + String cookieMustBeDeletedAtLogout(); + + void onLoginSuccess(Authentication authentication, HttpServletResponse response) throws IOException; +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java new file mode 100644 index 000000000..4c9c111bd --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java @@ -0,0 +1,75 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import com.fasterxml.jackson.databind.ObjectMapper; +import it.fabioformosa.quartzmanager.api.security.properties.JwtSecurityProperties; +import it.fabioformosa.quartzmanager.api.security.models.UserTokenState; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.Authentication; +import org.springframework.security.core.userdetails.User; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; + +/** + * It depends on @JwtTokenHelper to generate the jwtToken. + * On login success, it generates the jwtToken and it returns it to the login according to possible strategies: cookie, response header. + * You can choose the strategy through @JwtSecurityProperties + * + */ +public class JwtAuthenticationSuccessHandlerImpl implements JwtAuthenticationSuccessHandler { + + private static final Logger log = LoggerFactory.getLogger(JwtAuthenticationSuccessHandlerImpl.class); + + private final JwtSecurityProperties jwtSecurityProps; + + private final JwtTokenHelper jwtTokenHelper; + + private final ObjectMapper objectMapper; + + private final String contextPath; + + @Autowired + public JwtAuthenticationSuccessHandlerImpl(String contextPath, JwtSecurityProperties jwtSecurityProps, JwtTokenHelper jwtTokenHelper, ObjectMapper objectMapper) { + this.contextPath = contextPath; + this.jwtSecurityProps = jwtSecurityProps; + this.jwtTokenHelper = jwtTokenHelper; + this.objectMapper = objectMapper; + } + + @Override + public String cookieMustBeDeletedAtLogout() { + if(!jwtSecurityProps.getCookieStrategy().isEnabled()) + return null; + return jwtSecurityProps.getCookieStrategy().getCookie(); + } + + @Override + public void onLoginSuccess(Authentication authentication, HttpServletResponse response) throws IOException { + log.debug("Login succeeded, generating jwtToken..."); + + User user = (User) authentication.getPrincipal(); + String jwtToken = jwtTokenHelper.generateToken(user.getUsername()); + + if(jwtSecurityProps.getCookieStrategy().isEnabled()) { + Cookie authCookie = new Cookie(jwtSecurityProps.getCookieStrategy().getCookie(), jwtToken); + authCookie.setHttpOnly(true); + authCookie.setMaxAge((int) jwtSecurityProps.getExpirationInSec()); + authCookie.setPath(contextPath); + response.addCookie(authCookie); + log.debug("Set jwtToken into the cookie {}", jwtSecurityProps.getCookieStrategy().getCookie()); + } + + if(jwtSecurityProps.getHeaderStrategy().isEnabled()) { + jwtTokenHelper.setHeader(response, jwtToken); + log.debug("Set jwtToken into the response header {}", jwtSecurityProps.getHeaderStrategy().getHeader()); + } + + UserTokenState userTokenState = new UserTokenState(jwtToken, jwtSecurityProps.getExpirationInSec()); + String jwtResponse = objectMapper.writeValueAsString(userTokenState); + response.setContentType("application/json"); + response.getWriter().write(jwtResponse); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java new file mode 100644 index 000000000..72562d031 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java @@ -0,0 +1,100 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.security.core.context.SecurityContextHolder; +import org.springframework.security.core.userdetails.UserDetails; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; +import org.springframework.security.web.util.matcher.OrRequestMatcher; +import org.springframework.security.web.util.matcher.RequestMatcher; +import org.springframework.web.filter.OncePerRequestFilter; + +import javax.servlet.FilterChain; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.io.IOException; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; + + +/** + * It finds the jwtToken into the request, it validates it and sets an @Authentication into the @SecurityContextHolder. + * If the request has a path included into the paths that must be skipped, it sets an anonymous authentication + * + * It delegates the jwtToken retrieve to the @JwtTokenHelper that applies several strategies. + * + */ +public class JwtTokenAuthenticationFilter extends OncePerRequestFilter { + + private static final Logger log = LoggerFactory.getLogger(JwtTokenAuthenticationFilter.class); + + private static final String ROOT_MATCHER = "/"; + private static final String FAVICON_MATCHER = "/favicon.ico"; + private static final String HTML_MATCHER = "/**/*.html"; + private static final String CSS_MATCHER = "/**/*.css"; + private static final String JS_MATCHER = "/**/*.js"; + private static final String IMG_MATCHER = "/images/*"; + private static final String LOGIN_MATCHER = "/api/login"; + private static final String LOGOUT_MATCHER = "/api/logout"; + + private static final List PATH_TO_SKIP = Arrays.asList( + ROOT_MATCHER, + HTML_MATCHER, + FAVICON_MATCHER, + CSS_MATCHER, + JS_MATCHER, + IMG_MATCHER, + LOGIN_MATCHER, + LOGOUT_MATCHER + ); + + private final JwtTokenHelper jwtTokenHelper; + private final UserDetailsService userDetailsService; + + + public JwtTokenAuthenticationFilter(JwtTokenHelper jwtTokenHelper, UserDetailsService userDetailsService) { + super(); + this.jwtTokenHelper = jwtTokenHelper; + this.userDetailsService = userDetailsService; + } + + @Override + public void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain chain) throws IOException, ServletException { + String jwtToken = jwtTokenHelper.retrieveToken(request); + if (jwtToken != null) { + log.debug("Found a jwtToken into the request {}", request.getPathInfo()); + try { + String username = jwtTokenHelper.verifyTokenAndExtractUsername(jwtToken); + UserDetails userDetails = userDetailsService.loadUserByUsername(username); + + JwtTokenBasedAuthentication authentication = new JwtTokenBasedAuthentication(userDetails); + authentication.setToken(jwtToken); + + SecurityContextHolder.getContext().setAuthentication(authentication); + } catch (Exception e) { + log.error("Authentication failed! an expected error occurred authenticating the request {} due to {}", request.getRequestURL(), e.getMessage(), e); + } + } + else if(skipPathRequest(request, PATH_TO_SKIP)) { + log.debug("Detected a path to be skipped from authentication, so activated anonymous auth for {}", request.getRequestURL()); + SecurityContextHolder.getContext().setAuthentication(new AnonAuthentication()); + } + else + log.debug("Not found any jwtToken and the request hasn't a path to be skipped from auth. Path: {}", request.getRequestURL()); + + chain.doFilter(request, response); + } + + private boolean skipPathRequest(HttpServletRequest request, List pathsToSkip ) { + if(pathsToSkip == null) + pathsToSkip = new ArrayList<>(); + List matchers = pathsToSkip.stream().map(AntPathRequestMatcher::new).collect(Collectors.toList()); + OrRequestMatcher compositeMatchers = new OrRequestMatcher(matchers); + return compositeMatchers.matches(request); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java new file mode 100644 index 000000000..49d4beca7 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java @@ -0,0 +1,40 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import lombok.EqualsAndHashCode; +import org.springframework.security.authentication.AbstractAuthenticationToken; +import org.springframework.security.core.userdetails.UserDetails; + + +@EqualsAndHashCode(callSuper = true) +public class JwtTokenBasedAuthentication extends AbstractAuthenticationToken { + + private static final long serialVersionUID = 1L; + + private String token; + private final UserDetails principle; + + public JwtTokenBasedAuthentication(UserDetails principle) { + super(principle.getAuthorities()); + this.principle = principle; + } + + @Override + public Object getCredentials() { + return token; + } + + @Override + public UserDetails getPrincipal() { + return principle; + } + + @Override + public boolean isAuthenticated() { + return true; + } + + public void setToken( String token ) { + this.token = token; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java new file mode 100644 index 000000000..428effed3 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java @@ -0,0 +1,142 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import io.jsonwebtoken.Claims; +import io.jsonwebtoken.Jwts; +import io.jsonwebtoken.SignatureAlgorithm; +import it.fabioformosa.quartzmanager.api.security.properties.JwtSecurityProperties; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.servlet.http.Cookie; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import java.nio.charset.StandardCharsets; +import java.time.LocalDateTime; +import java.time.ZoneId; +import java.util.Base64; +import java.util.Date; +import java.util.Map; + +/** + * @author Fabio.Formosa + */ + +public class JwtTokenHelper { + + private static final Logger log = LoggerFactory.getLogger(JwtTokenHelper.class); + + private static String base64EncodeSecretKey(String secretKey) { + return Base64.getEncoder().encodeToString(secretKey.getBytes(StandardCharsets.UTF_8)); + } + + private final String appName; + + private final JwtSecurityProperties jwtSecurityProps; + + private static final SignatureAlgorithm SIGNATURE_ALGORITHM = SignatureAlgorithm.HS512; + + public JwtTokenHelper(String appName, JwtSecurityProperties jwtSecurityProps) { + super(); + this.appName = appName; + this.jwtSecurityProps = jwtSecurityProps; + } + + public Boolean canTokenBeRefreshed(String token) { + try { + final Date expirationDate = verifyAndGetClaimsFromToken(token).getExpiration(); + return expirationDate.compareTo(generateCurrentDate()) > 0; + } catch (Exception e) { + log.error("Error getting claims from jwt token due to " + e.getMessage(), e); + return false; + } + } + + private Date generateCurrentDate() { + return new Date(getCurrentTimeMillis()); + } + + private Date generateExpirationDate() { + return new Date(getCurrentTimeMillis() + jwtSecurityProps.getExpirationInSec() * 1000); + } + + private String generateToken(Map claims) { + return Jwts.builder().setClaims(claims).setExpiration(generateExpirationDate()) + .signWith(SIGNATURE_ALGORITHM, base64EncodeSecretKey(jwtSecurityProps.getSecret())).compact(); + } + + public String generateToken(String username) { + return Jwts.builder().setIssuer(appName).setSubject(username).setIssuedAt(generateCurrentDate()) + .setExpiration(generateExpirationDate()) + .signWith(SIGNATURE_ALGORITHM, base64EncodeSecretKey(jwtSecurityProps.getSecret())).compact(); + } + + private Claims verifyAndGetClaimsFromToken(String token) { + Claims claims; + claims = Jwts.parser().setSigningKey(base64EncodeSecretKey(jwtSecurityProps.getSecret())) + .parseClaimsJws(token).getBody(); + if (claims == null) + throw new IllegalStateException("Not found any claims into the JWT token!"); + return claims; + } + + /** + * Find a specific HTTP cookie in a request. + * + * @param request The HTTP request object. + * @param name The cookie name to look for. + * @return The cookie, or null if not found. + */ + public Cookie getCookieValueByName(HttpServletRequest request, String name) { + if (request.getCookies() == null) + return null; + for (int i = 0; i < request.getCookies().length; i++) + if (request.getCookies()[i].getName().equals(name)) + return request.getCookies()[i]; + return null; + } + + private long getCurrentTimeMillis() { + return LocalDateTime.now().atZone(ZoneId.of("Europe/Rome")).toInstant().toEpochMilli(); + } + + public String verifyTokenAndExtractUsername(String token) { + final Claims claims = verifyAndGetClaimsFromToken(token); + return claims.getSubject(); + } + + public String refreshToken(String token) { + String refreshedToken; + try { + final Claims claims = verifyAndGetClaimsFromToken(token); + claims.setIssuedAt(generateCurrentDate()); + refreshedToken = generateToken(claims); + } catch (Exception e) { + log.error("Error refreshing jwt token due to " + e.getMessage(), e); + refreshedToken = null; + } + return refreshedToken; + } + + public String retrieveToken(HttpServletRequest request) { + if (jwtSecurityProps.getCookieStrategy().isEnabled()) { + Cookie authCookie = getCookieValueByName(request, jwtSecurityProps.getCookieStrategy().getCookie()); + if (authCookie != null) + return authCookie.getValue(); + } + + if (jwtSecurityProps.getHeaderStrategy().isEnabled()) { + String authHeader = request.getHeader(jwtSecurityProps.getHeaderStrategy().getHeader()); + if (authHeader != null && authHeader.startsWith("Bearer ")) + return authHeader.substring(7); + } + + if (request.getParameter("access_token") != null) + return request.getParameter("access_token"); + + return null; + } + + public void setHeader(HttpServletResponse response, String token) { + response.addHeader(jwtSecurityProps.getHeaderStrategy().getHeader(), "Bearer " + token); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java new file mode 100644 index 000000000..1a99212cc --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java @@ -0,0 +1,46 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpMethod; +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.web.authentication.preauth.AbstractPreAuthenticatedProcessingFilter; +import org.springframework.security.web.util.matcher.RegexRequestMatcher; +import org.springframework.web.filter.GenericFilterBean; + +import it.fabioformosa.quartzmanager.api.security.helpers.LoginConfigurer; + +/** + * It adds a new filter @JwtAuthenticationFilter after @AbstractPreAuthenticatedProcessingFilter that match login path + * + */ +public class JwtUsernamePasswordFiterLoginConfig implements LoginConfigurer { + + private static final Logger log = LoggerFactory.getLogger(JwtUsernamePasswordFiterLoginConfig.class); + + private final JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler; + + public JwtUsernamePasswordFiterLoginConfig(JwtAuthenticationSuccessHandler jwtAuthenticationSuccessHandler) { + super(); + this.jwtAuthenticationSuccessHandler = jwtAuthenticationSuccessHandler; + } + + public GenericFilterBean authenticationProcessingFilter(String loginPath, AuthenticationManager authenticationManager) { + JwtAuthenticationFilter authenticationProcessingFilter = new JwtAuthenticationFilter(authenticationManager, jwtAuthenticationSuccessHandler); + authenticationProcessingFilter.setRequiresAuthenticationRequestMatcher(new RegexRequestMatcher(loginPath, HttpMethod.POST.name(), false)); + return authenticationProcessingFilter; + } + + @Override + public String cookieMustBeDeletedAtLogout() { + return jwtAuthenticationSuccessHandler.cookieMustBeDeletedAtLogout(); + } + + @Override + public HttpSecurity login(String loginPath, HttpSecurity http, AuthenticationManager authenticationManager) throws Exception { + log.debug("Configuring login via JwtAuthenticationFilter..."); + return http.addFilterAfter(authenticationProcessingFilter(loginPath, authenticationManager), AbstractPreAuthenticatedProcessingFilter.class); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java new file mode 100644 index 000000000..446f9dd49 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java @@ -0,0 +1,36 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import java.io.IOException; +import java.util.HashMap; +import java.util.Map; + +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.core.Authentication; +import org.springframework.security.web.authentication.logout.LogoutSuccessHandler; + +import com.fasterxml.jackson.databind.ObjectMapper; + +public class LogoutSuccess implements LogoutSuccessHandler { + + private final ObjectMapper objectMapper; + + public LogoutSuccess(ObjectMapper objectMapper) { + super(); + this.objectMapper = objectMapper; + } + + @Override + public void onLogoutSuccess(HttpServletRequest httpServletRequest, HttpServletResponse response, Authentication authentication) + throws IOException, ServletException { + Map result = new HashMap<>(); + result.put( "result", "success" ); + response.setContentType("application/json"); + response.getWriter().write(objectMapper.writeValueAsString(result)); + response.setStatus(HttpServletResponse.SC_OK); + + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java new file mode 100644 index 000000000..c2979ecaf --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java @@ -0,0 +1,56 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + +import org.springframework.security.authentication.AuthenticationManager; +import org.springframework.security.config.annotation.SecurityConfigurerAdapter; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configurers.LogoutConfigurer; +import org.springframework.security.web.DefaultSecurityFilterChain; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import it.fabioformosa.quartzmanager.api.security.helpers.LoginConfigurer; + +/** + * It wraps the httpSecurity to provide new function as login and logout + * + */ +public class QuartzManagerHttpSecurity extends SecurityConfigurerAdapter { + + public static QuartzManagerHttpSecurity from(HttpSecurity httpSecurity){ + QuartzManagerHttpSecurity newInstance = new QuartzManagerHttpSecurity(httpSecurity); + newInstance.setBuilder(httpSecurity); + return newInstance; + } + + private HttpSecurity httpSecurity; + + private LoginConfigurer loginConfigurer; + + private LogoutSuccess logoutSuccess; + + public QuartzManagerHttpSecurity(HttpSecurity httpSecurity) { + this.httpSecurity = httpSecurity; + } + + public QuartzManagerHttpSecurity login(String loginPath, AuthenticationManager authenticationManager) throws Exception { + if(loginConfigurer == null || logoutSuccess == null) + throw new IllegalStateException("QuartzManagerHttpSecurity requires to be set loginConfigurer and logoutSuccess!"); + httpSecurity = loginConfigurer.login(loginPath, httpSecurity, authenticationManager); + return this; + } + + + public LogoutConfigurer logout(String logoutPath) throws Exception { + LogoutConfigurer logoutConfigurer = httpSecurity.logout().logoutRequestMatcher(new AntPathRequestMatcher(logoutPath)) + .logoutSuccessHandler(logoutSuccess); + String cookie = loginConfigurer.cookieMustBeDeletedAtLogout(); + if(cookie != null) + logoutConfigurer.deleteCookies(cookie); + return logoutConfigurer; + } + + public QuartzManagerHttpSecurity withLoginConfigurer(LoginConfigurer loginConfigurer, LogoutSuccess logoutSuccess) { + this.loginConfigurer = loginConfigurer; + this.logoutSuccess = logoutSuccess; + return this; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java new file mode 100644 index 000000000..f44307d7c --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java @@ -0,0 +1,23 @@ +package it.fabioformosa.quartzmanager.api.security.helpers.impl; + + +import java.io.IOException; + +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +import org.springframework.security.core.AuthenticationException; +import org.springframework.security.web.AuthenticationEntryPoint; +import org.springframework.stereotype.Component; + +@Component +public class RestAuthenticationEntryPoint implements AuthenticationEntryPoint { + + @Override + public void commence(HttpServletRequest request, + HttpServletResponse response, + AuthenticationException authException) throws IOException { + response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.getMessage()); + } +} + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java new file mode 100644 index 000000000..cb5a616d8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java @@ -0,0 +1,19 @@ +package it.fabioformosa.quartzmanager.api.security.models; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserTokenState { + private String accessToken; + private Long expiresInSec; + + public UserTokenState(String accessToken, long expiresInSec) { + this.accessToken = accessToken; + this.expiresInSec = expiresInSec; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java new file mode 100644 index 000000000..326aaa9d8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java @@ -0,0 +1,37 @@ +package it.fabioformosa.quartzmanager.api.security.properties; + +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; +import org.springframework.validation.annotation.Validated; + +import javax.validation.Valid; +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; +import java.util.ArrayList; +import java.util.List; + +@Validated +@Configuration +@ConfigurationProperties(prefix = "quartz-manager.security.accounts.in-memory") +@Getter @Setter +public class InMemoryAccountProperties { + private boolean enabled = true; + + @Valid + @NotNull + @NotEmpty + private List users; + + @Getter @Setter + public static class User { + @NotBlank + private String username; + @NotBlank + private String password; + @NotEmpty + private List roles = new ArrayList<>(); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java new file mode 100644 index 000000000..901209556 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java @@ -0,0 +1,48 @@ +package it.fabioformosa.quartzmanager.api.security.properties; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.Getter; +import lombok.Setter; +import org.springframework.boot.context.properties.ConfigurationProperties; +import org.springframework.context.annotation.Configuration; + +import java.security.SecureRandom; +import java.util.Base64; + + +@Configuration +@ConfigurationProperties(prefix = "quartz-manager.security.jwt") +@Data +@AllArgsConstructor +@Getter +@Setter +public class JwtSecurityProperties { + private String secret; + + private long expirationInSec = 28800; + + private CookieStrategy cookieStrategy = new CookieStrategy(); + private HeaderStrategy headerStrategy = new HeaderStrategy(); + + public JwtSecurityProperties() { + SecureRandom random = new SecureRandom(); + byte[] bytes = new byte[20]; + random.nextBytes(bytes); + Base64.Encoder encoder = Base64.getUrlEncoder().withoutPadding(); + secret = encoder.encodeToString(bytes); + } + + @Data + public static class CookieStrategy { + private boolean enabled = false; + private String cookie = "AUTH-TOKEN"; + } + + @Data + public static class HeaderStrategy { + private boolean enabled = true; + private String header = "Authorization"; + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories new file mode 100644 index 000000000..91581f040 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories @@ -0,0 +1,2 @@ +org.springframework.boot.autoconfigure.EnableAutoConfiguration=\ +it.fabioformosa.quartzmanager.api.security.QuartzManagerSecurityConfig diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java new file mode 100644 index 000000000..7bffec901 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java @@ -0,0 +1,29 @@ +package it.fabioformosa.quartzmanager.api.security; + +import it.fabioformosa.quartzmanager.api.security.models.UserTokenState; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.web.client.TestRestTemplate; +import org.springframework.http.*; +import org.springframework.util.LinkedMultiValueMap; +import org.springframework.util.MultiValueMap; + +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.QUARTZ_MANAGER_LOGIN_PATH; + +public abstract class AbstractSecurityLoginTest { + @Autowired + private TestRestTemplate testRestTemplate; + + protected ResponseEntity doLogin() { + HttpHeaders headers = new HttpHeaders(); + headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED); + + MultiValueMap map = new LinkedMultiValueMap<>(); + map.add("username", "foo"); + map.add("password", "bar"); + + HttpEntity> entity = new HttpEntity<>(map, headers); + + ResponseEntity responseEntity = testRestTemplate.exchange(QUARTZ_MANAGER_LOGIN_PATH, HttpMethod.POST, entity, UserTokenState.class); + return responseEntity; + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java new file mode 100644 index 000000000..93eb5e28f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java @@ -0,0 +1,85 @@ +package it.fabioformosa.quartzmanager.api.security; + +import it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths; +import it.fabioformosa.quartzmanager.api.security.controllers.TestController; +import it.fabioformosa.quartzmanager.api.security.properties.JwtSecurityProperties; +import org.assertj.core.api.Assertions; +import org.hamcrest.core.IsNot; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.ValueSource; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +@TestPropertySource(properties = { + "quartz-manager.security.jwt.secret=bibidibobidiboo", + "quartz-manager.security.jwt.expiration-in-sec=36000", + "quartz-manager.security.jwt.header-strategy.enabled=false", + "quartz-manager.security.jwt.header-strategy.header=Authorization", + "quartz-manager.security.jwt.cookie-strategy.enabled=true", + "quartz-manager.security.jwt.cookie-strategy.cookie=AUTH-TOKEN", + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=foo", + "quartz-manager.security.accounts.in-memory.users[0].password=bar", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class SecurityControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Autowired + private JwtSecurityProperties jwtSecurityProperties; + + @Test + void givenAnAnonymousUser_whenCalledADMZController_thenShouldRaiseForbidden() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get("/dmz")) + .andExpect(status().isOk()); + } + + @Test + void givenAnAnonymousUser_whenCalledATestScheduler_thenShouldRaiseForbidden() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(TestController.QUARTZ_MANAGER + "/scheduler")) + .andExpect(status().isUnauthorized()); + } + + @ParameterizedTest + @ValueSource(strings = {"/swagger-ui.html", "/v3/api-docs/**", "/swagger-resources/**", "/webjars/**"}) + void givenAnAnonymousUser_whenRequestedAnEndpointInWhitelist_thenShouldnotReturnForbidden(String whitelistEndpoint) throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(whitelistEndpoint)) + .andExpect(status().is(IsNot.not(403))); + } + + @Test + @WithMockUser("admin") + void givenAnUser_whenCalledATestScheduler_thenShouldReturn2xx() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(TestController.QUARTZ_MANAGER + "/scheduler")) + .andExpect(status().isOk()); + } + + @Test + void givenAnAnonymousUser_whenCalledTheLoginPath_thenShouldReturn2xx() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.post(QuartzManagerPaths.QUARTZ_MANAGER_LOGIN_PATH) + .contentType("application/x-www-form-urlencoded") + .accept("application/json") + .param("username", "foo") + .param("password", "bar")) + .andExpect(status().isOk()); + } + + @Test + void givenSecurityProps_whenTheBootstrapHasCompleted_thenJWTPropertiesShouldBeSetAccordingly() throws Exception { + Assertions.assertThat(jwtSecurityProperties.getExpirationInSec()).isEqualTo(36000); + Assertions.assertThat(jwtSecurityProperties.getSecret()).isEqualTo("bibidibobidiboo"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java new file mode 100644 index 000000000..0830d5d66 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java @@ -0,0 +1,40 @@ +package it.fabioformosa.quartzmanager.api.security; + +import it.fabioformosa.quartzmanager.api.security.models.UserTokenState; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; + + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@TestPropertySource(properties = { + "quartz-manager.security.login-model.form-login-enabled = true", + "quartz-manager.security.login-model.userpwd-filter-enabled = false", + "quartz-manager.security.jwt.enabled=true", + "quartz-manager.security.jwt.secret=bibidibobidiboo", + "quartz-manager.security.jwt.expiration-in-sec=28800", + "quartz-manager.security.jwt.header-strategy.enabled=false", + "quartz-manager.security.jwt.header-strategy.header=Authorization", + "quartz-manager.security.jwt.cookie-strategy.enabled=true", + "quartz-manager.security.jwt.cookie-strategy.cookie=AUTH-TOKEN", + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=foo", + "quartz-manager.security.accounts.in-memory.users[0].password=bar", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class SecurityLoginViaCookieTest extends AbstractSecurityLoginTest { + + @Test + void givenAnAnonymousUser_whenTheLoginIsSubmitted_thenShouldReturn2xx() { + ResponseEntity responseEntity = doLogin(); + Assertions.assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); + Assertions.assertThat(responseEntity.getBody().getAccessToken()).isNotEmpty(); + Assertions.assertThat(responseEntity.getBody().getExpiresInSec()).isNotNull().isPositive(); + Assertions.assertThat(responseEntity.getHeaders().get("set-cookie")).hasSizeGreaterThan(0); + Assertions.assertThat(responseEntity.getHeaders().get("set-cookie").get(0)).startsWith("AUTH-TOKEN"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java new file mode 100644 index 000000000..42b150ada --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java @@ -0,0 +1,30 @@ +package it.fabioformosa.quartzmanager.api.security; + +import it.fabioformosa.quartzmanager.api.security.models.UserTokenState; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; + + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@TestPropertySource(properties = { + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=foo", + "quartz-manager.security.accounts.in-memory.users[0].password=bar", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class SecurityLoginViaDefaultStrategyTest extends AbstractSecurityLoginTest { + + @Test + void givenAnAnonymousUser_whenTheLoginIsSubmitted_thenShouldReturn2xx() { + ResponseEntity responseEntity = doLogin(); + Assertions.assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); + Assertions.assertThat(responseEntity.getBody().getAccessToken()).isNotEmpty(); + Assertions.assertThat(responseEntity.getBody().getExpiresInSec()).isNotNull().isPositive(); + Assertions.assertThat(responseEntity.getHeaders().get("set-cookie")).isNull(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java new file mode 100644 index 000000000..7633478f8 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java @@ -0,0 +1,37 @@ +package it.fabioformosa.quartzmanager.api.security; + +import it.fabioformosa.quartzmanager.api.security.models.UserTokenState; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.test.context.TestPropertySource; + + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@TestPropertySource(properties = { + "quartz-manager.security.login-model.form-login-enabled = false", + "quartz-manager.security.login-model.userpwd-filter-enabled = true", + "quartz-manager.security.jwt.secret=bibidibobidiboo", + "quartz-manager.security.jwt.expiration-in-sec=28800", + "quartz-manager.security.jwt.header-strategy.enabled=true", + "quartz-manager.security.jwt.header-strategy.header=Authorization", + "quartz-manager.security.jwt.cookie-strategy.enabled=false", + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=foo", + "quartz-manager.security.accounts.in-memory.users[0].password=bar", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class SecurityLoginViaHeaderAndLoginFilterTest extends AbstractSecurityLoginTest { + + @Test + void givenAnAnonymousUser_whenTheLoginIsSubmitted_thenShouldReturn2xx() { + ResponseEntity responseEntity = doLogin(); + Assertions.assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); + Assertions.assertThat(responseEntity.getBody().getAccessToken()).isNotEmpty(); + Assertions.assertThat(responseEntity.getBody().getExpiresInSec()).isNotNull().isPositive(); + Assertions.assertThat(responseEntity.getHeaders().get("set-cookie")).isNull(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java new file mode 100644 index 000000000..591f30515 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java @@ -0,0 +1,36 @@ +package it.fabioformosa.quartzmanager.api.security; + +import it.fabioformosa.quartzmanager.api.security.models.UserTokenState; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.http.*; +import org.springframework.test.context.TestPropertySource; + + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@TestPropertySource(properties = { + "quartz-manager.security.login-model.form-login-enabled = true", + "quartz-manager.security.login-model.userpwd-filter-enabled = false", + "quartz-manager.security.jwt.secret=bibidibobidiboo", + "quartz-manager.security.jwt.expiration-in-sec=28800", + "quartz-manager.security.jwt.header-strategy.enabled=true", + "quartz-manager.security.jwt.header-strategy.header=Authorization", + "quartz-manager.security.jwt.cookie-strategy.enabled=false", + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=foo", + "quartz-manager.security.accounts.in-memory.users[0].password=bar", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class SecurityLoginViaHeaderTest extends AbstractSecurityLoginTest { + + @Test + void givenAnAnonymousUser_whenTheLoginIsSubmitted_thenShouldReturn2xx() { + ResponseEntity responseEntity = doLogin(); + Assertions.assertThat(responseEntity.getStatusCode()).isEqualTo(HttpStatus.OK); + Assertions.assertThat(responseEntity.getBody().getAccessToken()).isNotEmpty(); + Assertions.assertThat(responseEntity.getBody().getExpiresInSec()).isNotNull().isPositive(); + Assertions.assertThat(responseEntity.getHeaders().get("set-cookie")).isNull(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java new file mode 100644 index 000000000..9e952511b --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java @@ -0,0 +1,7 @@ +package it.fabioformosa.quartzmanager.api.security; + +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@SpringBootApplication +public class SpringApplicationTest { +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java new file mode 100644 index 000000000..9488652a0 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java @@ -0,0 +1,27 @@ +package it.fabioformosa.quartzmanager.api.security.controllers; + +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +@RequestMapping +@RestController +public class TestController { + + public static final String QUARTZ_MANAGER = "/quartz-manager"; + + @ResponseStatus(HttpStatus.OK) + @GetMapping("/dmz") + public void getDMZTest(){ + + } + + @ResponseStatus(HttpStatus.OK) + @GetMapping(QUARTZ_MANAGER + "/scheduler") + public void getQuartzManagerScheduler(){ + + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java new file mode 100644 index 000000000..79c8a7e71 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java @@ -0,0 +1,41 @@ +package it.fabioformosa.quartzmanager.api.security.controllers; + +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.security.test.context.support.WithMockUser; +import org.springframework.test.context.TestPropertySource; +import org.springframework.test.web.servlet.MockMvc; +import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; + +import static it.fabioformosa.quartzmanager.api.common.config.QuartzManagerPaths.QUARTZ_MANAGER_AUTH_PATH; +import static it.fabioformosa.quartzmanager.api.security.controllers.UserController.WHOAMI_URL; +import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status; + +@SpringBootTest +@AutoConfigureMockMvc +@TestPropertySource(properties = { + "quartz-manager.security.accounts.in-memory.enabled=true", + "quartz-manager.security.accounts.in-memory.users[0].username=admin", + "quartz-manager.security.accounts.in-memory.users[0].password=admin", + "quartz-manager.security.accounts.in-memory.users[0].roles[0]=admin", +}) +class UserControllerTest { + + @Autowired + private MockMvc mockMvc; + + @Test + @WithMockUser("admin") + void givenAnUser_whenCalledTheWhoamiEndpoint_thenShouldReturn2xx() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(QUARTZ_MANAGER_AUTH_PATH + WHOAMI_URL)) + .andExpect(status().isOk()); + } + + @Test + void givenAnAnonymousUser_whenCalledTheWhoamiEndpoint_thenShouldReturnNotFound() throws Exception { + mockMvc.perform(MockMvcRequestBuilders.get(QUARTZ_MANAGER_AUTH_PATH + WHOAMI_URL)) + .andExpect(status().isUnauthorized()); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java new file mode 100644 index 000000000..8ec533b08 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java @@ -0,0 +1,39 @@ +package it.fabioformosa.quartzmanager.api.security.properties; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.BeforeAll; +import org.springframework.boot.context.properties.bind.BindResult; +import org.springframework.boot.context.properties.bind.Binder; +import org.springframework.boot.context.properties.source.ConfigurationPropertySource; +import org.springframework.boot.context.properties.source.MapConfigurationPropertySource; + +import javax.validation.Validation; +import javax.validation.Validator; +import java.lang.reflect.InvocationTargetException; +import java.util.Map; + +public abstract class AbstractPropertyValidatorTest { + protected static Validator propertyValidator; + + @BeforeAll + public static void setup() { + propertyValidator = Validation.buildDefaultValidatorFactory().getValidator(); + } + + protected static T inflateConfigurationPropertyFromAMap(Map properties, String configurationPropName, Class propClass) { + ConfigurationPropertySource source = new MapConfigurationPropertySource(properties); + Binder binder = new Binder(source); + BindResult result = binder.bind(configurationPropName, propClass); + if (properties != null && !properties.isEmpty()) { + Assertions.assertThat(result.isBound()).isTrue(); + T configPropObject = result.get(); + return configPropObject; + } else { + try { + return propClass.getConstructor().newInstance(); + } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException e) { + throw new RuntimeException(e); + } + } + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java new file mode 100644 index 000000000..7275e5ce5 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java @@ -0,0 +1,54 @@ +package it.fabioformosa.quartzmanager.api.security.properties; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.params.ParameterizedTest; +import org.junit.jupiter.params.provider.Arguments; +import org.junit.jupiter.params.provider.MethodSource; + +import java.util.HashMap; +import java.util.Map; +import java.util.stream.Stream; + +class InMemoryUsersValidationControllerTest extends AbstractPropertyValidatorTest { + + static Stream notValidInMemoryProps = Stream.of( + Arguments.of( + Map.of("quartz-manager.security.accounts.in-memory.users[0].password", "bar"), + Map.of("quartz-manager.security.accounts.in-memory.users[0].roles[0]", "admin")), + Arguments.of( + Map.of("quartz-manager.security.accounts.in-memory.users[0].username", "foo"), + Map.of("quartz-manager.security.accounts.in-memory.users[0].roles[0]", "admin")), + Arguments.of( + Map.of("quartz-manager.security.accounts.in-memory.users[0].username", "foo"), + Map.of("quartz-manager.security.accounts.in-memory.users[0].password", "bar")) + ); + + + static Stream getNotValidInMemoryProps() { + return notValidInMemoryProps; + } + + @ParameterizedTest + @MethodSource("it.fabioformosa.quartzmanager.api.security.properties.InMemoryUsersValidationControllerTest#getNotValidInMemoryProps") + void givenAMissingUsername_whenThePropertyValidationIsApplied_thenShouldRaiseValidationError(Map properties) { + InMemoryAccountProperties inMemoryAccountProperties = inflateConfigurationPropertyFromAMap(properties, + "quartz-manager.security.accounts.in-memory", InMemoryAccountProperties.class); + Assertions.assertThat(propertyValidator.validate(inMemoryAccountProperties)).isNotEmpty(); + + } + + @Test + void givenAllInMemoryPropsAreSet_whenThePropertyValidationIsApplied_thenShouldRaiseValidationError() throws Exception { + Map properties = new HashMap<>(); + properties.put("quartz-manager.security.accounts.in-memory.users[0].username", "foo"); + properties.put("quartz-manager.security.accounts.in-memory.users[0].password", "bar"); + properties.put("quartz-manager.security.accounts.in-memory.users[0].roles[0]", "admin"); + + InMemoryAccountProperties inMemoryAccountProperties = inflateConfigurationPropertyFromAMap(properties, + "quartz-manager.security.accounts.in-memory", InMemoryAccountProperties.class); + + Assertions.assertThat(propertyValidator.validate(inMemoryAccountProperties)).isEmpty(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java new file mode 100644 index 000000000..aea290209 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java @@ -0,0 +1,39 @@ +package it.fabioformosa.quartzmanager.api.security.properties; + +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +import java.util.HashMap; +import java.util.Map; + +class JwtSecurityPropertiesTest extends AbstractPropertyValidatorTest { + + @Test + void givenAllJWTSecurityPropSet_whenThePropertyValidationIsApplied_thenShouldBeValid() { + Map properties = new HashMap<>(); + String secret = "helloworld"; + properties.put("quartz-manager.security.jwt.secret", secret); + String expirationInSec = "36000"; + properties.put("quartz-manager.security.jwt.expirationInSec", expirationInSec); + + JwtSecurityProperties jwtSecurityProperties = inflateConfigurationPropertyFromAMap(properties, + "quartz-manager.security.jwt", JwtSecurityProperties.class); + + Assertions.assertThat(propertyValidator.validate(jwtSecurityProperties)).isEmpty(); + + Assertions.assertThat(jwtSecurityProperties.getExpirationInSec()).isEqualTo(Long.valueOf(expirationInSec)); + Assertions.assertThat(jwtSecurityProperties.getSecret()).isEqualTo(secret); + } + + @Test + void givenTheMandatoryJWTSecurityPropUnset_whenThePropertyValidationIsApplied_thenShouldBeSetWithDefault() { + Map properties = new HashMap<>(); + + JwtSecurityProperties jwtSecurityProperties = inflateConfigurationPropertyFromAMap(properties, + "quartz-manager.security.jwt", JwtSecurityProperties.class); + + Assertions.assertThat(jwtSecurityProperties.getExpirationInSec()).isEqualTo(28800L); + Assertions.assertThat(jwtSecurityProperties.getSecret()).isNotBlank(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml new file mode 100644 index 000000000..b4c0f646a --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml @@ -0,0 +1,139 @@ + + + 4.0.0 + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + + quartz-manager-starter-ui + + Quartz Manager UI webjar + Webjar to import the quartz-manager frontend in your spring webapp + + https://github.com/fabioformosa/quartz-manager + + ${basedir}/../.. + UTF-8 + UTF-8 + 9 + quartz-manager-frontend + v16.14.1 + 8.19.3 + + + + + + + + build-webjar + + + + + + org.apache.maven.plugins + maven-resources-plugin + 2.6 + + + copy-resources + generate-resources + + copy-resources + + + ${basedir}/target/tmp + + + ../../${frontend.folderName} + + static/** + dist/** + node_modules/** + + + + + + + + + + + com.github.eirslett + frontend-maven-plugin + 1.11.0 + + target/tmp + + + + + install node and npm + + install-node-and-npm + + generate-resources + + ${node.version} + ${npm.version} + + + + + npm install + + npm + + process-resources + + install + + + + + npm run build + + npm + + process-resources + + run build + + + + + + + + + maven-antrun-plugin + 1.8 + + + clean build files + process-resources + + + + + + + + + + + run + + + + + + + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore new file mode 100644 index 000000000..8f010af51 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore @@ -0,0 +1,12 @@ +/target +/Work +/.mvn +/.project +/.settings +/.springBeans +/mvnw +/mvnw.cmd +/.classpath +/.idea/ +/quartz-manager.iml +/target/** diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml new file mode 100644 index 000000000..b7ba48a58 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml @@ -0,0 +1,11 @@ +version: "3.9" +services: + quartzmanager-usecase-db: + container_name: "quartzmanager" + image: postgres:14.5 + ports: + - "5432:5432" + environment: + POSTGRES_PASSWORD: quartzmanager + volumes: + - ./init-db.sh:/docker-entrypoint-initdb.d/init-db.sh diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh new file mode 100644 index 000000000..a24583dba --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh @@ -0,0 +1,9 @@ +#!/bin/bash +set -e + +psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL + CREATE USER quartzmanager PASSWORD 'quartzmanager'; + CREATE DATABASE "quartzmanager"; + GRANT ALL PRIVILEGES ON DATABASE "quartzmanager" TO quartzmanager; + ALTER ROLE quartzmanager SUPERUSER; +EOSQL diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml new file mode 100644 index 000000000..6e5170232 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml @@ -0,0 +1,153 @@ + + + 4.0.0 + + + it.fabioformosa.quartz-manager + quartz-manager-parent + 4.0.9 + + + quartz-manager-web-showcase + + war + + Quartz Manager Web Showcase + A webapp that imports Quartz Manager API lib and the frontend webjar + + + UTF-8 + UTF-8 + 1.5.12 + 9 + + + + + it.fabioformosa.quartz-manager + quartz-manager-starter-api + + + it.fabioformosa.quartz-manager + quartz-manager-starter-ui + + + it.fabioformosa.quartz-manager + quartz-manager-starter-security + + + + + + + + + org.springframework.boot + spring-boot-starter-web + + + org.springframework.boot + spring-boot-devtools + + + org.springframework.boot + spring-boot-configuration-processor + true + + + org.springframework.boot + spring-boot-starter-tomcat + provided + + + org.springframework.boot + spring-boot-starter-test + test + + + + + org.springdoc + springdoc-openapi-ui + ${springdoc-openapi.version} + true + + + io.jsonwebtoken + jjwt + 0.9.0 + + + com.fasterxml.jackson.core + jackson-databind + + + com.fasterxml.jackson.core + jackson-annotations + + + com.h2database + h2 + runtime + + + org.codehaus.groovy + groovy + + + net.sourceforge.nekohtml + nekohtml + + + io.rest-assured + spring-mock-mvc + test + + + org.projectlombok + lombok + provided + + + org.apache.commons + commons-lang3 + + + + + org.junit.platform + junit-platform-launcher + test + + + + + + + + + org.springframework.boot + spring-boot-maven-plugin + + + + repackage + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.8.0 + + 9 + 9 + + + + + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java new file mode 100644 index 000000000..670dc5a2e --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java @@ -0,0 +1,14 @@ +package it.fabioformosa; + +import lombok.Generated; +import org.springframework.boot.SpringApplication; +import org.springframework.boot.autoconfigure.SpringBootApplication; + +@Generated +@SpringBootApplication +public class QuartzManagerDemoApplication { + + public static void main(String[] args) { + SpringApplication.run(QuartzManagerDemoApplication.class, args); + } +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java new file mode 100644 index 000000000..dcc341416 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java @@ -0,0 +1,21 @@ +package it.fabioformosa; + +import lombok.Generated; +import org.springframework.boot.builder.SpringApplicationBuilder; +import org.springframework.boot.web.servlet.support.SpringBootServletInitializer; + +/** + * ServletInitializer needs to deploy quartz-manager into a servlet container as a war file + * + * @author Fabio Formosa + * + */ +@Generated +public class ServletInitializer extends SpringBootServletInitializer { + + @Override + protected SpringApplicationBuilder configure(SpringApplicationBuilder application) { + return application.sources(QuartzManagerDemoApplication.class); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java new file mode 100644 index 000000000..5ab7ad676 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java @@ -0,0 +1,32 @@ +package it.fabioformosa; + +import io.swagger.v3.oas.models.OpenAPI; +import io.swagger.v3.oas.models.info.Info; +import io.swagger.v3.oas.models.info.License; +import lombok.Generated; +import org.springdoc.core.GroupedOpenApi; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; + +@Configuration +@Generated +public class WebShowcaseOpenApiConfig { + + @Bean + public OpenAPI webshowcaseOpenAPI() { + return new OpenAPI() + .info(new Info() + .title("QUARTZ MANAGER DEMO API") + .description("Quartz Manager- DEMO - REST API") + .version("1.0.0") + .license(new License() + .name("Apache License 2.0") + .url("https://github.com/fabioformosa/quartz-manager/blob/master/LICENSE"))); + } + + @Bean + public GroupedOpenApi demoOpenApi() { + return GroupedOpenApi.builder().group("demo").packagesToScan("it.fabioformosa.quartzmanager.controllers").build(); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java new file mode 100644 index 000000000..062a7814f --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java @@ -0,0 +1,29 @@ +package it.fabioformosa.quartzmanager.controllers; + +import io.swagger.v3.oas.annotations.Hidden; +import io.swagger.v3.oas.annotations.Operation; +import lombok.Generated; +import lombok.extern.slf4j.Slf4j; +import org.springframework.http.HttpStatus; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; +import org.springframework.web.bind.annotation.RestController; + +@Slf4j +@Hidden +@RestController +@RequestMapping +@Generated +public class HealthCheckController { + + @ResponseStatus(code = HttpStatus.OK) + @GetMapping("/") + @Operation(description = "Health Check") + public String healthCheck() { + log.trace("Health check called"); + return "OK"; + } + + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java new file mode 100644 index 000000000..6d6957da2 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java @@ -0,0 +1,38 @@ +package it.fabioformosa.quartzmanager.controllers; + +import io.swagger.v3.oas.annotations.Operation; +import lombok.Generated; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.http.HttpEntity; +import org.springframework.http.HttpStatus; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.ResponseStatus; + +import javax.servlet.http.HttpSession; + +@Controller +@RequestMapping("/session") +@Generated +public class SessionController { + + private final Logger log = LoggerFactory.getLogger(SessionController.class); + + @GetMapping("/invalidate") + @ResponseStatus(HttpStatus.NO_CONTENT) + @Operation(hidden = true) + public void invalidateSession(HttpSession session) { + session.invalidate(); + log.info("Invalidated current session!"); + } + + @GetMapping("/refresh") + @Operation(hidden = true) + public HttpEntity refreshSession(HttpSession session) { + return new ResponseEntity<>(HttpStatus.OK); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java new file mode 100644 index 000000000..94d31a0dc --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java @@ -0,0 +1,14 @@ +package it.fabioformosa.quartzmanager.jobs.myjobs; + +import it.fabioformosa.quartzmanager.api.jobs.AbstractQuartzManagerJob; +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import org.quartz.JobExecutionContext; + + +public class SampleJob extends AbstractQuartzManagerJob { + @Override + public LogRecord doIt(JobExecutionContext jobExecutionContext) { + return new LogRecord(LogRecord.LogType.INFO, "Hello World!"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java new file mode 100644 index 000000000..c03f28240 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java @@ -0,0 +1,43 @@ +package it.fabioformosa.quartzmanager.jobs.tests; + +import it.fabioformosa.quartzmanager.api.jobs.AbstractQuartzManagerJob; +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import lombok.Generated; +import lombok.NoArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.quartz.JobExecutionContext; + +/** + * This job can be used to test the misfire policy. It pretends to be a long + * processing job (sleeping for a while) + * + * @author Fabio.Formosa + * + */ +@Slf4j +@NoArgsConstructor +@Generated +public class MisfireTestJob extends AbstractQuartzManagerJob { + + private long sleepPeriodInMs = 10 * 1000L; + + public MisfireTestJob(long sleepPeriodInMs) { + this.sleepPeriodInMs = sleepPeriodInMs; + } + + @Override + public LogRecord doIt(JobExecutionContext jobExecutionContext) { + try { + log.info("{} is going to sleep...", Thread.currentThread().getName()); + + Thread.sleep(sleepPeriodInMs); + + log.info("{} woke up!", Thread.currentThread().getName()); + } catch (InterruptedException e) { + throw new IllegalStateException(e); + } + + return new LogRecord(LogRecord.LogType.INFO, "Hello!"); + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml new file mode 100644 index 000000000..05e82c6a5 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml @@ -0,0 +1,39 @@ +quartz-manager: + jobClassPackages: it.fabioformosa.quartzmanager.jobs + oas: + enabled: true + security: + jwt: + secret: "bibidibobidiboo" + expiration-in-sec: 28800 # 8 hours + accounts: + in-memory: + enabled: true + users: + - username: admin + password: admin + roles: + - ADMIN + persistence: + quartz: + datasource: + url: "jdbc:postgresql://localhost:5432/quartzmanager" + user: "quartzmanager" + password: "quartzmanager" + +#springdoc: +# paths-to-exclude: "/quartz-manager/**" + +spring: + thymeleaf: + cache: false + mode: LEGACYHTML5 + jpa.open-in-view: false + +logging: + level: + org.springframework.web: WARN + org.springframework.security: INFO + org.springframework.boot.autoconfigure.security: INFO + it.fabioformosa: DEBUG + org.quartz: INFO diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt new file mode 100644 index 000000000..d8bd9236d --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt @@ -0,0 +1,8 @@ + ____ _ __ __ + / __ \ | | | \/ | + | | | |_ _ __ _ _ __| |_ ____ | \ / | __ _ _ __ __ _ __ _ ___ _ __ + | | | | | | |/ _` | '__| __|_ / | |\/| |/ _` | '_ \ / _` |/ _` |/ _ \ '__| + | |__| | |_| | (_| | | | |_ / / | | | | (_| | | | | (_| | (_| | __/ | + \___\_\\__,_|\__,_|_| \__/___| |_| |_|\__,_|_| |_|\__,_|\__, |\___|_| + __/ | + |___/ diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml new file mode 100644 index 000000000..43841fe86 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml @@ -0,0 +1,29 @@ + + + + + + + %d{yyyy-MM-dd HH:mm:ss.SSS} [%.11thread] %-5level [%-40.40logger{49}:%-3L] --- %m%n + + + + + + + + + + + + + + + + + + + + + + diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties new file mode 100644 index 000000000..cdcc9e432 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties @@ -0,0 +1,2 @@ +org.quartz.scheduler.instanceName=example +org.quartz.threadPool.threadCount=1 diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG new file mode 100644 index 0000000000000000000000000000000000000000..47d08bfa2e5b55c7d5234b32faf3cb7ad6fde648 GIT binary patch literal 100051 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%0AAEKD`kAQ*?-oSx$05{@&yOcX=uD%~ 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 z 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 literal 0 HcmV?d00001 diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..27b47de6ab4e83ee511e05fcfe7b9372f37eec08 GIT binary patch literal 80849 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 literal 0 HcmV?d00001 diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java new file mode 100644 index 000000000..3dcdf9c86 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java @@ -0,0 +1,15 @@ +package it.fabioformosa; + +import org.junit.jupiter.api.Test; +import org.springframework.boot.test.context.SpringBootTest; +import org.springframework.test.context.web.WebAppConfiguration; + +@SpringBootTest(classes = QuartzManagerDemoApplication.class) +@WebAppConfiguration +class QuartManagerApplicationTests { + + @Test + void contextLoads() { + } + +} diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java new file mode 100644 index 000000000..db6052143 --- /dev/null +++ b/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java @@ -0,0 +1,18 @@ +package it.fabioformosa.quartzmanager.jobs.tests; + +import it.fabioformosa.quartzmanager.api.jobs.entities.LogRecord; +import org.assertj.core.api.Assertions; +import org.junit.jupiter.api.Test; + +class MisfireTestJobTest { + + @Test + void givenAMisfireTestJob_whenIsExecuted_shoulReturnALogRecord() { + MisfireTestJob misfireTestJob = new MisfireTestJob(10L); + LogRecord logRecord = misfireTestJob.doIt(null); + Assertions.assertThat(logRecord.getMessage()).isEqualTo("Hello!"); + } + +} + + From 232e4d31d906633e972f84120d9a9f3bfbe62519 Mon Sep 17 00:00:00 2001 From: Omur Date: Wed, 23 Jul 2025 10:59:33 +0200 Subject: [PATCH 2/2] change rest to rest-gui --- .../quartz-manager/.editorconfig | 0 .../quartz-manager/.travis.yml | 0 .../quartz-manager/CHANGELOG.md | 0 .../{rest => rest-gui}/quartz-manager/LICENSE | 0 .../quartz-manager/README.md | 0 .../quartz-manager-frontend/.browserslistrc | 0 .../quartz-manager-frontend/.editorconfig | 0 .../quartz-manager-frontend/.eslintrc.json | 0 .../quartz-manager-frontend/.gitignore | 0 .../quartz-manager-frontend/.prettierignore | 0 .../quartz-manager-frontend/.prettierrc.json | 0 .../quartz-manager-frontend/angular.json | 0 .../e2e/app.e2e-spec.ts | 0 .../quartz-manager-frontend/e2e/app.po.ts | 0 .../e2e/tsconfig.e2e.json | 0 .../quartz-manager-frontend/jest.setup.ts | 0 .../quartz-manager-frontend/karma.conf.js | 0 .../quartz-manager-frontend/package-lock.json | 0 .../quartz-manager-frontend/package.json | 0 .../protractor.conf.js | 0 .../quartz-manager-frontend/proxy.conf.json | 0 .../quartz-manager-frontend/src/_test.ts | 0 .../quartz-manager-frontend/src/animate.css | 0 .../src/app/app-routing.module.ts | 0 .../src/app/app.component.html | 0 .../src/app/app.component.scss | 0 .../src/app/app.component.spec.ts | 0 .../src/app/app.component.ts | 0 .../src/app/app.module.ts | 0 .../components/footer/footer.component.html | 0 .../components/footer/footer.component.scss | 0 .../app/components/footer/footer.component.ts | 0 .../src/app/components/footer/index.ts | 0 .../components/github/github.component.html | 0 .../components/github/github.component.scss | 0 .../app/components/github/github.component.ts | 0 .../src/app/components/github/index.ts | 0 .../account-menu/account-menu.component.html | 0 .../account-menu/account-menu.component.scss | 0 .../account-menu.component.spec.ts | 0 .../account-menu/account-menu.component.ts | 0 .../components/header/header.component.html | 0 .../components/header/header.component.scss | 0 .../app/components/header/header.component.ts | 0 .../src/app/components/header/index.ts | 0 .../src/app/components/index.ts | 0 .../src/app/components/logs-panel/index.ts | 0 .../logs-panel/logs-panel.component.html | 0 .../logs-panel/logs-panel.component.scss | 0 .../logs-panel/logs-panel.component.ts | 0 .../app/components/progress-panel/index.ts | 0 .../progress-panel.component.html | 0 .../progress-panel.component.scss | 0 .../progress-panel.component.ts | 0 .../app/components/scheduler-control/index.ts | 0 .../scheduler-control.component.html | 0 .../scheduler-control.component.scss | 0 .../scheduler-control.component.spec.ts | 0 .../scheduler-control.component.ts | 0 .../components/simple-trigger-config/index.ts | 0 .../simple-trigger-config.component.html | 0 .../simple-trigger-config.component.scss | 0 .../simple-trigger-config.component.spec.ts | 0 .../simple-trigger-config.component.ts | 0 .../src/app/components/trigger-list/index.ts | 0 .../trigger-list/trigger-list.component.html | 0 .../trigger-list/trigger-list.component.scss | 0 .../trigger-list.component.spec.ts | 0 .../trigger-list/trigger-list.component.ts | 0 .../src/app/guards/admin.guard.ts | 0 .../src/app/guards/guest.guard.ts | 0 .../src/app/guards/index.ts | 0 .../src/app/guards/login.guard.ts | 0 .../src/app/model/SocketEndpoint.model.ts | 0 .../src/app/model/SocketOption.model.ts | 0 .../src/app/model/jobDetail.model.ts | 0 .../src/app/model/jobKey.model.ts | 0 .../app/model/misfire-instruction.model.ts | 0 .../src/app/model/scheduler.model.ts | 0 .../src/app/model/simple-trigger.command.ts | 0 .../src/app/model/simple-trigger.form.ts | 0 .../src/app/model/simple-trigger.model.ts | 0 .../app/model/trigger-fired-bundle.model.ts | 0 .../src/app/model/trigger.model.ts | 0 .../src/app/model/triggerKey.model.ts | 0 .../src/app/polyfills.ts | 0 .../src/app/services/api.service.spec.ts | 0 .../src/app/services/api.service.ts | 0 .../src/app/services/auth.service.ts | 0 .../src/app/services/config.service.ts | 0 .../src/app/services/index.ts | 0 .../src/app/services/job.service.ts | 0 .../app/services/logs.websocket.service.ts | 0 .../app/services/mocks/api.service.mock.ts | 0 .../src/app/services/mocks/index.ts | 0 .../app/services/mocks/user.service.mock.ts | 0 .../services/progress.websocket.service.ts | 0 .../src/app/services/scheduler.service.ts | 0 .../src/app/services/trigger.service.ts | 0 .../src/app/services/user.service.ts | 0 .../src/app/services/websocket.service.ts | 0 .../src/app/shared/models/display-message.ts | 0 .../src/app/shared/utilities/loose-invalid.ts | 0 .../src/app/shared/utilities/serialize.ts | 0 .../views/error/genericError.component.css | 0 .../views/error/genericError.component.html | 0 .../error/genericError.component.spec.ts | 0 .../app/views/error/genericError.component.ts | 0 .../views/forbidden/forbidden.component.css | 0 .../views/forbidden/forbidden.component.html | 0 .../forbidden/forbidden.component.spec.ts | 0 .../views/forbidden/forbidden.component.ts | 0 .../src/app/views/forbidden/index.ts | 0 .../src/app/views/login/index.ts | 0 .../src/app/views/login/login.component.html | 0 .../src/app/views/login/login.component.scss | 0 .../app/views/login/login.component.spec.ts | 0 .../src/app/views/login/login.component.ts | 0 .../src/app/views/manager/index.ts | 0 .../app/views/manager/manager.component.html | 0 .../app/views/manager/manager.component.scss | 0 .../app/views/manager/manager.component.ts | 0 .../src/app/views/not-found/index.ts | 0 .../views/not-found/not-found.component.css | 0 .../views/not-found/not-found.component.html | 0 .../not-found/not-found.component.spec.ts | 0 .../views/not-found/not-found.component.ts | 0 .../src/assets/.gitkeep | 0 .../src/assets/image/access_denied.svg | 0 .../src/assets/image/admin.png | Bin .../image/angular-white-transparent.svg | 0 .../src/assets/image/error.svg | 0 .../src/assets/image/foo.png | Bin .../src/assets/image/github.png | Bin .../src/assets/image/logs.svg | 0 .../src/assets/image/page_not_found.svg | 0 .../src/assets/image/settings.svg | 0 .../src/assets/image/user.png | Bin .../src/environments/environment.prod.ts | 0 .../src/environments/environment.ts | 0 .../quartz-manager-frontend/src/favicon.ico | Bin .../quartz-manager-frontend/src/index.html | 0 .../quartz-manager-frontend/src/main.ts | 0 .../quartz-manager-frontend/src/polyfills.ts | 0 .../quartz-manager-frontend/src/styles.css | 0 .../src/tsconfig.app.json | 0 .../quartz-manager-frontend/src/typings.d.ts | 0 .../quartz-manager-frontend/tsconfig.json | 0 .../tsconfig.spec.json | 0 .../quartz-manager-frontend/tslint.json | 0 .../quartz-manager-frontend/yarn.lock | 10873 ++++++++++++++++ .../quartz-manager-parent/.editorconfig | 0 .../quartz-manager-parent/.gitignore | 0 .../.mvn/wrapper/maven-wrapper.jar | Bin .../.mvn/wrapper/maven-wrapper.properties | 0 .../quartz-manager-parent/README.md | 0 .../quartz-manager-parent/lombok.config | 0 .../quartz-manager/quartz-manager-parent/mvnw | 0 .../quartz-manager-parent/mvnw.cmd | 0 .../quartz-manager-parent/pom.xml | 0 .../quartz-manager-common/pom.xml | 0 .../common/config/OpenAPIConfigConsts.java | 0 .../api/common/config/QuartzManagerPaths.java | 0 .../properties/QuartzModuleProperties.java | 0 .../api/common/utils/DateUtils.java | 0 .../quartzmanager/api/common/utils/Try.java | 0 .../api/common/utils/DateUtilsTest.java | 0 .../api/common/utils/TryTest.java | 0 .../quartz-manager-starter-api/.gitignore | 0 .../quartz-manager-starter-api/pom.xml | 0 .../api/configuration/ConversionConfig.java | 0 .../api/configuration/OpenApiConfig.java | 0 .../QuartzDefaultPropertiesConfig.java | 0 .../configuration/QuartzManagerApiConfig.java | 0 .../api/configuration/SchedulerConfig.java | 0 .../api/configuration/WebsocketConfig.java | 0 .../api/controllers/JobController.java | 0 .../api/controllers/SchedulerController.java | 0 .../controllers/SimpleTriggerController.java | 0 .../api/controllers/TriggerController.java | 0 .../api/controllers/WebsocketController.java | 0 .../advices/ExceptionHandlingController.java | 0 .../api/converters/JobKeyToJobDetailDTO.java | 0 .../api/converters/JobKeyToJobKeyDTO.java | 0 .../converters/SchedulerToSchedulerDTO.java | 0 ...impleTriggerCommandDTOToSimpleTrigger.java | 0 .../SimpleTriggerToSimpleTriggerDTO.java | 0 .../converters/TriggerKeyToTriggerKeyDTO.java | 0 .../api/converters/TriggerToTriggerDTO.java | 0 .../quartzmanager/api/dto/JobDetailDTO.java | 0 .../quartzmanager/api/dto/JobKeyDTO.java | 0 .../api/dto/MisfireInstruction.java | 0 .../quartzmanager/api/dto/SchedulerDTO.java | 0 .../api/dto/SimpleTriggerCommandDTO.java | 0 .../api/dto/SimpleTriggerDTO.java | 0 .../api/dto/SimpleTriggerInputDTO.java | 0 .../api/dto/TriggerCommandDTO.java | 0 .../quartzmanager/api/dto/TriggerDTO.java | 0 .../api/dto/TriggerFiredBundleDTO.java | 0 .../quartzmanager/api/dto/TriggerKeyDTO.java | 0 .../api/dto/TriggerPeriodDTO.java | 0 .../api/dto/TriggerRepetitionDTO.java | 0 .../api/enums/SchedulerStatus.java | 0 .../api/exceptions/ExceptionResponse.java | 0 .../exceptions/ResourceConflictException.java | 0 .../exceptions/TriggerNotFoundException.java | 0 .../api/jobs/AbstractQuartzManagerJob.java | 0 .../api/jobs/entities/LogRecord.java | 0 .../AutowiringSpringBeanJobFactory.java | 0 .../services/AbstractSchedulerService.java | 0 .../api/services/JobService.java | 0 .../api/services/SchedulerService.java | 0 .../api/services/SimpleTriggerService.java | 0 .../api/services/TriggerService.java | 0 .../validators/ValidRepetitionValidator.java | 0 .../api/validators/ValidTriggerPeriod.java | 0 .../ValidTriggerPeriodValidator.java | 0 .../validators/ValidTriggerRepetition.java | 0 .../api/websockets/WebSocketLogsNotifier.java | 0 .../websockets/WebSocketProgressNotifier.java | 0 .../api/websockets/WebhookSender.java | 0 .../main/resources/META-INF/spring.factories | 0 .../api/QuartManagerApplicationTests.java | 0 ...hedulerConfigDefaultAppPropertiesTest.java | 0 .../configuration/SchedulerConfigTest.java | 0 .../api/controllers/JobControllerTest.java | 0 .../ResourceConflictControllerTest.java | 0 .../controllers/SchedulerControllerTest.java | 0 .../SimpleTriggerControllerTest.java | 0 ...SimpleTriggerControllerValidationTest.java | 0 .../api/controllers/TestController.java | 0 .../controllers/TriggerControllerTest.java | 0 ...nvalidSimpleTriggerCommandDTOProvider.java | 0 .../api/controllers/utils/TestUtils.java | 0 .../api/controllers/utils/TriggerUtils.java | 0 .../SchedulerToSchedulerDTOTest.java | 0 ...eTriggerCommandDTOToSimpleTriggerTest.java | 0 .../SimpleTriggerToSimpleTriggerDTOTest.java | 0 .../api/dto/TriggerFiredBundleDTOTest.java | 0 .../quartzmanager/api/jobs/SampleJob.java | 0 .../quartzmanager/api/jobs/SampleJobTest.java | 0 .../api/services/JobServiceTest.java | 0 .../SchedulerServiceIntegrationTest.java | 0 .../api/services/SchedulerServiceTest.java | 0 .../SimpleTriggerServiceIntegrationTest.java | 0 .../services/SimpleTriggerServiceTest.java | 0 .../api/services/TriggerServiceTest.java | 0 .../ValidRepetitionValidatorTest.java | 0 .../samplepackage/SampleExtraJob.java | 0 .../src/test/resources/application.yml | 0 .../test/resources/managed-quartz.properties | 0 .../org.mockito.plugins.MockMaker | 0 .../pom.xml | 0 .../api/persistence/PersistenceConfig.java | 0 .../QuartzPersistencePropConfig.java | 0 .../main/resources/META-INF/spring.factories | 0 .../liquibase-changelog-master.xml | 0 ...V202102190034_quartz_tables_postgresql.sql | 0 .../resources/quartz-persistence.properties | 0 .../quartz-manager-starter-security/pom.xml | 0 .../security/QuartzManagerSecurityConfig.java | 0 .../config/SecurityOpenApiConfig.java | 0 .../security/controllers/UserController.java | 0 .../api/security/helpers/LoginConfigurer.java | 0 .../helpers/impl/AnonAuthentication.java | 0 .../impl/AuthenticationFailureHandler.java | 0 .../impl/AuthenticationSuccessHandler.java | 0 .../helpers/impl/FormLoginConfig.java | 0 .../helpers/impl/JwtAuthenticationFilter.java | 0 .../impl/JwtAuthenticationSuccessHandler.java | 0 .../JwtAuthenticationSuccessHandlerImpl.java | 0 .../impl/JwtTokenAuthenticationFilter.java | 0 .../impl/JwtTokenBasedAuthentication.java | 0 .../security/helpers/impl/JwtTokenHelper.java | 0 .../JwtUsernamePasswordFiterLoginConfig.java | 0 .../security/helpers/impl/LogoutSuccess.java | 0 .../impl/QuartzManagerHttpSecurity.java | 0 .../impl/RestAuthenticationEntryPoint.java | 0 .../api/security/models/UserTokenState.java | 0 .../properties/InMemoryAccountProperties.java | 0 .../properties/JwtSecurityProperties.java | 0 .../main/resources/META-INF/spring.factories | 0 .../security/AbstractSecurityLoginTest.java | 0 .../api/security/SecurityControllerTest.java | 0 .../security/SecurityLoginViaCookieTest.java | 0 .../SecurityLoginViaDefaultStrategyTest.java | 0 ...urityLoginViaHeaderAndLoginFilterTest.java | 0 .../security/SecurityLoginViaHeaderTest.java | 0 .../api/security/SpringApplicationTest.java | 0 .../security/controllers/TestController.java | 0 .../controllers/UserControllerTest.java | 0 .../AbstractPropertyValidatorTest.java | 0 ...InMemoryUsersValidationControllerTest.java | 0 .../properties/JwtSecurityPropertiesTest.java | 0 .../quartz-manager-starter-ui/pom.xml | 0 .../quartz-manager-web-showcase/.gitignore | 0 .../docker/quartzmanager/docker-compose.yml | 0 .../docker/quartzmanager/init-db.sh | 0 .../quartz-manager-web-showcase/pom.xml | 0 .../QuartzManagerDemoApplication.java | 0 .../it/fabioformosa/ServletInitializer.java | 0 .../WebShowcaseOpenApiConfig.java | 0 .../controllers/HealthCheckController.java | 0 .../controllers/SessionController.java | 0 .../quartzmanager/jobs/myjobs/SampleJob.java | 0 .../jobs/tests/MisfireTestJob.java | 0 .../src/main/resources/application.yml | 0 .../src/main/resources/banner.txt | 0 .../src/main/resources/logback.xml | 0 .../main/resources/managed-quartz.properties | 0 .../quartz-manager-2-screenshot_800.PNG | Bin .../resources/quartz-manager-4-screenshot.png | Bin .../resources/quartz-manager-4-swagger.png | Bin .../QuartManagerApplicationTests.java | 0 .../jobs/tests/MisfireTestJobTest.java | 0 315 files changed, 10873 insertions(+) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/.editorconfig (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/.travis.yml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/CHANGELOG.md (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/LICENSE (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/README.md (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/.browserslistrc (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/.editorconfig (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/.eslintrc.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/.gitignore (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/.prettierignore (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/.prettierrc.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/angular.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/e2e/app.po.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/jest.setup.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/karma.conf.js (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/package-lock.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/package.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/protractor.conf.js (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/proxy.conf.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/_test.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/animate.css (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/app.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/app.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/app.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/app.module.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/angular-white-transparent.svg (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/github.png (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/logs.svg (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/assets/image/user.png (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/environments/environment.prod.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/environments/environment.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/favicon.ico (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/index.html (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/main.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/polyfills.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/styles.css (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/src/typings.d.ts (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/tsconfig.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/tsconfig.spec.json (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-frontend/tslint.json (100%) create mode 100644 jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/yarn.lock rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/.editorconfig (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/.gitignore (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/README.md (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/lombok.config (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/mvnw (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/mvnw.cmd (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java (100%) rename jdk_11_maven/cs/{rest => rest-gui}/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java (100%) diff --git a/jdk_11_maven/cs/rest/quartz-manager/.editorconfig b/jdk_11_maven/cs/rest-gui/quartz-manager/.editorconfig similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/.editorconfig rename to jdk_11_maven/cs/rest-gui/quartz-manager/.editorconfig diff --git a/jdk_11_maven/cs/rest/quartz-manager/.travis.yml b/jdk_11_maven/cs/rest-gui/quartz-manager/.travis.yml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/.travis.yml rename to jdk_11_maven/cs/rest-gui/quartz-manager/.travis.yml diff --git a/jdk_11_maven/cs/rest/quartz-manager/CHANGELOG.md b/jdk_11_maven/cs/rest-gui/quartz-manager/CHANGELOG.md similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/CHANGELOG.md rename to jdk_11_maven/cs/rest-gui/quartz-manager/CHANGELOG.md diff --git a/jdk_11_maven/cs/rest/quartz-manager/LICENSE b/jdk_11_maven/cs/rest-gui/quartz-manager/LICENSE similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/LICENSE rename to jdk_11_maven/cs/rest-gui/quartz-manager/LICENSE diff --git a/jdk_11_maven/cs/rest/quartz-manager/README.md b/jdk_11_maven/cs/rest-gui/quartz-manager/README.md similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/README.md rename to jdk_11_maven/cs/rest-gui/quartz-manager/README.md diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.browserslistrc b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.browserslistrc similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.browserslistrc rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.browserslistrc diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.editorconfig b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.editorconfig similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.editorconfig rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.editorconfig diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.eslintrc.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.eslintrc.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.eslintrc.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.eslintrc.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.gitignore b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.gitignore similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.gitignore rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.gitignore diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierignore b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.prettierignore similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierignore rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.prettierignore diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierrc.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.prettierrc.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/.prettierrc.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/.prettierrc.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/angular.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/angular.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/angular.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/angular.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/e2e/app.e2e-spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.po.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/e2e/app.po.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/app.po.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/e2e/app.po.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/e2e/tsconfig.e2e.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/jest.setup.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/jest.setup.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/jest.setup.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/jest.setup.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/karma.conf.js b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/karma.conf.js similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/karma.conf.js rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/karma.conf.js diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package-lock.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/package-lock.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package-lock.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/package-lock.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/package.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/package.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/package.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/protractor.conf.js b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/protractor.conf.js similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/protractor.conf.js rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/protractor.conf.js diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/proxy.conf.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/proxy.conf.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/proxy.conf.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/proxy.conf.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/_test.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/_test.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/_test.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/_test.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/animate.css b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/animate.css similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/animate.css rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/animate.css diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app-routing.module.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.module.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.module.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/app.module.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/app.module.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/footer.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/footer/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/github.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/github/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/account-menu/account-menu.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/header.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/header/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/logs-panel/logs-panel.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/progress-panel/progress-panel.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/scheduler-control/scheduler-control.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/simple-trigger-config/simple-trigger-config.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/components/trigger-list/trigger-list.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/admin.guard.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/guest.guard.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/guards/login.guard.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/SocketEndpoint.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/SocketOption.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/jobDetail.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/jobKey.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/misfire-instruction.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/scheduler.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.command.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.form.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/simple-trigger.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/trigger-fired-bundle.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/trigger.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/model/triggerKey.model.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/polyfills.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/api.service.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/api.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/auth.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/config.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/job.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/logs.websocket.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/mocks/api.service.mock.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/mocks/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/mocks/user.service.mock.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/progress.websocket.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/scheduler.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/trigger.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/user.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/services/websocket.service.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/shared/models/display-message.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/loose-invalid.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/shared/utilities/serialize.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.css diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/error/genericError.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.css diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/forbidden.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/forbidden/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/login/login.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.scss diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/manager/manager.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/index.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.css diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.spec.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/app/views/not-found/not-found.component.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/.gitkeep diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/access_denied.svg diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/admin.png diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/angular-white-transparent.svg b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/angular-white-transparent.svg similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/angular-white-transparent.svg rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/angular-white-transparent.svg diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/error.svg diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/foo.png diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/github.png b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/github.png similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/github.png rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/github.png diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/logs.svg b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/logs.svg similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/logs.svg rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/logs.svg diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/page_not_found.svg diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/settings.svg diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/user.png b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/user.png similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/assets/image/user.png rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/assets/image/user.png diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/environments/environment.prod.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/environments/environment.prod.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/environments/environment.prod.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/environments/environment.prod.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/environments/environment.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/environments/environment.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/environments/environment.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/environments/environment.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/favicon.ico b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/favicon.ico similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/favicon.ico rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/favicon.ico diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/index.html b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/index.html similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/index.html rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/index.html diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/main.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/main.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/main.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/main.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/polyfills.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/polyfills.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/polyfills.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/polyfills.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/styles.css b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/styles.css similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/styles.css rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/styles.css diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/tsconfig.app.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/typings.d.ts b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/typings.d.ts similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/src/typings.d.ts rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/src/typings.d.ts diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/tsconfig.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/tsconfig.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.spec.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/tsconfig.spec.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tsconfig.spec.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/tsconfig.spec.json diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tslint.json b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/tslint.json similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-frontend/tslint.json rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/tslint.json diff --git a/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/yarn.lock b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/yarn.lock new file mode 100644 index 000000000..7d3cd1d6b --- /dev/null +++ b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-frontend/yarn.lock @@ -0,0 +1,10873 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@ampproject/remapping@2.2.0": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.2.0.tgz#56c133824780de3174aed5ab6834f3026790154d" + integrity sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w== + dependencies: + "@jridgewell/gen-mapping" "^0.1.0" + "@jridgewell/trace-mapping" "^0.3.9" + +"@ampproject/remapping@^2.1.0", "@ampproject/remapping@^2.2.0": + version "2.3.0" + resolved "https://registry.yarnpkg.com/@ampproject/remapping/-/remapping-2.3.0.tgz#ed441b6fa600072520ce18b43d2c8cc8caecc7f4" + integrity sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.24" + +"@angular-devkit/architect@0.1402.10": + version "0.1402.10" + resolved "https://registry.yarnpkg.com/@angular-devkit/architect/-/architect-0.1402.10.tgz#e5c552a7d9bcb90aab59964cb9b6c6ca6524e3cc" + integrity sha512-/6YmPrgataj1jD2Uqd1ED+CG4DaZGacoeZd/89hH7hF76Nno8K18DrSOqJAEmDnOWegpSRGVLd0qP09IHmaG5w== + dependencies: + "@angular-devkit/core" "14.2.10" + rxjs "6.6.7" + +"@angular-devkit/build-angular@14.2.10": + version "14.2.10" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-angular/-/build-angular-14.2.10.tgz#dfa0d85ba31a7624081145be5e1d9ca3ad07a666" + integrity sha512-VCeZAyq4uPCJukKInaSiD4i/GgxgcU4jFlLFQtoYNmaBS4xbPOymL19forRIihiV0dwNEa2L694vRTAPMBxIfw== + dependencies: + "@ampproject/remapping" "2.2.0" + "@angular-devkit/architect" "0.1402.10" + "@angular-devkit/build-webpack" "0.1402.10" + "@angular-devkit/core" "14.2.10" + "@babel/core" "7.18.10" + "@babel/generator" "7.18.12" + "@babel/helper-annotate-as-pure" "7.18.6" + "@babel/plugin-proposal-async-generator-functions" "7.18.10" + "@babel/plugin-transform-async-to-generator" "7.18.6" + "@babel/plugin-transform-runtime" "7.18.10" + "@babel/preset-env" "7.18.10" + "@babel/runtime" "7.18.9" + "@babel/template" "7.18.10" + "@discoveryjs/json-ext" "0.5.7" + "@ngtools/webpack" "14.2.10" + ansi-colors "4.1.3" + babel-loader "8.2.5" + babel-plugin-istanbul "6.1.1" + browserslist "^4.9.1" + cacache "16.1.2" + copy-webpack-plugin "11.0.0" + critters "0.0.16" + css-loader "6.7.1" + esbuild-wasm "0.15.5" + glob "8.0.3" + https-proxy-agent "5.0.1" + inquirer "8.2.4" + jsonc-parser "3.1.0" + karma-source-map-support "1.4.0" + less "4.1.3" + less-loader "11.0.0" + license-webpack-plugin "4.0.2" + loader-utils "3.2.1" + mini-css-extract-plugin "2.6.1" + minimatch "5.1.0" + open "8.4.0" + ora "5.4.1" + parse5-html-rewriting-stream "6.0.1" + piscina "3.2.0" + postcss "8.4.16" + postcss-import "15.0.0" + postcss-loader "7.0.1" + postcss-preset-env "7.8.0" + regenerator-runtime "0.13.9" + resolve-url-loader "5.0.0" + rxjs "6.6.7" + sass "1.54.4" + sass-loader "13.0.2" + semver "7.3.7" + source-map-loader "4.0.0" + source-map-support "0.5.21" + stylus "0.59.0" + stylus-loader "7.0.0" + terser "5.14.2" + text-table "0.2.0" + tree-kill "1.2.2" + tslib "2.4.0" + webpack "5.74.0" + webpack-dev-middleware "5.3.3" + webpack-dev-server "4.11.0" + webpack-merge "5.8.0" + webpack-subresource-integrity "5.1.0" + optionalDependencies: + esbuild "0.15.5" + +"@angular-devkit/build-webpack@0.1402.10": + version "0.1402.10" + resolved "https://registry.yarnpkg.com/@angular-devkit/build-webpack/-/build-webpack-0.1402.10.tgz#0e23825000d1037dcc30fac0a3c29d2d531a2e72" + integrity sha512-h+2MaSY7QSvoJ3R+Hvin21jVCfPGOTLdASIUk4Jmq6J3y5BSku3KSSaV8dWoBOBkFCwQyPQMRjiHoHKLpC1K7g== + dependencies: + "@angular-devkit/architect" "0.1402.10" + rxjs "6.6.7" + +"@angular-devkit/core@14.2.10": + version "14.2.10" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-14.2.10.tgz#9eedb7cf783030252f0c7546ce80fc321633b499" + integrity sha512-K4AO7mROTdbhQ7chtyQd6oPwmuL+BPUh+wn6Aq1qrmYJK4UZYFOPp8fi/Ehs8meCEeywtrssOPfrOE4Gsre9dg== + dependencies: + ajv "8.11.0" + ajv-formats "2.1.1" + jsonc-parser "3.1.0" + rxjs "6.6.7" + source-map "0.7.4" + +"@angular-devkit/core@^14.2.10": + version "14.2.13" + resolved "https://registry.yarnpkg.com/@angular-devkit/core/-/core-14.2.13.tgz#6c9e3420df7fa7fd2bafbf07405b0abfdcf0dac4" + integrity sha512-aIefeZcbjghQg/V6U9CTLtyB5fXDJ63KwYqVYkWP+i0XriS5A9puFgq2u/OVsWxAfYvqpDqp5AdQ0g0bi3CAsA== + dependencies: + ajv "8.11.0" + ajv-formats "2.1.1" + jsonc-parser "3.1.0" + rxjs "6.6.7" + source-map "0.7.4" + +"@angular-devkit/schematics@14.2.10": + version "14.2.10" + resolved "https://registry.yarnpkg.com/@angular-devkit/schematics/-/schematics-14.2.10.tgz#91fcc85199aa7fa9a3a0cb49d8a5266421f9d5e3" + integrity sha512-MMp31KpJTwKHisXOq+6VOXYApq97hZxFaFmZk396X5aIFTCELUwjcezQDk+u2nEs5iK/COUfnN3plGcfJxYhQA== + dependencies: + "@angular-devkit/core" "14.2.10" + jsonc-parser "3.1.0" + magic-string "0.26.2" + ora "5.4.1" + rxjs "6.6.7" + +"@angular-eslint/builder@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/builder/-/builder-14.4.0.tgz#f2cfc6ba44c170f440ce386027a2bdc6f824b12f" + integrity sha512-AhAUFvSg0urtb6Lsowvuxwu6DMXUy0BPwrnfNOBGjRt9vG7F9kgXXAsm5DnIS0GNy/mLZ9mSfa86fv++1e0KUA== + +"@angular-eslint/bundled-angular-compiler@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/bundled-angular-compiler/-/bundled-angular-compiler-14.4.0.tgz#3cf20f8b2df9702f55ae8f319b381ef3789fe6b3" + integrity sha512-KMHPHd24s0HVvAP/DxSSqhYBWhwW8FgS/r0Uwv8eWpsIdc/z/Chd2ush2SgPchmmquAXTgOZsbEY7ZmW+XkJfQ== + +"@angular-eslint/eslint-plugin-template@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin-template/-/eslint-plugin-template-14.4.0.tgz#4b6bbfee889bb176cde39aa6179a36ad496bf790" + integrity sha512-d3GM/EU2iWzr+BrITwO4gBf9WfDfuOdTjfinV/zN84oXMFaK2ENo+IP6OEsD9hh36rdPps+m2gFGDdx+rTzBpg== + dependencies: + "@angular-eslint/bundled-angular-compiler" "14.4.0" + "@angular-eslint/utils" "14.4.0" + "@typescript-eslint/type-utils" "5.43.0" + "@typescript-eslint/utils" "5.43.0" + aria-query "5.1.3" + axobject-query "3.1.1" + +"@angular-eslint/eslint-plugin@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/eslint-plugin/-/eslint-plugin-14.4.0.tgz#fd37623f549389c785692437a62a4ed247e2feee" + integrity sha512-2rZQ4mt7tEUW+lI5jjuj3HWaT4VQtWTG6+LDnmuUmx76m8hqQ7NvFUpOcNDofu5KbEVBP+oF2DA6wjoZOIuSOA== + dependencies: + "@angular-eslint/utils" "14.4.0" + "@typescript-eslint/utils" "5.43.0" + +"@angular-eslint/schematics@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/schematics/-/schematics-14.4.0.tgz#f16c11818d566e64bca30809d19e08f344159023" + integrity sha512-BrGkPug+CZQWOfmNRsJDrEtYJcxvzF/kLlV7RjvIN9Ky5TjUiJVCeafl3VY6COSY32tjlh2GvBdl1AQKWWovbA== + dependencies: + "@angular-eslint/eslint-plugin" "14.4.0" + "@angular-eslint/eslint-plugin-template" "14.4.0" + ignore "5.2.0" + strip-json-comments "3.1.1" + tmp "0.2.1" + +"@angular-eslint/template-parser@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/template-parser/-/template-parser-14.4.0.tgz#ad6158c9c3e8d907a42ce448ed14fc11bd9943b2" + integrity sha512-zq888KpQB0YTEK26mkKcT4fs8LDWWT1oAEXU8DrXhvkikS8XavTSHOWJye/bVZR4oJRFCF5YTJV75DEMcGNIpQ== + dependencies: + "@angular-eslint/bundled-angular-compiler" "14.4.0" + eslint-scope "^7.0.0" + +"@angular-eslint/utils@14.4.0": + version "14.4.0" + resolved "https://registry.yarnpkg.com/@angular-eslint/utils/-/utils-14.4.0.tgz#92087519a23e6a71088c3b63f953ee052252bb88" + integrity sha512-dPHklAVfh+JfueDfXre9Xooq7p5bFyKO2Z6y1agYeofAgHCPIJOPx2AhtFPrOtsc4VXFFiyE9XbowlXh4ogoKQ== + dependencies: + "@angular-eslint/bundled-angular-compiler" "14.4.0" + "@typescript-eslint/utils" "5.43.0" + +"@angular-material-components/datetime-picker@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@angular-material-components/datetime-picker/-/datetime-picker-8.0.0.tgz#0e256ba1e5c5eb1109c218bb4acb4a14590cd894" + integrity sha512-mpndWbRimp77omkfa9LlpY21FN8xOFH8NV4hSLOxWg7RpUa1gZXLtW6mTRuDQ9cpWO6m9qH/8ioHKtvY+Epckg== + dependencies: + tslib "^2.3.0" + +"@angular-material-components/moment-adapter@8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@angular-material-components/moment-adapter/-/moment-adapter-8.0.0.tgz#099ea6b2d020644db1dede34d38a3b4b7dbbc0c9" + integrity sha512-Kxb84BLNxw4+imJo8qYc4ZJM0DjyO+mroiZZtLxu7futTgjbWVk02x9DBw6GFB1XJNTQzk1GhapZ+mL8irCAbA== + dependencies: + tslib "^2.3.0" + +"@angular/animations@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/animations/-/animations-14.2.12.tgz#9ff16bad809d3ff7526f8359ef214e63e8236f9f" + integrity sha512-gwdnFZkvVUr+enUNfhfCGRGGqNHn1+vTA81apLfHYhJxgjiLUtETc4KTOrQevtDm022pEd+LSrvr8r+7ag+jkw== + dependencies: + tslib "^2.3.0" + +"@angular/cdk@^14.0.1": + version "14.2.7" + resolved "https://registry.yarnpkg.com/@angular/cdk/-/cdk-14.2.7.tgz#65eb6fbbeed6120fad4e3913aa66f8b74c853ac3" + integrity sha512-/tEsYaUbDSnfEmKVvAMramIptmhI67O+9STjOV0i+74XR2NospeK0fkbywIANu1n3w6AHGMotvRWJrjmbCElFg== + dependencies: + tslib "^2.3.0" + optionalDependencies: + parse5 "^5.0.0" + +"@angular/cli@14.2.10": + version "14.2.10" + resolved "https://registry.yarnpkg.com/@angular/cli/-/cli-14.2.10.tgz#09ae3c4b5aa91fc52de95fb69f2265e350249171" + integrity sha512-gX9sAKOwq4lKdPWeABB7TzKDHdjQXvkUU8NmPJA6mEAVXvm3lhQtFvHDalZstwK8au2LY0LaXTcEtcKYOt3AXQ== + dependencies: + "@angular-devkit/architect" "0.1402.10" + "@angular-devkit/core" "14.2.10" + "@angular-devkit/schematics" "14.2.10" + "@schematics/angular" "14.2.10" + "@yarnpkg/lockfile" "1.1.0" + ansi-colors "4.1.3" + debug "4.3.4" + ini "3.0.0" + inquirer "8.2.4" + jsonc-parser "3.1.0" + npm-package-arg "9.1.0" + npm-pick-manifest "7.0.1" + open "8.4.0" + ora "5.4.1" + pacote "13.6.2" + resolve "1.22.1" + semver "7.3.7" + symbol-observable "4.0.0" + uuid "8.3.2" + yargs "17.5.1" + +"@angular/common@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/common/-/common-14.2.12.tgz#b608ff629a635f323b297000f53f976f71ae3c80" + integrity sha512-oZunh9wfInFWhNO1P8uoEs/o4u8kerKMhw8GruywKm1TV7gHDP2Fi5WHGjFqq3XYptgBTPCTSEfyLX6Cwq1PUw== + dependencies: + tslib "^2.3.0" + +"@angular/compiler-cli@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/compiler-cli/-/compiler-cli-14.2.12.tgz#d1653ddf72014cbb306382a22784af5432465db8" + integrity sha512-9Gkb9KFkaQPz8XaS8ZwwTioRZ4ywykdAWyceICEi78/Y9ConYrTX2SbFogzI2dPUZU8a04tMlbqTSmHjVbJftQ== + dependencies: + "@babel/core" "^7.17.2" + chokidar "^3.0.0" + convert-source-map "^1.5.1" + dependency-graph "^0.11.0" + magic-string "^0.26.0" + reflect-metadata "^0.1.2" + semver "^7.0.0" + sourcemap-codec "^1.4.8" + tslib "^2.3.0" + yargs "^17.2.1" + +"@angular/compiler@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-14.2.12.tgz#2b17667acfb2cda1521de102246b178845838812" + integrity sha512-u2MH9+NRwbbFDRNiPWPexed9CnCq9+pGHLuyACSP2uR6Ik68cE6cayeZbIeoEV5vWpda/XsLmJgPJysw7dAZLQ== + dependencies: + tslib "^2.3.0" + +"@angular/compiler@9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-9.0.0.tgz#87e0bef4c369b6cadae07e3a4295778fc93799d5" + integrity sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ== + +"@angular/core@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-14.2.12.tgz#118467ec4e8ea082931a84e8cefe722a0e110dc9" + integrity sha512-sGQxU5u4uawwvJa6jOTmGoisJiQ5HIN/RoBw99CmoqZIVyUSg9IRJJC1KVdH8gbpWBNLkElZv21lwJTL/msWyg== + dependencies: + tslib "^2.3.0" + +"@angular/core@9.0.0": + version "9.0.0" + resolved "https://registry.yarnpkg.com/@angular/core/-/core-9.0.0.tgz#227dc53e1ac81824f998c6e76000b7efc522641e" + integrity sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w== + +"@angular/flex-layout@14.0.0-beta.41": + version "14.0.0-beta.41" + resolved "https://registry.yarnpkg.com/@angular/flex-layout/-/flex-layout-14.0.0-beta.41.tgz#94903664670090c3ba0d4824b0135882a7f1bda9" + integrity sha512-x1YcxqkdFlcbVXEy9ebCgW/F+7n/MXkEkwEcVEIPf5v5qn7HZsjQxgIj35Lf0amvMyF7h35prpoxO1uX5+ntFg== + dependencies: + tslib "^2.3.0" + +"@angular/forms@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/forms/-/forms-14.2.12.tgz#2174e4e3b87390b0f1ebde0b3fc6c4d2ae793a1a" + integrity sha512-7abYlGIT2JnAtutQUlH3fQS6QEpbfftgvsVcZJCyvX0rXL3u2w2vUQkDHJH4YJJp3AHFVCH4/l7R4VcaPnrwvA== + dependencies: + tslib "^2.3.0" + +"@angular/language-service@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/language-service/-/language-service-14.2.12.tgz#d17b18f0f7cab815bd0cdeb8b9c04989d6a4512b" + integrity sha512-YmW6simyEVmpDmbYVUhZ2IxSP6pmsWrV120rB9Y21/BeM39WIXA4NCNirVWlAd/KAKY9O7Sbn1nXI6rSDfhopQ== + +"@angular/material@^14.0.1": + version "14.2.7" + resolved "https://registry.yarnpkg.com/@angular/material/-/material-14.2.7.tgz#678c657197268eba6814c757152f8d178ff08866" + integrity sha512-WXHh8pEStpgkXZJmYOg2cI8BSHkV82ET4XTJCNPdveumaCn1UYnaNzsXD13kw5z+zmy8CufhFEzdXTrv/yt7KQ== + dependencies: + tslib "^2.3.0" + +"@angular/platform-browser-dynamic@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.12.tgz#d4dac4a488c804ea07213a98450efa124a15d70a" + integrity sha512-oZhNJeaBmgw8+KBSYpKz2RYqEDyETC+HJXH8dwIFcP6BqqwL2NE70FdSR7EnOa5c41MEtTmMCGhrJSFR60x5/w== + dependencies: + tslib "^2.3.0" + +"@angular/platform-browser@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/platform-browser/-/platform-browser-14.2.12.tgz#24fe6bc87d056fc8b91924091da712fef7c66457" + integrity sha512-vOarWym8ucl1gjYWCzdwyBha+MTvL381mvTTUu8aUx6nVhHFjv4bvpjlZnZgojecqUPyxOwmPLLHvCZPJVHZYg== + dependencies: + tslib "^2.3.0" + +"@angular/platform-server@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/platform-server/-/platform-server-14.2.12.tgz#5410a5f8814c89d9830614b0498ac94067d65b1e" + integrity sha512-RDxNh47Rp0EYrimbzviqhagdbL58Z3S88PDYybYbshFwV+MgWsvWasK/WntTMP/JtRP4FBU0Uiwxy7mgVdxb0g== + dependencies: + domino "^2.1.2" + tslib "^2.3.0" + xhr2 "^0.2.0" + +"@angular/router@14.2.12": + version "14.2.12" + resolved "https://registry.yarnpkg.com/@angular/router/-/router-14.2.12.tgz#f5b2c9ced3337e4a7af1905b861b114ac80a8482" + integrity sha512-r5tVus5RJDNc4U2v0jMtjPiAS1xDsVsJ70lS313DgZmBDHIVZP1cWIehdxwgNlGwQQtAA36eG7toBwqUU3gb/A== + dependencies: + tslib "^2.3.0" + +"@assemblyscript/loader@^0.10.1": + version "0.10.1" + resolved "https://registry.yarnpkg.com/@assemblyscript/loader/-/loader-0.10.1.tgz#70e45678f06c72fa2e350e8553ec4a4d72b92e06" + integrity sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg== + +"@auth0/angular-jwt@5.1.0": + version "5.1.0" + resolved "https://registry.yarnpkg.com/@auth0/angular-jwt/-/angular-jwt-5.1.0.tgz#766abad6e6ee2e30b7c24362303c16b13e198a84" + integrity sha512-EAQoNKPQSZYphcX6FnY2e7xQpD4ZdHQ1DbHq/m+G1U1qA60m3XnhdjPPfu+blVHARlxEbRzWXc48UOVrnMsrZw== + dependencies: + tslib "^2.0.0" + +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.12.13", "@babel/code-frame@^7.18.6", "@babel/code-frame@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.27.1.tgz#200f715e66d52a23b221a9435534a91cc13ad5be" + integrity sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg== + dependencies: + "@babel/helper-validator-identifier" "^7.27.1" + js-tokens "^4.0.0" + picocolors "^1.1.1" + +"@babel/compat-data@^7.17.7", "@babel/compat-data@^7.18.8", "@babel/compat-data@^7.20.5", "@babel/compat-data@^7.27.2": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.28.0.tgz#9fc6fd58c2a6a15243cd13983224968392070790" + integrity sha512-60X7qkglvrap8mn1lh2ebxXdZYtUcpd7gsmy9kLaBJ4i/WdY8PqTSdxyA8qraikqKQK5C1KRBKXqznrVapyNaw== + +"@babel/core@7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.18.10.tgz#39ad504991d77f1f3da91be0b8b949a5bc466fb8" + integrity sha512-JQM6k6ENcBFKVtWvLavlvi/mPcpYZ3+R+2EySDEMSMbp7Mn4FexlbbJVrx2R7Ijhr01T8gyqrOaABWIOgxeUyw== + dependencies: + "@ampproject/remapping" "^2.1.0" + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.10" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-module-transforms" "^7.18.9" + "@babel/helpers" "^7.18.9" + "@babel/parser" "^7.18.10" + "@babel/template" "^7.18.10" + "@babel/traverse" "^7.18.10" + "@babel/types" "^7.18.10" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.1" + semver "^6.3.0" + +"@babel/core@^7.11.6", "@babel/core@^7.12.3", "@babel/core@^7.17.2": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.28.0.tgz#55dad808d5bf3445a108eefc88ea3fdf034749a4" + integrity sha512-UlLAnTPrFdNGoFtbSXwcGFQBtQZJCNjaN6hQNP3UPvuNXT1i82N26KL3dZeIpNalWywr9IuQuncaAfUaS1g6sQ== + dependencies: + "@ampproject/remapping" "^2.2.0" + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-module-transforms" "^7.27.3" + "@babel/helpers" "^7.27.6" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/traverse" "^7.28.0" + "@babel/types" "^7.28.0" + convert-source-map "^2.0.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.2.3" + semver "^6.3.1" + +"@babel/generator@7.18.12": + version "7.18.12" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.12.tgz#fa58daa303757bd6f5e4bbca91b342040463d9f4" + integrity sha512-dfQ8ebCN98SvyL7IxNMCUtZQSq5R7kxgN+r8qYTGDmmSion1hX2C0zq2yo1bsCDhXixokv1SAWTZUMYbO/V5zg== + dependencies: + "@babel/types" "^7.18.10" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + +"@babel/generator@^7.18.10", "@babel/generator@^7.28.0", "@babel/generator@^7.7.2": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.28.0.tgz#9cc2f7bd6eb054d77dc66c2664148a0c5118acd2" + integrity sha512-lJjzvrbEeWrhB4P3QBsH7tey117PjLZnDbLiQEKjQ/fNJTjuq4HSqgFA+UNSwZT8D7dxxbnuSBMsa1lrWzKlQg== + dependencies: + "@babel/parser" "^7.28.0" + "@babel/types" "^7.28.0" + "@jridgewell/gen-mapping" "^0.3.12" + "@jridgewell/trace-mapping" "^0.3.28" + jsesc "^3.0.2" + +"@babel/helper-annotate-as-pure@7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz#eaa49f6f80d5a33f9a5dd2276e6d6e451be0a6bb" + integrity sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-annotate-as-pure@^7.18.6", "@babel/helper-annotate-as-pure@^7.27.1", "@babel/helper-annotate-as-pure@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.27.3.tgz#f31fd86b915fc4daf1f3ac6976c59be7084ed9c5" + integrity sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg== + dependencies: + "@babel/types" "^7.27.3" + +"@babel/helper-compilation-targets@^7.17.7", "@babel/helper-compilation-targets@^7.18.9", "@babel/helper-compilation-targets@^7.20.7", "@babel/helper-compilation-targets@^7.27.1", "@babel/helper-compilation-targets@^7.27.2": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.27.2.tgz#46a0f6efab808d51d29ce96858dd10ce8732733d" + integrity sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ== + dependencies: + "@babel/compat-data" "^7.27.2" + "@babel/helper-validator-option" "^7.27.1" + browserslist "^4.24.0" + lru-cache "^5.1.1" + semver "^6.3.1" + +"@babel/helper-create-class-features-plugin@^7.18.6", "@babel/helper-create-class-features-plugin@^7.21.0": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.27.1.tgz#5bee4262a6ea5ddc852d0806199eb17ca3de9281" + integrity sha512-QwGAmuvM17btKU5VqXfb+Giw4JcN0hjuufz3DYnpeVDvZLAObloM77bhMXiqry3Iio+Ai4phVRDwl6WU10+r5A== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/traverse" "^7.27.1" + semver "^6.3.1" + +"@babel/helper-create-regexp-features-plugin@^7.18.6", "@babel/helper-create-regexp-features-plugin@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.27.1.tgz#05b0882d97ba1d4d03519e4bce615d70afa18c53" + integrity sha512-uVDC72XVf8UbrH5qQTc18Agb8emwjTiZrQE11Nv3CuBEZmVvTwwE9CBUEvHku06gQCAyYf8Nv6ja1IN+6LMbxQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + regexpu-core "^6.2.0" + semver "^6.3.1" + +"@babel/helper-define-polyfill-provider@^0.3.2", "@babel/helper-define-polyfill-provider@^0.3.3": + version "0.3.3" + resolved "https://registry.yarnpkg.com/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz#8612e55be5d51f0cd1f36b4a5a83924e89884b7a" + integrity sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww== + dependencies: + "@babel/helper-compilation-targets" "^7.17.7" + "@babel/helper-plugin-utils" "^7.16.7" + debug "^4.1.1" + lodash.debounce "^4.0.8" + resolve "^1.14.2" + semver "^6.1.2" + +"@babel/helper-environment-visitor@^7.18.9": + version "7.24.7" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz#4b31ba9551d1f90781ba83491dd59cf9b269f7d9" + integrity sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ== + dependencies: + "@babel/types" "^7.24.7" + +"@babel/helper-globals@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/helper-globals/-/helper-globals-7.28.0.tgz#b9430df2aa4e17bc28665eadeae8aa1d985e6674" + integrity sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw== + +"@babel/helper-member-expression-to-functions@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.27.1.tgz#ea1211276be93e798ce19037da6f06fbb994fa44" + integrity sha512-E5chM8eWjTp/aNoVpcbfM7mLxu9XGLWYise2eBKGQomAk/Mb4XoxyqXTZbuTohbsl8EKqdlMhnDI2CCLfcs9wA== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-imports@^7.18.6", "@babel/helper-module-imports@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.27.1.tgz#7ef769a323e2655e126673bb6d2d6913bbead204" + integrity sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-module-transforms@^7.18.9", "@babel/helper-module-transforms@^7.27.1", "@babel/helper-module-transforms@^7.27.3": + version "7.27.3" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.27.3.tgz#db0bbcfba5802f9ef7870705a7ef8788508ede02" + integrity sha512-dSOvYwvyLsWBeIRyOeHXp5vPj5l1I011r52FM1+r1jCERv+aFXYk4whgQccYEGYxK2H3ZAIA8nuPkQ0HaUo3qg== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.3" + +"@babel/helper-optimise-call-expression@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.27.1.tgz#c65221b61a643f3e62705e5dd2b5f115e35f9200" + integrity sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw== + dependencies: + "@babel/types" "^7.27.1" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.12.13", "@babel/helper-plugin-utils@^7.14.5", "@babel/helper-plugin-utils@^7.16.7", "@babel/helper-plugin-utils@^7.18.6", "@babel/helper-plugin-utils@^7.18.9", "@babel/helper-plugin-utils@^7.20.2", "@babel/helper-plugin-utils@^7.27.1", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.27.1.tgz#ddb2f876534ff8013e6c2b299bf4d39b3c51d44c" + integrity sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw== + +"@babel/helper-remap-async-to-generator@^7.18.6", "@babel/helper-remap-async-to-generator@^7.18.9", "@babel/helper-remap-async-to-generator@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.27.1.tgz#4601d5c7ce2eb2aea58328d43725523fcd362ce6" + integrity sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.1" + "@babel/helper-wrap-function" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-replace-supers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.27.1.tgz#b1ed2d634ce3bdb730e4b52de30f8cccfd692bc0" + integrity sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.27.1" + "@babel/helper-optimise-call-expression" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.20.0", "@babel/helper-skip-transparent-expression-wrappers@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.27.1.tgz#62bb91b3abba8c7f1fec0252d9dbea11b3ee7a56" + integrity sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg== + dependencies: + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helper-string-parser@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687" + integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA== + +"@babel/helper-validator-identifier@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8" + integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow== + +"@babel/helper-validator-option@^7.18.6", "@babel/helper-validator-option@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz#fa52f5b1e7db1ab049445b421c4471303897702f" + integrity sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg== + +"@babel/helper-wrap-function@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/helper-wrap-function/-/helper-wrap-function-7.27.1.tgz#b88285009c31427af318d4fe37651cd62a142409" + integrity sha512-NFJK2sHUvrjo8wAU/nQTWU890/zB2jj0qBcCbZbbf+005cAsv6tMjXz31fBign6M5ov1o0Bllu+9nbqkfsjjJQ== + dependencies: + "@babel/template" "^7.27.1" + "@babel/traverse" "^7.27.1" + "@babel/types" "^7.27.1" + +"@babel/helpers@^7.18.9", "@babel/helpers@^7.27.6": + version "7.27.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.27.6.tgz#6456fed15b2cb669d2d1fabe84b66b34991d812c" + integrity sha512-muE8Tt8M22638HU31A3CgfSUciwz1fhATfoVai05aPXGor//CdWDCbnlY1yvBPo07njuVOCNGCSp/GTt12lIug== + dependencies: + "@babel/template" "^7.27.2" + "@babel/types" "^7.27.6" + +"@babel/parser@^7.1.0", "@babel/parser@^7.14.7", "@babel/parser@^7.18.10", "@babel/parser@^7.20.7", "@babel/parser@^7.27.2", "@babel/parser@^7.28.0": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.28.0.tgz#979829fbab51a29e13901e5a80713dbcb840825e" + integrity sha512-jVZGvOxOuNSsuQuLRTh13nU0AogFlw32w/MT+LV6D3sP5WdbW61E77RnkbaO2dUvmPAYrBDJXGn5gGS6tH4j8g== + dependencies: + "@babel/types" "^7.28.0" + +"@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.27.1.tgz#beb623bd573b8b6f3047bd04c32506adc3e58a72" + integrity sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.27.1.tgz#e134a5479eb2ba9c02714e8c1ebf1ec9076124fd" + integrity sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + "@babel/plugin-transform-optional-chaining" "^7.27.1" + +"@babel/plugin-proposal-async-generator-functions@7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.10.tgz#85ea478c98b0095c3e4102bff3b67d306ed24952" + integrity sha512-1mFuY2TOsR1hxbjCo4QL+qlIjV07p4H4EUYw2J/WCqsvFV6V9X9z9YhXbWndc/4fw+hYGlDT7egYxliMp5O6Ew== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-async-generator-functions@^7.18.10": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz#bfb7276d2d573cb67ba379984a2334e262ba5326" + integrity sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA== + dependencies: + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-remap-async-to-generator" "^7.18.9" + "@babel/plugin-syntax-async-generators" "^7.8.4" + +"@babel/plugin-proposal-class-properties@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz#b110f59741895f7ec21a6fff696ec46265c446a3" + integrity sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-class-static-block@^7.18.6": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.21.0.tgz#77bdd66fb7b605f3a61302d224bdfacf5547977d" + integrity sha512-XP5G9MWNUskFuP30IfFSEFB0Z6HzLIUcjYM4bYOPHXl7eiJ9HFv8tWj6TXTN5QODiEhDZAeI4hLok2iHFFV4hw== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + +"@babel/plugin-proposal-dynamic-import@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz#72bcf8d408799f547d759298c3c27c7e7faa4d94" + integrity sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-dynamic-import" "^7.8.3" + +"@babel/plugin-proposal-export-namespace-from@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz#5f7313ab348cdb19d590145f9247540e94761203" + integrity sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/plugin-syntax-export-namespace-from" "^7.8.3" + +"@babel/plugin-proposal-json-strings@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz#7e8788c1811c393aff762817e7dbf1ebd0c05f0b" + integrity sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-json-strings" "^7.8.3" + +"@babel/plugin-proposal-logical-assignment-operators@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz#dfbcaa8f7b4d37b51e8bfb46d94a5aea2bb89d83" + integrity sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-logical-assignment-operators" "^7.10.4" + +"@babel/plugin-proposal-nullish-coalescing-operator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz#fdd940a99a740e577d6c753ab6fbb43fdb9467e1" + integrity sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" + +"@babel/plugin-proposal-numeric-separator@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz#899b14fbafe87f053d2c5ff05b36029c62e13c75" + integrity sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-numeric-separator" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.18.9": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz#aa662940ef425779c75534a5c41e9d936edc390a" + integrity sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg== + dependencies: + "@babel/compat-data" "^7.20.5" + "@babel/helper-compilation-targets" "^7.20.7" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-object-rest-spread" "^7.8.3" + "@babel/plugin-transform-parameters" "^7.20.7" + +"@babel/plugin-proposal-optional-catch-binding@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz#f9400d0e6a3ea93ba9ef70b09e72dd6da638a2cb" + integrity sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw== + dependencies: + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" + +"@babel/plugin-proposal-optional-chaining@^7.18.9": + version "7.21.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz#886f5c8978deb7d30f678b2e24346b287234d3ea" + integrity sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA== + dependencies: + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/helper-skip-transparent-expression-wrappers" "^7.20.0" + "@babel/plugin-syntax-optional-chaining" "^7.8.3" + +"@babel/plugin-proposal-private-methods@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz#5209de7d213457548a98436fa2882f52f4be6bea" + integrity sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-proposal-private-property-in-object@^7.18.6": + version "7.21.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.21.11.tgz#69d597086b6760c4126525cfa154f34631ff272c" + integrity sha512-0QZ8qP/3RLDVBwBFoWAwCtgcDZJVwA5LUJRZU8x2YFfKNuFq161wK3cuGrALu5yiPu+vzwTAg/sMWVNeWeNyaw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.18.6" + "@babel/helper-create-class-features-plugin" "^7.21.0" + "@babel/helper-plugin-utils" "^7.20.2" + "@babel/plugin-syntax-private-property-in-object" "^7.14.5" + +"@babel/plugin-proposal-unicode-property-regex@^7.18.6", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz#af613d2cd5e643643b65cded64207b15c85cb78e" + integrity sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + +"@babel/plugin-syntax-async-generators@^7.8.4": + version "7.8.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" + integrity sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-bigint@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz#4c9a6f669f5d0cdf1b90a1671e9a146be5300cea" + integrity sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-class-properties@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz#b5c987274c4a3a82b89714796931a6b53544ae10" + integrity sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + +"@babel/plugin-syntax-class-static-block@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz#195df89b146b4b78b3bf897fd7a257c84659d406" + integrity sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-dynamic-import@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" + integrity sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-export-namespace-from@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz#028964a9ba80dbc094c915c487ad7c4e7a66465a" + integrity sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.3" + +"@babel/plugin-syntax-import-assertions@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.27.1.tgz#88894aefd2b03b5ee6ad1562a7c8e1587496aecd" + integrity sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-attributes@^7.24.7": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.27.1.tgz#34c017d54496f9b11b61474e7ea3dfd5563ffe07" + integrity sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-syntax-import-meta@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-json-strings@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz#01ca21b668cd8218c9e640cb6dd88c5412b2c96a" + integrity sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-logical-assignment-operators@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz#167ed70368886081f74b5c36c65a88c03b66d1a9" + integrity sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-numeric-separator@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-object-rest-spread@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" + integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-catch-binding@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz#6111a265bcfb020eb9efd0fdfd7d26402b9ed6c1" + integrity sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-optional-chaining@^7.8.3": + version "7.8.3" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz#4f69c2ab95167e0180cd5336613f8c5788f7d48a" + integrity sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg== + dependencies: + "@babel/helper-plugin-utils" "^7.8.0" + +"@babel/plugin-syntax-private-property-in-object@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz#0dc6671ec0ea22b6e94a1114f857970cd39de1ad" + integrity sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-top-level-await@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz#c1cfdadc35a646240001f06138247b741c34d94c" + integrity sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw== + dependencies: + "@babel/helper-plugin-utils" "^7.14.5" + +"@babel/plugin-syntax-typescript@^7.7.2": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.27.1.tgz#5147d29066a793450f220c63fa3a9431b7e6dd18" + integrity sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-arrow-functions@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.27.1.tgz#6e2061067ba3ab0266d834a9f94811196f2aba9a" + integrity sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-async-to-generator@7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.18.6.tgz#ccda3d1ab9d5ced5265fdb13f1882d5476c71615" + integrity sha512-ARE5wZLKnTgPW7/1ftQmSi1CmkqqHo2DNmtztFhvgtOWSDfq0Cq9/9L+KnZNYSNrydBekhW3rwShduf59RoXag== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.6" + "@babel/helper-remap-async-to-generator" "^7.18.6" + +"@babel/plugin-transform-async-to-generator@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.27.1.tgz#9a93893b9379b39466c74474f55af03de78c66e7" + integrity sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA== + dependencies: + "@babel/helper-module-imports" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-remap-async-to-generator" "^7.27.1" + +"@babel/plugin-transform-block-scoped-functions@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.27.1.tgz#558a9d6e24cf72802dd3b62a4b51e0d62c0f57f9" + integrity sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-block-scoping@^7.18.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.28.0.tgz#e7c50cbacc18034f210b93defa89638666099451" + integrity sha512-gKKnwjpdx5sER/wl0WN0efUBFzF/56YZO0RJrSYP4CljXnP31ByY7fol89AzomdlLNzI36AvOTmYHsnZTCkq8Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-classes@^7.18.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.28.0.tgz#12fa46cffc32a6e084011b650539e880add8a0f8" + integrity sha512-IjM1IoJNw72AZFlj33Cu8X0q2XK/6AaVC3jQu+cgQ5lThWD5ajnuUAml80dqRmOhmPkTH8uAwnpMu9Rvj0LTRA== + dependencies: + "@babel/helper-annotate-as-pure" "^7.27.3" + "@babel/helper-compilation-targets" "^7.27.2" + "@babel/helper-globals" "^7.28.0" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + "@babel/traverse" "^7.28.0" + +"@babel/plugin-transform-computed-properties@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.27.1.tgz#81662e78bf5e734a97982c2b7f0a793288ef3caa" + integrity sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/template" "^7.27.1" + +"@babel/plugin-transform-destructuring@^7.18.9": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.28.0.tgz#0f156588f69c596089b7d5b06f5af83d9aa7f97a" + integrity sha512-v1nrSMBiKcodhsyJ4Gf+Z0U/yawmJDBOTpEB3mcQY52r9RIyPneGyAS/yM6seP/8I+mWI3elOMtT5dB8GJVs+A== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.28.0" + +"@babel/plugin-transform-dotall-regex@^7.18.6", "@babel/plugin-transform-dotall-regex@^7.4.4": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.27.1.tgz#aa6821de864c528b1fecf286f0a174e38e826f4d" + integrity sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-duplicate-keys@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.27.1.tgz#f1fbf628ece18e12e7b32b175940e68358f546d1" + integrity sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-exponentiation-operator@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.27.1.tgz#fc497b12d8277e559747f5a3ed868dd8064f83e1" + integrity sha512-uspvXnhHvGKf2r4VVtBpeFnuDWsJLQ6MF6lGJLC89jBR1uoVeqM416AZtTuhTezOfgHicpJQmoD5YUakO/YmXQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-for-of@^7.18.8": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.27.1.tgz#bc24f7080e9ff721b63a70ac7b2564ca15b6c40a" + integrity sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-function-name@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.27.1.tgz#4d0bf307720e4dce6d7c30fcb1fd6ca77bdeb3a7" + integrity sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ== + dependencies: + "@babel/helper-compilation-targets" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-literals@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.27.1.tgz#baaefa4d10a1d4206f9dcdda50d7d5827bb70b24" + integrity sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-member-expression-literals@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.27.1.tgz#37b88ba594d852418e99536f5612f795f23aeaf9" + integrity sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-amd@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.27.1.tgz#a4145f9d87c2291fe2d05f994b65dba4e3e7196f" + integrity sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-commonjs@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.27.1.tgz#8e44ed37c2787ecc23bdc367f49977476614e832" + integrity sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-modules-systemjs@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.27.1.tgz#00e05b61863070d0f3292a00126c16c0e024c4ed" + integrity sha512-w5N1XzsRbc0PQStASMksmUeqECuzKuTJer7kFagK8AXgpCMkeDMO5S+aaFb7A51ZYDF7XI34qsTX+fkHiIm5yA== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + "@babel/traverse" "^7.27.1" + +"@babel/plugin-transform-modules-umd@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.27.1.tgz#63f2cf4f6dc15debc12f694e44714863d34cd334" + integrity sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w== + dependencies: + "@babel/helper-module-transforms" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-named-capturing-groups-regex@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.27.1.tgz#f32b8f7818d8fc0cc46ee20a8ef75f071af976e1" + integrity sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-new-target@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.27.1.tgz#259c43939728cad1706ac17351b7e6a7bea1abeb" + integrity sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-object-super@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.27.1.tgz#1c932cd27bf3874c43a5cac4f43ebf970c9871b5" + integrity sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-replace-supers" "^7.27.1" + +"@babel/plugin-transform-optional-chaining@^7.27.1": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.27.1.tgz#874ce3c4f06b7780592e946026eb76a32830454f" + integrity sha512-BQmKPPIuc8EkZgNKsv0X4bPmOoayeu4F1YCwx2/CfmDSXDbp7GnzlUH+/ul5VGfRg1AoFPsrIThlEBj2xb4CAg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-parameters@^7.18.8", "@babel/plugin-transform-parameters@^7.20.7": + version "7.27.7" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.27.7.tgz#1fd2febb7c74e7d21cf3b05f7aebc907940af53a" + integrity sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-property-literals@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.27.1.tgz#07eafd618800591e88073a0af1b940d9a42c6424" + integrity sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-regenerator@^7.18.6": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.28.1.tgz#bde80603442ff4bb4e910bc8b35485295d556ab1" + integrity sha512-P0QiV/taaa3kXpLY+sXla5zec4E+4t4Aqc9ggHlfZ7a2cp8/x/Gv08jfwEtn9gnnYIMvHx6aoOZ8XJL8eU71Dg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-reserved-words@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.27.1.tgz#40fba4878ccbd1c56605a4479a3a891ac0274bb4" + integrity sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-runtime@7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.10.tgz#37d14d1fa810a368fd635d4d1476c0154144a96f" + integrity sha512-q5mMeYAdfEbpBAgzl7tBre/la3LeCxmDO1+wMXRdPWbcoMjR3GiXlCLk7JBZVVye0bqTGNMbt0yYVXX1B1jEWQ== + dependencies: + "@babel/helper-module-imports" "^7.18.6" + "@babel/helper-plugin-utils" "^7.18.9" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" + semver "^6.3.0" + +"@babel/plugin-transform-shorthand-properties@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.27.1.tgz#532abdacdec87bfee1e0ef8e2fcdee543fe32b90" + integrity sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-spread@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.27.1.tgz#1a264d5fc12750918f50e3fe3e24e437178abb08" + integrity sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + "@babel/helper-skip-transparent-expression-wrappers" "^7.27.1" + +"@babel/plugin-transform-sticky-regex@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.27.1.tgz#18984935d9d2296843a491d78a014939f7dcd280" + integrity sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-template-literals@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.27.1.tgz#1a0eb35d8bb3e6efc06c9fd40eb0bcef548328b8" + integrity sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-typeof-symbol@^7.18.9": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.27.1.tgz#70e966bb492e03509cf37eafa6dcc3051f844369" + integrity sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-escapes@^7.18.10": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.27.1.tgz#3e3143f8438aef842de28816ece58780190cf806" + integrity sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg== + dependencies: + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/plugin-transform-unicode-regex@^7.18.6": + version "7.27.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.27.1.tgz#25948f5c395db15f609028e370667ed8bae9af97" + integrity sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw== + dependencies: + "@babel/helper-create-regexp-features-plugin" "^7.27.1" + "@babel/helper-plugin-utils" "^7.27.1" + +"@babel/preset-env@7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.18.10.tgz#83b8dfe70d7eea1aae5a10635ab0a5fe60dfc0f4" + integrity sha512-wVxs1yjFdW3Z/XkNfXKoblxoHgbtUF7/l3PvvP4m02Qz9TZ6uZGxRVYjSQeR87oQmHco9zWitW5J82DJ7sCjvA== + dependencies: + "@babel/compat-data" "^7.18.8" + "@babel/helper-compilation-targets" "^7.18.9" + "@babel/helper-plugin-utils" "^7.18.9" + "@babel/helper-validator-option" "^7.18.6" + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression" "^7.18.6" + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-async-generator-functions" "^7.18.10" + "@babel/plugin-proposal-class-properties" "^7.18.6" + "@babel/plugin-proposal-class-static-block" "^7.18.6" + "@babel/plugin-proposal-dynamic-import" "^7.18.6" + "@babel/plugin-proposal-export-namespace-from" "^7.18.9" + "@babel/plugin-proposal-json-strings" "^7.18.6" + "@babel/plugin-proposal-logical-assignment-operators" "^7.18.9" + "@babel/plugin-proposal-nullish-coalescing-operator" "^7.18.6" + "@babel/plugin-proposal-numeric-separator" "^7.18.6" + "@babel/plugin-proposal-object-rest-spread" "^7.18.9" + "@babel/plugin-proposal-optional-catch-binding" "^7.18.6" + "@babel/plugin-proposal-optional-chaining" "^7.18.9" + "@babel/plugin-proposal-private-methods" "^7.18.6" + "@babel/plugin-proposal-private-property-in-object" "^7.18.6" + "@babel/plugin-proposal-unicode-property-regex" "^7.18.6" + "@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-import-assertions" "^7.18.6" + "@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.18.6" + "@babel/plugin-transform-async-to-generator" "^7.18.6" + "@babel/plugin-transform-block-scoped-functions" "^7.18.6" + "@babel/plugin-transform-block-scoping" "^7.18.9" + "@babel/plugin-transform-classes" "^7.18.9" + "@babel/plugin-transform-computed-properties" "^7.18.9" + "@babel/plugin-transform-destructuring" "^7.18.9" + "@babel/plugin-transform-dotall-regex" "^7.18.6" + "@babel/plugin-transform-duplicate-keys" "^7.18.9" + "@babel/plugin-transform-exponentiation-operator" "^7.18.6" + "@babel/plugin-transform-for-of" "^7.18.8" + "@babel/plugin-transform-function-name" "^7.18.9" + "@babel/plugin-transform-literals" "^7.18.9" + "@babel/plugin-transform-member-expression-literals" "^7.18.6" + "@babel/plugin-transform-modules-amd" "^7.18.6" + "@babel/plugin-transform-modules-commonjs" "^7.18.6" + "@babel/plugin-transform-modules-systemjs" "^7.18.9" + "@babel/plugin-transform-modules-umd" "^7.18.6" + "@babel/plugin-transform-named-capturing-groups-regex" "^7.18.6" + "@babel/plugin-transform-new-target" "^7.18.6" + "@babel/plugin-transform-object-super" "^7.18.6" + "@babel/plugin-transform-parameters" "^7.18.8" + "@babel/plugin-transform-property-literals" "^7.18.6" + "@babel/plugin-transform-regenerator" "^7.18.6" + "@babel/plugin-transform-reserved-words" "^7.18.6" + "@babel/plugin-transform-shorthand-properties" "^7.18.6" + "@babel/plugin-transform-spread" "^7.18.9" + "@babel/plugin-transform-sticky-regex" "^7.18.6" + "@babel/plugin-transform-template-literals" "^7.18.9" + "@babel/plugin-transform-typeof-symbol" "^7.18.9" + "@babel/plugin-transform-unicode-escapes" "^7.18.10" + "@babel/plugin-transform-unicode-regex" "^7.18.6" + "@babel/preset-modules" "^0.1.5" + "@babel/types" "^7.18.10" + babel-plugin-polyfill-corejs2 "^0.3.2" + babel-plugin-polyfill-corejs3 "^0.5.3" + babel-plugin-polyfill-regenerator "^0.4.0" + core-js-compat "^3.22.1" + semver "^6.3.0" + +"@babel/preset-modules@^0.1.5": + version "0.1.6" + resolved "https://registry.yarnpkg.com/@babel/preset-modules/-/preset-modules-0.1.6.tgz#31bcdd8f19538437339d17af00d177d854d9d458" + integrity sha512-ID2yj6K/4lKfhuU3+EX4UvNbIt7eACFbHmNUjzA+ep+B5971CknnA/9DEWKbRokfbbtblxxxXFJJrH47UEAMVg== + 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" + +"@babel/runtime@7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.18.9.tgz#b4fcfce55db3d2e5e080d2490f608a3b9f407f4a" + integrity sha512-lkqXDcvlFT5rvEjiu6+QYO+1GXrEHRo2LOtS7E4GtX5ESIZOgepqsZBVIj6Pv+a6zqsya9VCgiK1KAK4BvJDAw== + dependencies: + regenerator-runtime "^0.13.4" + +"@babel/template@7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + +"@babel/template@^7.18.10", "@babel/template@^7.27.1", "@babel/template@^7.27.2", "@babel/template@^7.3.3": + version "7.27.2" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.27.2.tgz#fa78ceed3c4e7b63ebf6cb39e5852fca45f6809d" + integrity sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/parser" "^7.27.2" + "@babel/types" "^7.27.1" + +"@babel/traverse@^7.18.10", "@babel/traverse@^7.27.1", "@babel/traverse@^7.27.3", "@babel/traverse@^7.28.0", "@babel/traverse@^7.7.2": + version "7.28.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.28.0.tgz#518aa113359b062042379e333db18380b537e34b" + integrity sha512-mGe7UK5wWyh0bKRfupsUchrQGqvDbZDbKJw+kcRGSmdHVYrv+ltd0pnpDTVpiTqnaBru9iEvA8pz8W46v0Amwg== + dependencies: + "@babel/code-frame" "^7.27.1" + "@babel/generator" "^7.28.0" + "@babel/helper-globals" "^7.28.0" + "@babel/parser" "^7.28.0" + "@babel/template" "^7.27.2" + "@babel/types" "^7.28.0" + debug "^4.3.1" + +"@babel/types@^7.0.0", "@babel/types@^7.18.10", "@babel/types@^7.18.6", "@babel/types@^7.20.7", "@babel/types@^7.24.7", "@babel/types@^7.27.1", "@babel/types@^7.27.3", "@babel/types@^7.27.6", "@babel/types@^7.28.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.28.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.28.1.tgz#2aaf3c10b31ba03a77ac84f52b3912a0edef4cf9" + integrity sha512-x0LvFTekgSX+83TI28Y9wYPUfzrnl2aT5+5QLnO6v7mSJYtEEevuDRN0F0uSHRk1G1IWZC43o00Y0xDDrpBGPQ== + dependencies: + "@babel/helper-string-parser" "^7.27.1" + "@babel/helper-validator-identifier" "^7.27.1" + +"@bcoe/v8-coverage@^0.2.3": + version "0.2.3" + resolved "https://registry.yarnpkg.com/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz#75a2e8b51cb758a7553d6804a5932d7aace75c39" + integrity sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw== + +"@colors/colors@1.5.0": + version "1.5.0" + resolved "https://registry.yarnpkg.com/@colors/colors/-/colors-1.5.0.tgz#bb504579c1cae923e6576a4f5da43d25f97bdbd9" + integrity sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ== + +"@cspotcode/source-map-support@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz#00629c35a688e05a88b1cda684fb9d5e73f000a1" + integrity sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw== + dependencies: + "@jridgewell/trace-mapping" "0.3.9" + +"@csstools/postcss-cascade-layers@^1.0.5": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.1.1.tgz#8a997edf97d34071dd2e37ea6022447dd9e795ad" + integrity sha512-+KdYrpKC5TgomQr2DlZF4lDEpHcoxnj5IGddYYfBWJAKfj1JtuHUIqMa+E1pJJ+z3kvDViWMqyqPlG4Ja7amQA== + dependencies: + "@csstools/selector-specificity" "^2.0.2" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-color-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-color-function/-/postcss-color-function-1.1.1.tgz#2bd36ab34f82d0497cfacdc9b18d34b5e6f64b6b" + integrity sha512-Bc0f62WmHdtRDjf5f3e2STwRAl89N2CLb+9iAwzrv4L2hncrbDwnQD9PCq0gtAt7pOI2leIV08HIBUd4jxD8cw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-font-format-keywords@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-font-format-keywords/-/postcss-font-format-keywords-1.0.1.tgz#677b34e9e88ae997a67283311657973150e8b16a" + integrity sha512-ZgrlzuUAjXIOc2JueK0X5sZDjCtgimVp/O5CEqTcs5ShWBa6smhWYbS0x5cVc/+rycTDbjjzoP0KTDnUneZGOg== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-hwb-function@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-hwb-function/-/postcss-hwb-function-1.0.2.tgz#ab54a9fce0ac102c754854769962f2422ae8aa8b" + integrity sha512-YHdEru4o3Rsbjmu6vHy4UKOXZD+Rn2zmkAmLRfPet6+Jz4Ojw8cbWxe1n42VaXQhD3CQUXXTooIy8OkVbUcL+w== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-ic-unit@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-ic-unit/-/postcss-ic-unit-1.0.1.tgz#28237d812a124d1a16a5acc5c3832b040b303e58" + integrity sha512-Ot1rcwRAaRHNKC9tAqoqNZhjdYBzKk1POgWfhN4uCOE47ebGcLRqXjKkApVDpjifL6u2/55ekkpnFcp+s/OZUw== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-is-pseudo-class@^2.0.7": + version "2.0.7" + resolved "https://registry.yarnpkg.com/@csstools/postcss-is-pseudo-class/-/postcss-is-pseudo-class-2.0.7.tgz#846ae6c0d5a1eaa878fce352c544f9c295509cd1" + integrity sha512-7JPeVVZHd+jxYdULl87lvjgvWldYu+Bc62s9vD/ED6/QTGjy0jy0US/f6BG53sVMTBJ1lzKZFpYmofBN9eaRiA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +"@csstools/postcss-nested-calc@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-nested-calc/-/postcss-nested-calc-1.0.0.tgz#d7e9d1d0d3d15cf5ac891b16028af2a1044d0c26" + integrity sha512-JCsQsw1wjYwv1bJmgjKSoZNvf7R6+wuHDAbi5f/7MbFhl2d/+v+TvBTU4BJH3G1X1H87dHl0mh6TfYogbT/dJQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-normalize-display-values@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-normalize-display-values/-/postcss-normalize-display-values-1.0.1.tgz#15da54a36e867b3ac5163ee12c1d7f82d4d612c3" + integrity sha512-jcOanIbv55OFKQ3sYeFD/T0Ti7AMXc9nM1hZWu8m/2722gOTxFg7xYu4RDLJLeZmPUVQlGzo4jhzvTUq3x4ZUw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-oklab-function@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-oklab-function/-/postcss-oklab-function-1.1.1.tgz#88cee0fbc8d6df27079ebd2fa016ee261eecf844" + integrity sha512-nJpJgsdA3dA9y5pgyb/UfEzE7W5Ka7u0CX0/HIMVBNWzWemdcTH3XwANECU6anWv/ao4vVNLTMxhiPNZsTK6iA== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +"@csstools/postcss-progressive-custom-properties@^1.1.0", "@csstools/postcss-progressive-custom-properties@^1.3.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-progressive-custom-properties/-/postcss-progressive-custom-properties-1.3.0.tgz#542292558384361776b45c85226b9a3a34f276fa" + integrity sha512-ASA9W1aIy5ygskZYuWams4BzafD12ULvSypmaLJT2jvQ8G0M3I8PRQhC0h7mG0Z3LI05+agZjqSR9+K9yaQQjA== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-stepped-value-functions@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@csstools/postcss-stepped-value-functions/-/postcss-stepped-value-functions-1.0.1.tgz#f8772c3681cc2befed695e2b0b1d68e22f08c4f4" + integrity sha512-dz0LNoo3ijpTOQqEJLY8nyaapl6umbmDcgj4AD0lgVQ572b2eqA1iGZYTTWhrcrHztWDDRAX2DGYyw2VBjvCvQ== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-text-decoration-shorthand@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/@csstools/postcss-text-decoration-shorthand/-/postcss-text-decoration-shorthand-1.0.0.tgz#ea96cfbc87d921eca914d3ad29340d9bcc4c953f" + integrity sha512-c1XwKJ2eMIWrzQenN0XbcfzckOLLJiczqy+YvfGmzoVXd7pT9FfObiSEfzs84bpE/VqfpEuAZ9tCRbZkZxxbdw== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-trigonometric-functions@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-trigonometric-functions/-/postcss-trigonometric-functions-1.0.2.tgz#94d3e4774c36d35dcdc88ce091336cb770d32756" + integrity sha512-woKaLO///4bb+zZC2s80l+7cm07M7268MsyG3M0ActXXEFi6SuhvriQYcb58iiKGbjwwIU7n45iRLEHypB47Og== + dependencies: + postcss-value-parser "^4.2.0" + +"@csstools/postcss-unset-value@^1.0.2": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@csstools/postcss-unset-value/-/postcss-unset-value-1.0.2.tgz#c99bb70e2cdc7312948d1eb41df2412330b81f77" + integrity sha512-c8J4roPBILnelAsdLr4XOAR/GsTm0GJi4XpcfvoWk3U6KiTCqiFYc63KhRMQQX35jYMp4Ao8Ij9+IZRgMfJp1g== + +"@csstools/selector-specificity@^2.0.0", "@csstools/selector-specificity@^2.0.2": + version "2.2.0" + resolved "https://registry.yarnpkg.com/@csstools/selector-specificity/-/selector-specificity-2.2.0.tgz#2cbcf822bf3764c9658c4d2e568bd0c0cb748016" + integrity sha512-+OJ9konv95ClSTOJCmMZqpd5+YGsB2S+x6w3E1oaM8UuR5j8nTNHYSz8c9BEPGDOCMQYIEEGlVPj/VY64iTbGw== + +"@discoveryjs/json-ext@0.5.7": + version "0.5.7" + resolved "https://registry.yarnpkg.com/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz#1d572bfbbe14b7704e0ba0f39b74815b84870d70" + integrity sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw== + +"@esbuild/aix-ppc64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.8.tgz#a1414903bb38027382f85f03dda6065056757727" + integrity sha512-urAvrUedIqEiFR3FYSLTWQgLu5tb+m0qZw0NBEasUeo6wuqatkMDaRT+1uABiGXEu5vqgPd7FGE1BhsAIy9QVA== + +"@esbuild/android-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm64/-/android-arm64-0.25.8.tgz#c859994089e9767224269884061f89dae6fb51c6" + integrity sha512-OD3p7LYzWpLhZEyATcTSJ67qB5D+20vbtr6vHlHWSQYhKtzUYrETuWThmzFpZtFsBIxRvhO07+UgVA9m0i/O1w== + +"@esbuild/android-arm@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-arm/-/android-arm-0.25.8.tgz#96a8f2ca91c6cd29ea90b1af79d83761c8ba0059" + integrity sha512-RONsAvGCz5oWyePVnLdZY/HHwA++nxYWIX1atInlaW6SEkwq6XkP3+cb825EUcRs5Vss/lGh/2YxAb5xqc07Uw== + +"@esbuild/android-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/android-x64/-/android-x64-0.25.8.tgz#a3a626c4fec4a024a9fa8c7679c39996e92916f0" + integrity sha512-yJAVPklM5+4+9dTeKwHOaA+LQkmrKFX96BM0A/2zQrbS6ENCmxc4OVoBs5dPkCCak2roAD+jKCdnmOqKszPkjA== + +"@esbuild/darwin-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.8.tgz#a5e1252ca2983d566af1c0ea39aded65736fc66d" + integrity sha512-Jw0mxgIaYX6R8ODrdkLLPwBqHTtYHJSmzzd+QeytSugzQ0Vg4c5rDky5VgkoowbZQahCbsv1rT1KW72MPIkevw== + +"@esbuild/darwin-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/darwin-x64/-/darwin-x64-0.25.8.tgz#5271b0df2bb12ce8df886704bfdd1c7cc01385d2" + integrity sha512-Vh2gLxxHnuoQ+GjPNvDSDRpoBCUzY4Pu0kBqMBDlK4fuWbKgGtmDIeEC081xi26PPjn+1tct+Bh8FjyLlw1Zlg== + +"@esbuild/freebsd-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.8.tgz#d0a0e7fdf19733b8bb1566b81df1aa0bb7e46ada" + integrity sha512-YPJ7hDQ9DnNe5vxOm6jaie9QsTwcKedPvizTVlqWG9GBSq+BuyWEDazlGaDTC5NGU4QJd666V0yqCBL2oWKPfA== + +"@esbuild/freebsd-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.8.tgz#2de8b2e0899d08f1cb1ef3128e159616e7e85343" + integrity sha512-MmaEXxQRdXNFsRN/KcIimLnSJrk2r5H8v+WVafRWz5xdSVmWLoITZQXcgehI2ZE6gioE6HirAEToM/RvFBeuhw== + +"@esbuild/linux-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm64/-/linux-arm64-0.25.8.tgz#a4209efadc0c2975716458484a4e90c237c48ae9" + integrity sha512-WIgg00ARWv/uYLU7lsuDK00d/hHSfES5BzdWAdAig1ioV5kaFNrtK8EqGcUBJhYqotlUByUKz5Qo6u8tt7iD/w== + +"@esbuild/linux-arm@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-arm/-/linux-arm-0.25.8.tgz#ccd9e291c24cd8d9142d819d463e2e7200d25b19" + integrity sha512-FuzEP9BixzZohl1kLf76KEVOsxtIBFwCaLupVuk4eFVnOZfU+Wsn+x5Ryam7nILV2pkq2TqQM9EZPsOBuMC+kg== + +"@esbuild/linux-ia32@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ia32/-/linux-ia32-0.25.8.tgz#006ad1536d0c2b28fb3a1cf0b53bcb85aaf92c4d" + integrity sha512-A1D9YzRX1i+1AJZuFFUMP1E9fMaYY+GnSQil9Tlw05utlE86EKTUA7RjwHDkEitmLYiFsRd9HwKBPEftNdBfjg== + +"@esbuild/linux-loong64@0.15.5": + version "0.15.5" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.15.5.tgz#91aef76d332cdc7c8942b600fa2307f3387e6f82" + integrity sha512-UHkDFCfSGTuXq08oQltXxSZmH1TXyWsL+4QhZDWvvLl6mEJQqk3u7/wq1LjhrrAXYIllaTtRSzUXl4Olkf2J8A== + +"@esbuild/linux-loong64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-loong64/-/linux-loong64-0.25.8.tgz#127b3fbfb2c2e08b1397e985932f718f09a8f5c4" + integrity sha512-O7k1J/dwHkY1RMVvglFHl1HzutGEFFZ3kNiDMSOyUrB7WcoHGf96Sh+64nTRT26l3GMbCW01Ekh/ThKM5iI7hQ== + +"@esbuild/linux-mips64el@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.8.tgz#837d1449517791e3fa7d82675a2d06d9f56cb340" + integrity sha512-uv+dqfRazte3BzfMp8PAQXmdGHQt2oC/y2ovwpTteqrMx2lwaksiFZ/bdkXJC19ttTvNXBuWH53zy/aTj1FgGw== + +"@esbuild/linux-ppc64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.8.tgz#aa2e3bd93ab8df084212f1895ca4b03c42d9e0fe" + integrity sha512-GyG0KcMi1GBavP5JgAkkstMGyMholMDybAf8wF5A70CALlDM2p/f7YFE7H92eDeH/VBtFJA5MT4nRPDGg4JuzQ== + +"@esbuild/linux-riscv64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.8.tgz#a340620e31093fef72767dd28ab04214b3442083" + integrity sha512-rAqDYFv3yzMrq7GIcen3XP7TUEG/4LK86LUPMIz6RT8A6pRIDn0sDcvjudVZBiiTcZCY9y2SgYX2lgK3AF+1eg== + +"@esbuild/linux-s390x@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-s390x/-/linux-s390x-0.25.8.tgz#ddfed266c8c13f5efb3105a0cd47f6dcd0e79e71" + integrity sha512-Xutvh6VjlbcHpsIIbwY8GVRbwoviWT19tFhgdA7DlenLGC/mbc3lBoVb7jxj9Z+eyGqvcnSyIltYUrkKzWqSvg== + +"@esbuild/linux-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/linux-x64/-/linux-x64-0.25.8.tgz#9a4f78c75c051e8c060183ebb39a269ba936a2ac" + integrity sha512-ASFQhgY4ElXh3nDcOMTkQero4b1lgubskNlhIfJrsH5OKZXDpUAKBlNS0Kx81jwOBp+HCeZqmoJuihTv57/jvQ== + +"@esbuild/netbsd-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.8.tgz#902c80e1d678047926387230bc037e63e00697d0" + integrity sha512-d1KfruIeohqAi6SA+gENMuObDbEjn22olAR7egqnkCD9DGBG0wsEARotkLgXDu6c4ncgWTZJtN5vcgxzWRMzcw== + +"@esbuild/netbsd-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.8.tgz#2d9eb4692add2681ff05a14ce99de54fbed7079c" + integrity sha512-nVDCkrvx2ua+XQNyfrujIG38+YGyuy2Ru9kKVNyh5jAys6n+l44tTtToqHjino2My8VAY6Lw9H7RI73XFi66Cg== + +"@esbuild/openbsd-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.8.tgz#89c3b998c6de739db38ab7fb71a8a76b3fa84a45" + integrity sha512-j8HgrDuSJFAujkivSMSfPQSAa5Fxbvk4rgNAS5i3K+r8s1X0p1uOO2Hl2xNsGFppOeHOLAVgYwDVlmxhq5h+SQ== + +"@esbuild/openbsd-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.8.tgz#2f01615cf472b0e48c077045cfd96b5c149365cc" + integrity sha512-1h8MUAwa0VhNCDp6Af0HToI2TJFAn1uqT9Al6DJVzdIBAd21m/G0Yfc77KDM3uF3T/YaOgQq3qTJHPbTOInaIQ== + +"@esbuild/openharmony-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.8.tgz#a201f720cd2c3ebf9a6033fcc3feb069a54b509a" + integrity sha512-r2nVa5SIK9tSWd0kJd9HCffnDHKchTGikb//9c7HX+r+wHYCpQrSgxhlY6KWV1nFo1l4KFbsMlHk+L6fekLsUg== + +"@esbuild/sunos-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/sunos-x64/-/sunos-x64-0.25.8.tgz#07046c977985a3334667f19e6ab3a01a80862afb" + integrity sha512-zUlaP2S12YhQ2UzUfcCuMDHQFJyKABkAjvO5YSndMiIkMimPmxA+BYSBikWgsRpvyxuRnow4nS5NPnf9fpv41w== + +"@esbuild/win32-arm64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-arm64/-/win32-arm64-0.25.8.tgz#4a5470caf0d16127c05d4833d4934213c69392d1" + integrity sha512-YEGFFWESlPva8hGL+zvj2z/SaK+pH0SwOM0Nc/d+rVnW7GSTFlLBGzZkuSU9kFIGIo8q9X3ucpZhu8PDN5A2sQ== + +"@esbuild/win32-ia32@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-ia32/-/win32-ia32-0.25.8.tgz#3de3e8470b7b328d99dbc3e9ec1eace207e5bbc4" + integrity sha512-hiGgGC6KZ5LZz58OL/+qVVoZiuZlUYlYHNAmczOm7bs2oE1XriPFi5ZHHrS8ACpV5EjySrnoCKmcbQMN+ojnHg== + +"@esbuild/win32-x64@0.25.8": + version "0.25.8" + resolved "https://registry.yarnpkg.com/@esbuild/win32-x64/-/win32-x64-0.25.8.tgz#610d7ea539d2fcdbe39237b5cc175eb2c4451f9c" + integrity sha512-cn3Yr7+OaaZq1c+2pe+8yxC8E144SReCQjN6/2ynubzYjvyqZjTXfQJpAcQpsdJq3My7XADANiYGHoFC69pLQw== + +"@eslint-community/eslint-utils@^4.2.0": + version "4.7.0" + resolved "https://registry.yarnpkg.com/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz#607084630c6c033992a082de6e6fbc1a8b52175a" + integrity sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw== + dependencies: + eslint-visitor-keys "^3.4.3" + +"@eslint-community/regexpp@^4.6.1": + version "4.12.1" + resolved "https://registry.yarnpkg.com/@eslint-community/regexpp/-/regexpp-4.12.1.tgz#cfc6cffe39df390a3841cde2abccf92eaa7ae0e0" + integrity sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ== + +"@eslint/eslintrc@^2.1.4": + version "2.1.4" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-2.1.4.tgz#388a269f0f25c1b6adc317b5a2c55714894c70ad" + integrity sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ== + dependencies: + ajv "^6.12.4" + debug "^4.3.2" + espree "^9.6.0" + globals "^13.19.0" + ignore "^5.2.0" + import-fresh "^3.2.1" + js-yaml "^4.1.0" + minimatch "^3.1.2" + strip-json-comments "^3.1.1" + +"@eslint/js@8.57.1": + version "8.57.1" + resolved "https://registry.yarnpkg.com/@eslint/js/-/js-8.57.1.tgz#de633db3ec2ef6a3c89e2f19038063e8a122e2c2" + integrity sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q== + +"@fortawesome/fontawesome-common-types@^0.1.7": + version "0.1.7" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.7.tgz#4336c4b06d0b5608ff1215464b66fcf9f4795284" + integrity sha512-ego8jRVSHfq/iq4KRZJKQeUAdi3ZjGNrqw4oPN3fNdvTBnLCSntwVCnc37bsAJP9UB8MhrTfPnZYxkv2vpS4pg== + +"@fortawesome/fontawesome-free-regular@^5.0.8": + version "5.0.13" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-regular/-/fontawesome-free-regular-5.0.13.tgz#eb78c30184e3f456a423a1dcfa0f682f7b50de4a" + integrity sha512-36lz9Idww1L4QaaTcv7GZiOeIP9emJFDUsedvRovI10kmwyd6rN0PKkIjnq0FB4foLhX4Rou8vnbCCmjtqiLug== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.1.7" + +"@fortawesome/fontawesome-free-solid@^5.0.8": + version "5.0.13" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome-free-solid/-/fontawesome-free-solid-5.0.13.tgz#24b61aaf471a9d34a5364b052d64a516285ba894" + integrity sha512-b+krVnqkdDt52Yfev0x0ZZgtxBQsLw00Zfa3uaVWIDzpNZVtrEXuxldUSUaN/ihgGhSNi8VpvDAdNPVgCKOSxw== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.1.7" + +"@fortawesome/fontawesome@^1.1.4": + version "1.1.8" + resolved "https://registry.yarnpkg.com/@fortawesome/fontawesome/-/fontawesome-1.1.8.tgz#75fe66a60f95508160bb16bd781ad7d89b280f5b" + integrity sha512-c0/MtkPVT0fmiFcCyYoPjkG9PkMOvfrZw2+0BaJ+Rh6UEcK1AR/LaRgrHHjUkbAbs9LXxQJhFS8CJ4uSnK2+JA== + dependencies: + "@fortawesome/fontawesome-common-types" "^0.1.7" + +"@gar/promisify@^1.1.3": + version "1.1.3" + resolved "https://registry.yarnpkg.com/@gar/promisify/-/promisify-1.1.3.tgz#555193ab2e3bb3b6adc3d551c9c030d9e860daf6" + integrity sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw== + +"@humanwhocodes/config-array@^0.13.0": + version "0.13.0" + resolved "https://registry.yarnpkg.com/@humanwhocodes/config-array/-/config-array-0.13.0.tgz#fb907624df3256d04b9aa2df50d7aa97ec648748" + integrity sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw== + dependencies: + "@humanwhocodes/object-schema" "^2.0.3" + debug "^4.3.1" + minimatch "^3.0.5" + +"@humanwhocodes/module-importer@^1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz#af5b2691a22b44be847b0ca81641c5fb6ad0172c" + integrity sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA== + +"@humanwhocodes/object-schema@^2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz#4a2868d75d6d6963e423bcf90b7fd1be343409d3" + integrity sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA== + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@jest/console@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-28.1.3.tgz#2030606ec03a18c31803b8a36382762e447655df" + integrity sha512-QPAkP5EwKdK/bxIr6C1I4Vs0rm2nHiANzj/Z5X2JQkrZo6IqvC4ldZ9K95tF0HdidhA8Bo6egxSzUFPYKcEXLw== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" + +"@jest/core@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-28.1.3.tgz#0ebf2bd39840f1233cd5f2d1e6fc8b71bd5a1ac7" + integrity sha512-CIKBrlaKOzA7YG19BEqCw3SLIsEwjZkeJzf5bdooVnW4bH5cktqe3JX+G2YV1aK5vP8N9na1IGWFzYaTp6k6NA== + dependencies: + "@jest/console" "^28.1.3" + "@jest/reporters" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + ci-info "^3.2.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + jest-changed-files "^28.1.3" + jest-config "^28.1.3" + jest-haste-map "^28.1.3" + jest-message-util "^28.1.3" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.3" + jest-resolve-dependencies "^28.1.3" + jest-runner "^28.1.3" + jest-runtime "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" + jest-watcher "^28.1.3" + micromatch "^4.0.4" + pretty-format "^28.1.3" + rimraf "^3.0.0" + slash "^3.0.0" + strip-ansi "^6.0.0" + +"@jest/environment@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-28.1.3.tgz#abed43a6b040a4c24fdcb69eab1f97589b2d663e" + integrity sha512-1bf40cMFTEkKyEf585R9Iz1WayDjHoHqvts0XFYEqyKM3cFWDpeMoqKKTAF9LSYQModPUlh8FKptoM2YcMWAXA== + dependencies: + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + jest-mock "^28.1.3" + +"@jest/expect-utils@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect-utils/-/expect-utils-28.1.3.tgz#58561ce5db7cd253a7edddbc051fb39dda50f525" + integrity sha512-wvbi9LUrHJLn3NlDW6wF2hvIMtd4JUl2QNVrjq+IBSHirgfrR3o9RnVtxzdEGO2n9JyIWwHnLfby5KzqBGg2YA== + dependencies: + jest-get-type "^28.0.2" + +"@jest/expect@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/expect/-/expect-28.1.3.tgz#9ac57e1d4491baca550f6bdbd232487177ad6a72" + integrity sha512-lzc8CpUbSoE4dqT0U+g1qODQjBRHPpCPXissXD4mS9+sWQdmmpeJ9zSH1rS1HEkrsMN0fb7nKrJ9giAR1d3wBw== + dependencies: + expect "^28.1.3" + jest-snapshot "^28.1.3" + +"@jest/fake-timers@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-28.1.3.tgz#230255b3ad0a3d4978f1d06f70685baea91c640e" + integrity sha512-D/wOkL2POHv52h+ok5Oj/1gOG9HSywdoPtFsRCUmlCILXNn5eIWmcnd3DIiWlJnpGvQtmajqBP95Ei0EimxfLw== + dependencies: + "@jest/types" "^28.1.3" + "@sinonjs/fake-timers" "^9.1.2" + "@types/node" "*" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" + jest-util "^28.1.3" + +"@jest/globals@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-28.1.3.tgz#a601d78ddc5fdef542728309894895b4a42dc333" + integrity sha512-XFU4P4phyryCXu1pbcqMO0GSQcYe1IsalYCDzRNyhetyeyxMcIxa11qPNDpVNLeretItNqEmYYQn1UYz/5x1NA== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/types" "^28.1.3" + +"@jest/reporters@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-28.1.3.tgz#9adf6d265edafc5fc4a434cfb31e2df5a67a369a" + integrity sha512-JuAy7wkxQZVNU/V6g9xKzCGC5LVXx9FDcABKsSXp5MiKPEE2144a/vXTEDoyzjUpZKfVwp08Wqg5A4WfTMAzjg== + dependencies: + "@bcoe/v8-coverage" "^0.2.3" + "@jest/console" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + "@jridgewell/trace-mapping" "^0.3.13" + "@types/node" "*" + chalk "^4.0.0" + collect-v8-coverage "^1.0.0" + exit "^0.1.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-instrument "^5.1.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + jest-worker "^28.1.3" + slash "^3.0.0" + string-length "^4.0.1" + strip-ansi "^6.0.0" + terminal-link "^2.0.0" + v8-to-istanbul "^9.0.1" + +"@jest/schemas@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/schemas/-/schemas-28.1.3.tgz#ad8b86a66f11f33619e3d7e1dcddd7f2d40ff905" + integrity sha512-/l/VWsdt/aBXgjshLWOFyFt3IVdYypu5y2Wn2rOO1un6nkqIn8SLXzgIMYXFyYsRWDyF5EthmKJMIdJvk08grg== + dependencies: + "@sinclair/typebox" "^0.24.1" + +"@jest/source-map@^28.1.2": + version "28.1.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-28.1.2.tgz#7fe832b172b497d6663cdff6c13b0a920e139e24" + integrity sha512-cV8Lx3BeStJb8ipPHnqVw/IM2VCMWO3crWZzYodSIkxXnRcXJipCdx1JCK0K5MsJJouZQTH73mzf4vgxRaH9ww== + dependencies: + "@jridgewell/trace-mapping" "^0.3.13" + callsites "^3.0.0" + graceful-fs "^4.2.9" + +"@jest/test-result@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-28.1.3.tgz#5eae945fd9f4b8fcfce74d239e6f725b6bf076c5" + integrity sha512-kZAkxnSE+FqE8YjW8gNuoVkkC9I7S1qmenl8sGcDOLropASP+BkcGKwhXoyqQuGOGeYY0y/ixjrd/iERpEXHNg== + dependencies: + "@jest/console" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + collect-v8-coverage "^1.0.0" + +"@jest/test-sequencer@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-28.1.3.tgz#9d0c283d906ac599c74bde464bc0d7e6a82886c3" + integrity sha512-NIMPEqqa59MWnDi1kvXXpYbqsfQmSJsIbnd85mdVGkiDfQ9WQQTXOLsvISUfonmnBT+w85WEgneCigEEdHDFxw== + dependencies: + "@jest/test-result" "^28.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + slash "^3.0.0" + +"@jest/transform@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-28.1.3.tgz#59d8098e50ab07950e0f2fc0fc7ec462371281b0" + integrity sha512-u5dT5di+oFI6hfcLOHGTAfmUxFRrjK+vnaP0kkVow9Md/M7V/MxqQMOz/VV25UZO8pzeA9PjfTpOu6BDuwSPQA== + dependencies: + "@babel/core" "^7.11.6" + "@jest/types" "^28.1.3" + "@jridgewell/trace-mapping" "^0.3.13" + babel-plugin-istanbul "^6.1.1" + chalk "^4.0.0" + convert-source-map "^1.4.0" + fast-json-stable-stringify "^2.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" + micromatch "^4.0.4" + pirates "^4.0.4" + slash "^3.0.0" + write-file-atomic "^4.0.1" + +"@jest/types@^28.1.3": + version "28.1.3" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-28.1.3.tgz#b05de80996ff12512bc5ceb1d208285a7d11748b" + integrity sha512-RyjiyMUZrKz/c+zlMFO1pm70DcIlST8AeWTkoUdZevew44wcNZQHsEVOiCVtgVnlFFD82FPaXycys58cf2muVQ== + dependencies: + "@jest/schemas" "^28.1.3" + "@types/istanbul-lib-coverage" "^2.0.0" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" + "@types/yargs" "^17.0.8" + chalk "^4.0.0" + +"@jridgewell/gen-mapping@^0.1.0": + version "0.1.1" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz#e5d2e450306a9491e3bd77e323e38d7aff315996" + integrity sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w== + dependencies: + "@jridgewell/set-array" "^1.0.0" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/gen-mapping@^0.3.12", "@jridgewell/gen-mapping@^0.3.2", "@jridgewell/gen-mapping@^0.3.5": + version "0.3.12" + resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.12.tgz#2234ce26c62889f03db3d7fea43c1932ab3e927b" + integrity sha512-OuLGC46TjB5BbN1dH8JULVVZY4WTdkF7tV9Ys6wLL1rubZnCMstOhNHueU5bLCrnRuDhKPDM4g6sw4Bel5Gzqg== + dependencies: + "@jridgewell/sourcemap-codec" "^1.5.0" + "@jridgewell/trace-mapping" "^0.3.24" + +"@jridgewell/resolve-uri@^3.0.3", "@jridgewell/resolve-uri@^3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6" + integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw== + +"@jridgewell/set-array@^1.0.0": + version "1.2.1" + resolved "https://registry.yarnpkg.com/@jridgewell/set-array/-/set-array-1.2.1.tgz#558fb6472ed16a4c850b889530e6b36438c49280" + integrity sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A== + +"@jridgewell/source-map@^0.3.2", "@jridgewell/source-map@^0.3.3": + version "0.3.10" + resolved "https://registry.yarnpkg.com/@jridgewell/source-map/-/source-map-0.3.10.tgz#a35714446a2e84503ff9bfe66f1d1d4846f2075b" + integrity sha512-0pPkgz9dY+bijgistcTTJ5mR+ocqRXLuhXHYdzoMmmoJ2C9S46RCm2GMUbatPEUK9Yjy26IrAy8D/M00lLkv+Q== + dependencies: + "@jridgewell/gen-mapping" "^0.3.5" + "@jridgewell/trace-mapping" "^0.3.25" + +"@jridgewell/sourcemap-codec@^1.4.10", "@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.4.tgz#7358043433b2e5da569aa02cbc4c121da3af27d7" + integrity sha512-VT2+G1VQs/9oz078bLrYbecdZKs912zQlkelYpuf+SXF+QvZDYJlbx/LSx+meSAwdDFnF8FVXW92AVjjkVmgFw== + +"@jridgewell/trace-mapping@0.3.9": + version "0.3.9" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz#6534fd5933a53ba7cbf3a17615e273a0d1273ff9" + integrity sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ== + dependencies: + "@jridgewell/resolve-uri" "^3.0.3" + "@jridgewell/sourcemap-codec" "^1.4.10" + +"@jridgewell/trace-mapping@^0.3.12", "@jridgewell/trace-mapping@^0.3.13", "@jridgewell/trace-mapping@^0.3.24", "@jridgewell/trace-mapping@^0.3.25", "@jridgewell/trace-mapping@^0.3.28", "@jridgewell/trace-mapping@^0.3.9": + version "0.3.29" + resolved "https://registry.yarnpkg.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.29.tgz#a58d31eaadaf92c6695680b2e1d464a9b8fbf7fc" + integrity sha512-uw6guiW/gcAGPDhLmd77/6lW8QLeiV5RUTsAX46Db6oLhGaVj4lhnPwb184s1bkc8kdVg/+h988dro8GRDpmYQ== + dependencies: + "@jridgewell/resolve-uri" "^3.1.0" + "@jridgewell/sourcemap-codec" "^1.4.14" + +"@leichtgewicht/ip-codec@^2.0.1": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz#4fc56c15c580b9adb7dc3c333a134e540b44bfb1" + integrity sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw== + +"@ngtools/webpack@14.2.10": + version "14.2.10" + resolved "https://registry.yarnpkg.com/@ngtools/webpack/-/webpack-14.2.10.tgz#d33ff1147d01bd1f5d936a3d1744c81a28e2ca6a" + integrity sha512-sLHapZLVub6mEz5b19tf1VfIV1w3tYfg7FNPLeni79aldxu1FbP1v2WmiFAnMzrswqyK0bhTtxrl+Z/CLKqyoQ== + +"@nodelib/fs.scandir@2.1.5": + version "2.1.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" + integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g== + dependencies: + "@nodelib/fs.stat" "2.0.5" + run-parallel "^1.1.9" + +"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b" + integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A== + +"@nodelib/fs.walk@^1.2.3", "@nodelib/fs.walk@^1.2.8": + version "1.2.8" + resolved "https://registry.yarnpkg.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a" + integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg== + dependencies: + "@nodelib/fs.scandir" "2.1.5" + fastq "^1.6.0" + +"@npmcli/fs@^2.1.0": + version "2.1.2" + resolved "https://registry.yarnpkg.com/@npmcli/fs/-/fs-2.1.2.tgz#a9e2541a4a2fec2e69c29b35e6060973da79b865" + integrity sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ== + dependencies: + "@gar/promisify" "^1.1.3" + semver "^7.3.5" + +"@npmcli/git@^3.0.0": + version "3.0.2" + resolved "https://registry.yarnpkg.com/@npmcli/git/-/git-3.0.2.tgz#5c5de6b4d70474cf2d09af149ce42e4e1dacb931" + integrity sha512-CAcd08y3DWBJqJDpfuVL0uijlq5oaXaOJEKHKc4wqrjd00gkvTZB+nFuLn+doOOKddaQS9JfqtNoFCO2LCvA3w== + dependencies: + "@npmcli/promise-spawn" "^3.0.0" + lru-cache "^7.4.4" + mkdirp "^1.0.4" + npm-pick-manifest "^7.0.0" + proc-log "^2.0.0" + promise-inflight "^1.0.1" + promise-retry "^2.0.1" + semver "^7.3.5" + which "^2.0.2" + +"@npmcli/installed-package-contents@^1.0.7": + version "1.0.7" + resolved "https://registry.yarnpkg.com/@npmcli/installed-package-contents/-/installed-package-contents-1.0.7.tgz#ab7408c6147911b970a8abe261ce512232a3f4fa" + integrity sha512-9rufe0wnJusCQoLpV9ZPKIVP55itrM5BxOXs10DmdbRfgWtHy1LDyskbwRnBghuB0PrF7pNPOqREVtpz4HqzKw== + dependencies: + npm-bundled "^1.1.1" + npm-normalize-package-bin "^1.0.1" + +"@npmcli/move-file@^2.0.0": + version "2.0.1" + resolved "https://registry.yarnpkg.com/@npmcli/move-file/-/move-file-2.0.1.tgz#26f6bdc379d87f75e55739bab89db525b06100e4" + integrity sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ== + dependencies: + mkdirp "^1.0.4" + rimraf "^3.0.2" + +"@npmcli/node-gyp@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/node-gyp/-/node-gyp-2.0.0.tgz#8c20e53e34e9078d18815c1d2dda6f2420d75e35" + integrity sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A== + +"@npmcli/promise-spawn@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@npmcli/promise-spawn/-/promise-spawn-3.0.0.tgz#53283b5f18f855c6925f23c24e67c911501ef573" + integrity sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g== + dependencies: + infer-owner "^1.0.4" + +"@npmcli/run-script@^4.1.0": + version "4.2.1" + resolved "https://registry.yarnpkg.com/@npmcli/run-script/-/run-script-4.2.1.tgz#c07c5c71bc1c70a5f2a06b0d4da976641609b946" + integrity sha512-7dqywvVudPSrRCW5nTHpHgeWnbBtz8cFkOuKrecm6ih+oO9ciydhWt6OF7HlqupRRmB8Q/gECVdB9LMfToJbRg== + dependencies: + "@npmcli/node-gyp" "^2.0.0" + "@npmcli/promise-spawn" "^3.0.0" + node-gyp "^9.0.0" + read-package-json-fast "^2.0.3" + which "^2.0.2" + +"@rtsao/scc@^1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@rtsao/scc/-/scc-1.1.0.tgz#927dd2fae9bc3361403ac2c7a00c32ddce9ad7e8" + integrity sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g== + +"@schematics/angular@14.2.10": + version "14.2.10" + resolved "https://registry.yarnpkg.com/@schematics/angular/-/angular-14.2.10.tgz#676b045ea647e8908ade169ebb688e40b158ca83" + integrity sha512-YFTc/9QJdx422XcApizEcVLKoyknu8b9zHIlAepZCu7WkV8GPT0hvVEHQ7KBWys5aQ7pPZMT0JpZLeAz0F2xYQ== + dependencies: + "@angular-devkit/core" "14.2.10" + "@angular-devkit/schematics" "14.2.10" + jsonc-parser "3.1.0" + +"@sinclair/typebox@^0.24.1": + version "0.24.51" + resolved "https://registry.yarnpkg.com/@sinclair/typebox/-/typebox-0.24.51.tgz#645f33fe4e02defe26f2f5c0410e1c094eac7f5f" + integrity sha512-1P1OROm/rdubP5aFDSZQILU0vrLCJ4fvHt6EoqHEM+2D/G5MK3bIaymUKLit8Js9gbns5UyJnkP/TZROLw4tUA== + +"@sinonjs/commons@^1.7.0": + version "1.8.6" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.6.tgz#80c516a4dc264c2a69115e7578d62581ff455ed9" + integrity sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^9.1.2": + version "9.1.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz#4eaab737fab77332ab132d396a3c0d364bd0ea8c" + integrity sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@socket.io/component-emitter@~3.1.0": + version "3.1.2" + resolved "https://registry.yarnpkg.com/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz#821f8442f4175d8f0467b9daf26e3a18e2d02af2" + integrity sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA== + +"@stomp/ng2-stompjs@^0.6.3": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@stomp/ng2-stompjs/-/ng2-stompjs-0.6.4.tgz#f3d2d7fda0ff8b9dbc3bc7d13dd6d3ff205482dd" + integrity sha512-iE8LYtlTiiHrOGBVfAAE9o+SE4pR3tSC+rMu/WZUVHCsW6sFLwF4UAViIcRP3RrvzcTv4RAOZ1X4ir5eRau/Pw== + dependencies: + "@stomp/stompjs" "^4.0.0 >=4.0.2" + +"@stomp/stompjs@^4.0.0 >=4.0.2": + version "4.0.8" + resolved "https://registry.yarnpkg.com/@stomp/stompjs/-/stompjs-4.0.8.tgz#a2192235fb41d6bd7a8f91ad744c6cbb471c0caf" + integrity sha512-bR8W43sC9/py6qFJtSRwYXhzNW6PuVCXblAZuXeZkXVeenycRqppWmbuUQLuZE2LRONDyDz8G1qHW0EizT/q1g== + optionalDependencies: + websocket "^1.0.24" + +"@tootallnate/once@2": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@tootallnate/once/-/once-2.0.0.tgz#f544a148d3ab35801c1f633a7441fd87c2e484bf" + integrity sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A== + +"@tsconfig/node10@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node10/-/node10-1.0.11.tgz#6ee46400685f130e278128c7b38b7e031ff5b2f2" + integrity sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw== + +"@tsconfig/node12@^1.0.7": + version "1.0.11" + resolved "https://registry.yarnpkg.com/@tsconfig/node12/-/node12-1.0.11.tgz#ee3def1f27d9ed66dac6e46a295cffb0152e058d" + integrity sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag== + +"@tsconfig/node14@^1.0.0": + version "1.0.3" + resolved "https://registry.yarnpkg.com/@tsconfig/node14/-/node14-1.0.3.tgz#e4386316284f00b98435bf40f72f75a09dabf6c1" + integrity sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow== + +"@tsconfig/node16@^1.0.2": + version "1.0.4" + resolved "https://registry.yarnpkg.com/@tsconfig/node16/-/node16-1.0.4.tgz#0b92dcc0cc1c81f6f306a381f28e31b1a56536e9" + integrity sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA== + +"@types/babel__core@^7.1.14": + version "7.20.5" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.20.5.tgz#3df15f27ba85319caa07ba08d0721889bb39c017" + integrity sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA== + dependencies: + "@babel/parser" "^7.20.7" + "@babel/types" "^7.20.7" + "@types/babel__generator" "*" + "@types/babel__template" "*" + "@types/babel__traverse" "*" + +"@types/babel__generator@*": + version "7.27.0" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.27.0.tgz#b5819294c51179957afaec341442f9341e4108a9" + integrity sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg== + dependencies: + "@babel/types" "^7.0.0" + +"@types/babel__template@*": + version "7.4.4" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.4.tgz#5672513701c1b2199bc6dad636a9d7491586766f" + integrity sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A== + dependencies: + "@babel/parser" "^7.1.0" + "@babel/types" "^7.0.0" + +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": + version "7.20.7" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.20.7.tgz#968cdc2366ec3da159f61166428ee40f370e56c2" + integrity sha512-dkO5fhS7+/oos4ciWxyEyjWe48zmG6wbCheo/G2ZnHx4fs3EU6YC6UM8rk56gAjNJ9P3MTH2jo5jb92/K6wbng== + dependencies: + "@babel/types" "^7.20.7" + +"@types/body-parser@*": + version "1.19.6" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.6.tgz#1859bebb8fd7dac9918a45d54c1971ab8b5af474" + integrity sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g== + dependencies: + "@types/connect" "*" + "@types/node" "*" + +"@types/bonjour@^3.5.9": + version "3.5.13" + resolved "https://registry.yarnpkg.com/@types/bonjour/-/bonjour-3.5.13.tgz#adf90ce1a105e81dd1f9c61fdc5afda1bfb92956" + integrity sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ== + dependencies: + "@types/node" "*" + +"@types/connect-history-api-fallback@^1.3.5": + version "1.5.4" + resolved "https://registry.yarnpkg.com/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz#7de71645a103056b48ac3ce07b3520b819c1d5b3" + integrity sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw== + dependencies: + "@types/express-serve-static-core" "*" + "@types/node" "*" + +"@types/connect@*": + version "3.4.38" + resolved "https://registry.yarnpkg.com/@types/connect/-/connect-3.4.38.tgz#5ba7f3bc4fbbdeaff8dded952e5ff2cc53f8d858" + integrity sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug== + dependencies: + "@types/node" "*" + +"@types/cors@^2.8.12": + version "2.8.19" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.19.tgz#d93ea2673fd8c9f697367f5eeefc2bbfa94f0342" + integrity sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg== + dependencies: + "@types/node" "*" + +"@types/eslint-scope@^3.7.3": + version "3.7.7" + resolved "https://registry.yarnpkg.com/@types/eslint-scope/-/eslint-scope-3.7.7.tgz#3108bd5f18b0cdb277c867b3dd449c9ed7079ac5" + integrity sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg== + dependencies: + "@types/eslint" "*" + "@types/estree" "*" + +"@types/eslint@*": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-9.6.1.tgz#d5795ad732ce81715f27f75da913004a56751584" + integrity sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/eslint@^8.4.2": + version "8.56.12" + resolved "https://registry.yarnpkg.com/@types/eslint/-/eslint-8.56.12.tgz#1657c814ffeba4d2f84c0d4ba0f44ca7ea1ca53a" + integrity sha512-03ruubjWyOHlmljCVoxSuNDdmfZDzsrrz0P2LeJsOXr+ZwFQ+0yQIwNCwt/GYhV7Z31fgtXJTAEs+FYlEL851g== + dependencies: + "@types/estree" "*" + "@types/json-schema" "*" + +"@types/estree@*": + version "1.0.8" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e" + integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w== + +"@types/estree@^0.0.51": + version "0.0.51" + resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.51.tgz#cfd70924a25a3fd32b218e5e420e6897e1ac4f40" + integrity sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ== + +"@types/express-serve-static-core@*", "@types/express-serve-static-core@^5.0.0": + version "5.0.7" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-5.0.7.tgz#2fa94879c9d46b11a5df4c74ac75befd6b283de6" + integrity sha512-R+33OsgWw7rOhD1emjU7dzCDHucJrgJXMA5PYCzJxVil0dsyx5iBEPHqpPfiKNJQb7lZ1vxwoLR4Z87bBUpeGQ== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express-serve-static-core@^4.17.33": + version "4.19.6" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.19.6.tgz#e01324c2a024ff367d92c66f48553ced0ab50267" + integrity sha512-N4LZ2xG7DatVqhCZzOGb1Yi5lMbXSZcmdLDe9EzSndPV2HpWYWzRbaerl2n27irrm94EPpprqa8KpskPT085+A== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + "@types/send" "*" + +"@types/express@*": + version "5.0.3" + resolved "https://registry.yarnpkg.com/@types/express/-/express-5.0.3.tgz#6c4bc6acddc2e2a587142e1d8be0bce20757e956" + integrity sha512-wGA0NX93b19/dZC1J18tKWVIYWyyF2ZjT9vin/NRu0qzzvfVzWjs04iq2rQ3H65vCTQYlRqs3YHfY7zjdV+9Kw== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^5.0.0" + "@types/serve-static" "*" + +"@types/express@^4.17.13": + version "4.17.23" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.23.tgz#35af3193c640bfd4d7fe77191cd0ed411a433bef" + integrity sha512-Crp6WY9aTYP3qPi2wGDo9iUe/rceX01UMhnF1jmwDcKCFM6cx7YhGP/Mpr3y9AASpfHixIG0E6azCcL5OcDHsQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "^4.17.33" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/graceful-fs@^4.1.3": + version "4.1.9" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.9.tgz#2a06bc0f68a20ab37b3e36aa238be6abdf49e8b4" + integrity sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ== + dependencies: + "@types/node" "*" + +"@types/hammerjs@2.0.34": + version "2.0.34" + resolved "https://registry.yarnpkg.com/@types/hammerjs/-/hammerjs-2.0.34.tgz#9cbac4f41cb039436141785e1be50b3ab10a04a9" + integrity sha512-CRzI3EMW8aH9S6jiOG3ZxKFitqt0s6nB3zlsFrdDZ6p8b52nNjFXh8DTLRLDd4eZZw3ObiGR7pmBrWwOSfy9vg== + +"@types/http-errors@*": + version "2.0.5" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-2.0.5.tgz#5b749ab2b16ba113423feb1a64a95dcd30398472" + integrity sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg== + +"@types/http-proxy@^1.17.8": + version "1.17.16" + resolved "https://registry.yarnpkg.com/@types/http-proxy/-/http-proxy-1.17.16.tgz#dee360707b35b3cc85afcde89ffeebff7d7f9240" + integrity sha512-sdWoUajOB1cd0A8cRRQ1cfyWNbmFKLAqBB89Y8x5iYyG/mkJHc0YUH8pdWBy2omi9qtCpiIgGjuwO0dQST2l5w== + dependencies: + "@types/node" "*" + +"@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": + version "2.0.6" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz#7739c232a1fee9b4d3ce8985f314c0c6d33549d7" + integrity sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w== + +"@types/istanbul-lib-report@*": + version "3.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz#53047614ae72e19fc0401d872de3ae2b4ce350bf" + integrity sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA== + dependencies: + "@types/istanbul-lib-coverage" "*" + +"@types/istanbul-reports@^3.0.0": + version "3.0.4" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz#0f03e3d2f670fbdac586e34b433783070cc16f54" + integrity sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ== + dependencies: + "@types/istanbul-lib-report" "*" + +"@types/jasmine@*": + version "5.1.8" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-5.1.8.tgz#b20f78ca416d7a2a8e726f8321e0b2827a78ceaa" + integrity sha512-u7/CnvRdh6AaaIzYjCgUuVbREFgulhX05Qtf6ZtW+aOcjCKKVvKgpkPYJBFTZSHtFBYimzU4zP0V2vrEsq9Wcg== + +"@types/jasmine@2.5.54": + version "2.5.54" + resolved "https://registry.yarnpkg.com/@types/jasmine/-/jasmine-2.5.54.tgz#a6b5f2ae2afb6e0307774e8c7c608e037d491c63" + integrity sha512-B9YofFbUljs19g5gBKUYeLIulsh31U5AK70F41BImQRHEZQGm4GcN922UvnYwkduMqbC/NH+9fruWa/zrqvHIg== + +"@types/jasminewd2@2.0.3": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/jasminewd2/-/jasminewd2-2.0.3.tgz#0d2886b0cbdae4c0eeba55e30792f584bf040a95" + integrity sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg== + dependencies: + "@types/jasmine" "*" + +"@types/jest@28.1.1": + version "28.1.1" + resolved "https://registry.yarnpkg.com/@types/jest/-/jest-28.1.1.tgz#8c9ba63702a11f8c386ee211280e8b68cb093cd1" + integrity sha512-C2p7yqleUKtCkVjlOur9BWVA4HgUQmEj/HWCt5WzZ5mLXrWnyIfl0wGuArc+kBXsy0ZZfLp+7dywB4HtSVYGVA== + dependencies: + jest-matcher-utils "^27.0.0" + pretty-format "^27.0.0" + +"@types/jsdom@^16.2.4": + version "16.2.15" + resolved "https://registry.yarnpkg.com/@types/jsdom/-/jsdom-16.2.15.tgz#6c09990ec43b054e49636cba4d11d54367fc90d6" + integrity sha512-nwF87yjBKuX/roqGYerZZM0Nv1pZDMAT5YhOHYeM/72Fic+VEqJh4nyoqoapzJnW3pUlfxPY5FhgsJtM+dRnQQ== + dependencies: + "@types/node" "*" + "@types/parse5" "^6.0.3" + "@types/tough-cookie" "*" + +"@types/json-schema@*", "@types/json-schema@^7.0.5", "@types/json-schema@^7.0.8", "@types/json-schema@^7.0.9": + version "7.0.15" + resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.15.tgz#596a1747233694d50f6ad8a7869fcb6f56cf5841" + integrity sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA== + +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ== + +"@types/mime@^1": + version "1.3.5" + resolved "https://registry.yarnpkg.com/@types/mime/-/mime-1.3.5.tgz#1ef302e01cf7d2b5a0fa526790c9123bf1d06690" + integrity sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w== + +"@types/node-forge@^1.3.0": + version "1.3.13" + resolved "https://registry.yarnpkg.com/@types/node-forge/-/node-forge-1.3.13.tgz#1797af20f7eccaf5f37b4d1739923bb0519d95b6" + integrity sha512-zePQJSW5QkwSHKRApqWCVKeKoSOt4xvEnLENZPjyvm9Ezdf/EyDeJM7jqLzOwjVICQQzvLZ63T55MKdJB5H6ww== + dependencies: + "@types/node" "*" + +"@types/node@*", "@types/node@>=10.0.0": + version "24.1.0" + resolved "https://registry.yarnpkg.com/@types/node/-/node-24.1.0.tgz#0993f7dc31ab5cc402d112315b463e383d68a49c" + integrity sha512-ut5FthK5moxFKH2T1CUOC6ctR67rQRvvHdFLCD2Ql6KXmMuCrjsSsRI9UsLCm9M18BMwClv4pn327UvB7eeO1w== + dependencies: + undici-types "~7.8.0" + +"@types/node@^12.11.1": + version "12.20.55" + resolved "https://registry.yarnpkg.com/@types/node/-/node-12.20.55.tgz#c329cbd434c42164f846b909bd6f85b5537f6240" + integrity sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ== + +"@types/parse-json@^4.0.0": + version "4.0.2" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.2.tgz#5950e50960793055845e956c427fc2b0d70c5239" + integrity sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw== + +"@types/parse5@^6.0.3": + version "6.0.3" + resolved "https://registry.yarnpkg.com/@types/parse5/-/parse5-6.0.3.tgz#705bb349e789efa06f43f128cef51240753424cb" + integrity sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g== + +"@types/prettier@^2.1.5", "@types/prettier@^2.6.0": + version "2.7.3" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.7.3.tgz#3e51a17e291d01d17d3fc61422015a933af7a08f" + integrity sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA== + +"@types/q@^0.0.32": + version "0.0.32" + resolved "https://registry.yarnpkg.com/@types/q/-/q-0.0.32.tgz#bd284e57c84f1325da702babfc82a5328190c0c5" + integrity sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug== + +"@types/qs@*": + version "6.14.0" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.14.0.tgz#d8b60cecf62f2db0fb68e5e006077b9178b85de5" + integrity sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ== + +"@types/range-parser@*": + version "1.2.7" + resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.7.tgz#50ae4353eaaddc04044279812f52c8c65857dbcb" + integrity sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ== + +"@types/retry@0.12.0": + version "0.12.0" + resolved "https://registry.yarnpkg.com/@types/retry/-/retry-0.12.0.tgz#2b35eccfcee7d38cd72ad99232fbd58bffb3c84d" + integrity sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA== + +"@types/selenium-webdriver@^3.0.0": + version "3.0.26" + resolved "https://registry.yarnpkg.com/@types/selenium-webdriver/-/selenium-webdriver-3.0.26.tgz#fc7d87d580affa2e52685b2e881bc201819a5836" + integrity sha512-dyIGFKXfUFiwkMfNGn1+F6b80ZjR3uSYv1j6xVJSDlft5waZ2cwkHW4e7zNzvq7hiEackcgvBpmnXZrI1GltPg== + +"@types/semver@^7.3.12": + version "7.7.0" + resolved "https://registry.yarnpkg.com/@types/semver/-/semver-7.7.0.tgz#64c441bdae033b378b6eef7d0c3d77c329b9378e" + integrity sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA== + +"@types/send@*": + version "0.17.5" + resolved "https://registry.yarnpkg.com/@types/send/-/send-0.17.5.tgz#d991d4f2b16f2b1ef497131f00a9114290791e74" + integrity sha512-z6F2D3cOStZvuk2SaP6YrwkNO65iTZcwA2ZkSABegdkAh/lf+Aa/YQndZVfmEXT5vgAp6zv06VQ3ejSVjAny4w== + dependencies: + "@types/mime" "^1" + "@types/node" "*" + +"@types/serve-index@^1.9.1": + version "1.9.4" + resolved "https://registry.yarnpkg.com/@types/serve-index/-/serve-index-1.9.4.tgz#e6ae13d5053cb06ed36392110b4f9a49ac4ec898" + integrity sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug== + dependencies: + "@types/express" "*" + +"@types/serve-static@*", "@types/serve-static@^1.13.10": + version "1.15.8" + resolved "https://registry.yarnpkg.com/@types/serve-static/-/serve-static-1.15.8.tgz#8180c3fbe4a70e8f00b9f70b9ba7f08f35987877" + integrity sha512-roei0UY3LhpOJvjbIP6ZZFngyLKl5dskOtDhxY5THRSpO+ZI+nzJ+m5yUMzGrp89YRa7lvknKkMYjqQFGwA7Sg== + dependencies: + "@types/http-errors" "*" + "@types/node" "*" + "@types/send" "*" + +"@types/sockjs@^0.3.33": + version "0.3.36" + resolved "https://registry.yarnpkg.com/@types/sockjs/-/sockjs-0.3.36.tgz#ce322cf07bcc119d4cbf7f88954f3a3bd0f67535" + integrity sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q== + dependencies: + "@types/node" "*" + +"@types/stack-utils@^2.0.0": + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.3.tgz#6209321eb2c1712a7e7466422b8cb1fc0d9dd5d8" + integrity sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw== + +"@types/tough-cookie@*": + version "4.0.5" + resolved "https://registry.yarnpkg.com/@types/tough-cookie/-/tough-cookie-4.0.5.tgz#cb6e2a691b70cb177c6e3ae9c1d2e8b2ea8cd304" + integrity sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA== + +"@types/ws@^8.5.1": + version "8.18.1" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-8.18.1.tgz#48464e4bf2ddfd17db13d845467f6070ffea4aa9" + integrity sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg== + dependencies: + "@types/node" "*" + +"@types/yargs-parser@*": + version "21.0.3" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-21.0.3.tgz#815e30b786d2e8f0dcd85fd5bcf5e1a04d008f15" + integrity sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ== + +"@types/yargs@^17.0.8": + version "17.0.33" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-17.0.33.tgz#8c32303da83eec050a84b3c7ae7b9f922d13e32d" + integrity sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA== + dependencies: + "@types/yargs-parser" "*" + +"@typescript-eslint/eslint-plugin-tslint@^5.46.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin-tslint/-/eslint-plugin-tslint-5.62.0.tgz#220242dcd23711c400d4f5d5d876d5107cea4be0" + integrity sha512-qsYLld1+xed2lVwHbCxkCWdhRcByLNOjpccxK6HHlem724PbMcL1/dmH7jMQaqIpbfPAGkIypyyk3q5nUgtkhA== + dependencies: + "@typescript-eslint/utils" "5.62.0" + +"@typescript-eslint/eslint-plugin@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.43.0.tgz#4a5248eb31b454715ddfbf8cfbf497529a0a78bc" + integrity sha512-wNPzG+eDR6+hhW4yobEmpR36jrqqQv1vxBq5LJO3fBAktjkvekfr4BRl+3Fn1CM/A+s8/EiGUbOMDoYqWdbtXA== + dependencies: + "@typescript-eslint/scope-manager" "5.43.0" + "@typescript-eslint/type-utils" "5.43.0" + "@typescript-eslint/utils" "5.43.0" + debug "^4.3.4" + ignore "^5.2.0" + natural-compare-lite "^1.4.0" + regexpp "^3.2.0" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/parser@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.43.0.tgz#9c86581234b88f2ba406f0b99a274a91c11630fd" + integrity sha512-2iHUK2Lh7PwNUlhFxxLI2haSDNyXvebBO9izhjhMoDC+S3XI9qt2DGFUsiJ89m2k7gGYch2aEpYqV5F/+nwZug== + dependencies: + "@typescript-eslint/scope-manager" "5.43.0" + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/typescript-estree" "5.43.0" + debug "^4.3.4" + +"@typescript-eslint/parser@^5.10.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/parser/-/parser-5.62.0.tgz#1b63d082d849a2fcae8a569248fbe2ee1b8a56c7" + integrity sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA== + dependencies: + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + debug "^4.3.4" + +"@typescript-eslint/scope-manager@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.43.0.tgz#566e46303392014d5d163704724872e1f2dd3c15" + integrity sha512-XNWnGaqAtTJsUiZaoiGIrdJYHsUOd3BZ3Qj5zKp9w6km6HsrjPk/TGZv0qMTWyWj0+1QOqpHQ2gZOLXaGA9Ekw== + dependencies: + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/visitor-keys" "5.43.0" + +"@typescript-eslint/scope-manager@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz#d9457ccc6a0b8d6b37d0eb252a23022478c5460c" + integrity sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + +"@typescript-eslint/type-utils@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/type-utils/-/type-utils-5.43.0.tgz#91110fb827df5161209ecca06f70d19a96030be6" + integrity sha512-K21f+KY2/VvYggLf5Pk4tgBOPs2otTaIHy2zjclo7UZGLyFH86VfUOm5iq+OtDtxq/Zwu2I3ujDBykVW4Xtmtg== + dependencies: + "@typescript-eslint/typescript-estree" "5.43.0" + "@typescript-eslint/utils" "5.43.0" + debug "^4.3.4" + tsutils "^3.21.0" + +"@typescript-eslint/types@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.43.0.tgz#e4ddd7846fcbc074325293515fa98e844d8d2578" + integrity sha512-jpsbcD0x6AUvV7tyOlyvon0aUsQpF8W+7TpJntfCUWU1qaIKu2K34pMwQKSzQH8ORgUrGYY6pVIh1Pi8TNeteg== + +"@typescript-eslint/types@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-5.62.0.tgz#258607e60effa309f067608931c3df6fed41fd2f" + integrity sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ== + +"@typescript-eslint/typescript-estree@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.43.0.tgz#b6883e58ba236a602c334be116bfc00b58b3b9f2" + integrity sha512-BZ1WVe+QQ+igWal2tDbNg1j2HWUkAa+CVqdU79L4HP9izQY6CNhXfkNwd1SS4+sSZAP/EthI1uiCSY/+H0pROg== + dependencies: + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/visitor-keys" "5.43.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/typescript-estree@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz#7d17794b77fabcac615d6a48fb143330d962eb9b" + integrity sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA== + dependencies: + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/visitor-keys" "5.62.0" + debug "^4.3.4" + globby "^11.1.0" + is-glob "^4.0.3" + semver "^7.3.7" + tsutils "^3.21.0" + +"@typescript-eslint/utils@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.43.0.tgz#00fdeea07811dbdf68774a6f6eacfee17fcc669f" + integrity sha512-8nVpA6yX0sCjf7v/NDfeaOlyaIIqL7OaIGOWSPFqUKK59Gnumd3Wa+2l8oAaYO2lk0sO+SbWFWRSvhu8gLGv4A== + dependencies: + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.43.0" + "@typescript-eslint/types" "5.43.0" + "@typescript-eslint/typescript-estree" "5.43.0" + eslint-scope "^5.1.1" + eslint-utils "^3.0.0" + semver "^7.3.7" + +"@typescript-eslint/utils@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/utils/-/utils-5.62.0.tgz#141e809c71636e4a75daa39faed2fb5f4b10df86" + integrity sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@types/json-schema" "^7.0.9" + "@types/semver" "^7.3.12" + "@typescript-eslint/scope-manager" "5.62.0" + "@typescript-eslint/types" "5.62.0" + "@typescript-eslint/typescript-estree" "5.62.0" + eslint-scope "^5.1.1" + semver "^7.3.7" + +"@typescript-eslint/visitor-keys@5.43.0": + version "5.43.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.43.0.tgz#cbbdadfdfea385310a20a962afda728ea106befa" + integrity sha512-icl1jNH/d18OVHLfcwdL3bWUKsBeIiKYTGxMJCoGe7xFht+E4QgzOqoWYrU8XSLJWhVw8nTacbm03v23J/hFTg== + dependencies: + "@typescript-eslint/types" "5.43.0" + eslint-visitor-keys "^3.3.0" + +"@typescript-eslint/visitor-keys@5.62.0": + version "5.62.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz#2174011917ce582875954ffe2f6912d5931e353e" + integrity sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw== + dependencies: + "@typescript-eslint/types" "5.62.0" + eslint-visitor-keys "^3.3.0" + +"@ungap/structured-clone@^1.2.0": + version "1.3.0" + resolved "https://registry.yarnpkg.com/@ungap/structured-clone/-/structured-clone-1.3.0.tgz#d06bbb384ebcf6c505fde1c3d0ed4ddffe0aaff8" + integrity sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g== + +"@webassemblyjs/ast@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.1.tgz#2bfd767eae1a6996f432ff7e8d7fc75679c0b6a7" + integrity sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw== + dependencies: + "@webassemblyjs/helper-numbers" "1.11.1" + "@webassemblyjs/helper-wasm-bytecode" "1.11.1" + +"@webassemblyjs/floating-point-hex-parser@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz#f6c61a705f0fd7a6aecaa4e8198f23d9dc179e4f" + integrity sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ== + +"@webassemblyjs/helper-api-error@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz#1a63192d8788e5c012800ba6a7a46c705288fd16" + integrity sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg== + +"@webassemblyjs/helper-buffer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz#832a900eb444884cde9a7cad467f81500f5e5ab5" + integrity sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA== + +"@webassemblyjs/helper-numbers@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz#64d81da219fbbba1e3bd1bfc74f6e8c4e10a62ae" + integrity sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ== + dependencies: + "@webassemblyjs/floating-point-hex-parser" "1.11.1" + "@webassemblyjs/helper-api-error" "1.11.1" + "@xtuc/long" "4.2.2" + +"@webassemblyjs/helper-wasm-bytecode@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz#f328241e41e7b199d0b20c18e88429c4433295e1" + integrity sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q== + +"@webassemblyjs/helper-wasm-section@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz#21ee065a7b635f319e738f0dd73bfbda281c097a" + integrity sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg== + 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" + +"@webassemblyjs/ieee754@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz#963929e9bbd05709e7e12243a099180812992614" + integrity sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ== + dependencies: + "@xtuc/ieee754" "^1.2.0" + +"@webassemblyjs/leb128@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.1.tgz#ce814b45574e93d76bae1fb2644ab9cdd9527aa5" + integrity sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw== + dependencies: + "@xtuc/long" "4.2.2" + +"@webassemblyjs/utf8@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.1.tgz#d1f8b764369e7c6e6bae350e854dec9a59f0a3ff" + integrity sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ== + +"@webassemblyjs/wasm-edit@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz#ad206ebf4bf95a058ce9880a8c092c5dec8193d6" + integrity sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA== + 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" + +"@webassemblyjs/wasm-gen@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz#86c5ea304849759b7d88c47a32f4f039ae3c8f76" + integrity sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA== + 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" + +"@webassemblyjs/wasm-opt@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz#657b4c2202f4cf3b345f8a4c6461c8c2418985f2" + integrity sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw== + dependencies: + "@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@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz#86ca734534f417e9bd3c67c7a1c75d8be41fb199" + integrity sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA== + 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" + +"@webassemblyjs/wast-printer@1.11.1": + version "1.11.1" + resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz#d0c73beda8eec5426f10ae8ef55cee5e7084c2f0" + integrity sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg== + dependencies: + "@webassemblyjs/ast" "1.11.1" + "@xtuc/long" "4.2.2" + +"@xtuc/ieee754@^1.2.0": + version "1.2.0" + resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" + integrity sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA== + +"@xtuc/long@4.2.2": + version "4.2.2" + resolved "https://registry.yarnpkg.com/@xtuc/long/-/long-4.2.2.tgz#d291c6a4e97989b5c61d9acf396ae4fe133a718d" + integrity sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ== + +"@yarnpkg/lockfile@1.1.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz#e77a97fbd345b76d83245edcd17d393b1b41fb31" + integrity sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ== + +abab@^2.0.5, abab@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.6.tgz#41b80f2c871d19686216b82309231cfd3cb3d291" + integrity sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA== + +abbrev@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +accepts@~1.3.4, accepts@~1.3.8: + version "1.3.8" + resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.8.tgz#0bf0be125b67014adcb0b0921e62db7bffe16b2e" + integrity sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw== + dependencies: + mime-types "~2.1.34" + negotiator "0.6.3" + +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== + dependencies: + acorn "^7.1.1" + acorn-walk "^7.1.1" + +acorn-import-assertions@^1.7.6: + version "1.9.0" + resolved "https://registry.yarnpkg.com/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz#507276249d684797c84e0734ef84860334cfb1ac" + integrity sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA== + +acorn-jsx@^5.3.2: + version "5.3.2" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" + integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== + +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== + +acorn-walk@^8.1.1: + version "8.3.4" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.3.4.tgz#794dd169c3977edf4ba4ea47583587c5866236b7" + integrity sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g== + dependencies: + acorn "^8.11.0" + +acorn@^7.1.1: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +acorn@^8.11.0, acorn@^8.14.0, acorn@^8.4.1, acorn@^8.5.0, acorn@^8.7.1, acorn@^8.9.0: + version "8.15.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816" + integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg== + +adjust-sourcemap-loader@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz#fc4a0fd080f7d10471f30a7320f25560ade28c99" + integrity sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A== + dependencies: + loader-utils "^2.0.0" + regex-parser "^2.2.11" + +adm-zip@^0.5.2: + version "0.5.16" + resolved "https://registry.yarnpkg.com/adm-zip/-/adm-zip-0.5.16.tgz#0b5e4c779f07dedea5805cdccb1147071d94a909" + integrity sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ== + +agent-base@6, agent-base@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-6.0.2.tgz#49fff58577cfee3f37176feab4c22e00f86d7f77" + integrity sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ== + dependencies: + debug "4" + +agent-base@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/agent-base/-/agent-base-4.3.0.tgz#8165f01c436009bccad0b1d122f05ed770efc6ee" + integrity sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg== + dependencies: + es6-promisify "^5.0.0" + +agentkeepalive@^4.2.1: + version "4.6.0" + resolved "https://registry.yarnpkg.com/agentkeepalive/-/agentkeepalive-4.6.0.tgz#35f73e94b3f40bf65f105219c623ad19c136ea6a" + integrity sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ== + dependencies: + humanize-ms "^1.2.1" + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv-formats@2.1.1, ajv-formats@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ajv-formats/-/ajv-formats-2.1.1.tgz#6e669400659eb74973bbf2e33327180a0996b520" + integrity sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA== + dependencies: + ajv "^8.0.0" + +ajv-keywords@^3.5.2: + version "3.5.2" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-3.5.2.tgz#31f29da5ab6e00d1c2d329acf7b5929614d5014d" + integrity sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ== + +ajv-keywords@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/ajv-keywords/-/ajv-keywords-5.1.0.tgz#69d4d385a4733cdbeab44964a1170a88f87f0e16" + integrity sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw== + dependencies: + fast-deep-equal "^3.1.3" + +ajv@8.11.0: + version "8.11.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.11.0.tgz#977e91dd96ca669f54a11e23e378e33b884a565f" + integrity sha512-wGgprdCvMalC0BztXvitD2hC04YffAvtsUn93JbGXYLAtCUO4xd17mCCZQxUOItiBwZvJScWo8NIvQMQ71rdpg== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +ajv@^6.12.3, ajv@^6.12.4, ajv@^6.12.5: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + 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" + +ajv@^8.0.0, ajv@^8.9.0: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.17.1.tgz#37d9a5c776af6bc92d7f4f9510eba4c0a60d11a6" + integrity sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g== + dependencies: + fast-deep-equal "^3.1.3" + fast-uri "^3.0.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + +ansi-colors@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-escapes@^4.2.1: + version "4.3.2" + resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.2.tgz#6b2291d1db7d98b6521d5f1efa42d0f3a9feb65e" + integrity sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ== + dependencies: + type-fest "^0.21.3" + +ansi-html-community@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/ansi-html-community/-/ansi-html-community-0.0.8.tgz#69fbc4d6ccbe383f9736934ae34c3f8290f1bf41" + integrity sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA== + +ansi-regex@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.1.tgz#123d6479e92ad45ad897d4054e3c7ca7db4944e1" + integrity sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw== + +ansi-regex@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304" + integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ== + +ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA== + +ansi-styles@^3.2.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" + integrity sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA== + dependencies: + color-convert "^1.9.0" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-styles@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-5.2.0.tgz#07449690ad45777d1924ac2abb2fc8895dba836b" + integrity sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA== + +anymatch@^3.0.3, anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +app-root-path@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/app-root-path/-/app-root-path-3.1.0.tgz#5971a2fc12ba170369a7a1ef018c71e6e47c2e86" + integrity sha512-biN3PwB2gUtjaYy/isrU3aNWI5w+fAfvHkSvCKeQGxhmYpwKFUxudR3Yya+KqVRHBmEDYh+/lTozYCFbmzX4nA== + +"aproba@^1.0.3 || ^2.0.0": + version "2.1.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-2.1.0.tgz#75500a190313d95c64e871e7e4284c6ac219f0b1" + integrity sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew== + +are-we-there-yet@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz#679df222b278c64f2cdba1175cdc00b0d96164bd" + integrity sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg== + dependencies: + delegates "^1.0.0" + readable-stream "^3.6.0" + +arg@^4.1.0: + version "4.1.3" + resolved "https://registry.yarnpkg.com/arg/-/arg-4.1.3.tgz#269fc7ad5b8e42cb63c896d5666017261c144089" + integrity sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA== + +argparse@^1.0.7: + version "1.0.10" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-1.0.10.tgz#bcd6791ea5ae09725e17e5ad988134cd40b3d911" + integrity sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg== + dependencies: + sprintf-js "~1.0.2" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +aria-query@5.1.3: + version "5.1.3" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-5.1.3.tgz#19db27cd101152773631396f7a95a3b58c22c35e" + integrity sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ== + dependencies: + deep-equal "^2.0.5" + +aria-query@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/aria-query/-/aria-query-3.0.0.tgz#65b3fcc1ca1155a8c9ae64d6eee297f15d5133cc" + integrity sha512-majUxHgLehQTeSA+hClx+DY09OVUqG3GtezWkF1krgLGNdlDu9l9V8DaqNMWbq4Eddc8wsyDA0hpDUtnYxQEXw== + dependencies: + ast-types-flow "0.0.7" + commander "^2.11.0" + +array-buffer-byte-length@^1.0.0, array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b" + integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw== + dependencies: + call-bound "^1.0.3" + is-array-buffer "^3.0.5" + +array-flatten@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-1.1.1.tgz#9a5f699051b1e7073328f2a008968b64ea2955d2" + integrity sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg== + +array-includes@^3.1.9: + version "3.1.9" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.9.tgz#1f0ccaa08e90cdbc3eb433210f903ad0f17c3f3a" + integrity sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.24.0" + es-object-atoms "^1.1.1" + get-intrinsic "^1.3.0" + is-string "^1.1.1" + math-intrinsics "^1.1.0" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng== + dependencies: + array-uniq "^1.0.1" + +array-union@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-2.1.0.tgz#b798420adbeb1de828d84acd8a2e23d3efe85e8d" + integrity sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw== + +array-uniq@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q== + +array.prototype.findlastindex@^1.2.6: + version "1.2.6" + resolved "https://registry.yarnpkg.com/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz#cfa1065c81dcb64e34557c9b81d012f6a421c564" + integrity sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.4" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-shim-unscopables "^1.1.0" + +array.prototype.flat@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz#534aaf9e6e8dd79fb6b9a9917f839ef1ec63afe5" + integrity sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +array.prototype.flatmap@^1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz#712cc792ae70370ae40586264629e33aab5dd38b" + integrity sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-shim-unscopables "^1.0.2" + +arraybuffer.prototype.slice@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c" + integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ== + dependencies: + array-buffer-byte-length "^1.0.1" + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + is-array-buffer "^3.0.4" + +arrify@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" + integrity sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA== + +asn1@~0.2.3: + version "0.2.6" + resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.6.tgz#0d3a7bb6e64e02a90c0303b31f292868ea09a08d" + integrity sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ== + dependencies: + safer-buffer "~2.1.0" + +assert-plus@1.0.0, assert-plus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525" + integrity sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw== + +ast-types-flow@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/ast-types-flow/-/ast-types-flow-0.0.7.tgz#f70b735c6bca1a5c9c22d982c3e39e7feba3bdad" + integrity sha512-eBvWn1lvIApYMhzQMsu9ciLfkBY499mFZlNqG+/9WR7PVlroQw0vG30cOQQbaKz3sCEc44TAOu2ykzqXSNnwag== + +async-function@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b" + integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA== + +asynckit@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" + integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q== + +autoprefixer@^10.4.8: + version "10.4.21" + resolved "https://registry.yarnpkg.com/autoprefixer/-/autoprefixer-10.4.21.tgz#77189468e7a8ad1d9a37fbc08efc9f480cf0a95d" + integrity sha512-O+A6LWV5LDHSJD3LjHYoNi4VLsj/Whi7k6zG12xTYaU4cQ8oxQGckXNX8cRHK5yOZ/ppVHe0ZBXGzSV9jXdVbQ== + dependencies: + browserslist "^4.24.4" + caniuse-lite "^1.0.30001702" + fraction.js "^4.3.7" + normalize-range "^0.1.2" + picocolors "^1.1.1" + postcss-value-parser "^4.2.0" + +available-typed-arrays@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846" + integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ== + dependencies: + possible-typed-array-names "^1.0.0" + +aws-sign2@~0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.7.0.tgz#b46e890934a9591f2d2f6f86d7e6a9f1b3fe76a8" + integrity sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA== + +aws4@^1.8.0: + version "1.13.2" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.13.2.tgz#0aa167216965ac9474ccfa83892cfb6b3e1e52ef" + integrity sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw== + +axobject-query@2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-2.0.2.tgz#ea187abe5b9002b377f925d8bf7d1c561adf38f9" + integrity sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww== + dependencies: + ast-types-flow "0.0.7" + +axobject-query@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/axobject-query/-/axobject-query-3.1.1.tgz#3b6e5c6d4e43ca7ba51c5babf99d22a9c68485e1" + integrity sha512-goKlv8DZrK9hUh975fnHzhNIO4jUnFCfv/dszV5VwUGDFjI6vQ2VwoyjYjYNEbBE8AH87TduWP5uyDR1D+Iteg== + dependencies: + deep-equal "^2.0.5" + +babel-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-28.1.3.tgz#c1187258197c099072156a0a121c11ee1e3917d5" + integrity sha512-epUaPOEWMk3cWX0M/sPvCHHCe9fMFAa/9hXEgKP8nFfNl/jlGkE9ucq9NqkZGXLDduCJYS0UvSlPUwC0S+rH6Q== + dependencies: + "@jest/transform" "^28.1.3" + "@types/babel__core" "^7.1.14" + babel-plugin-istanbul "^6.1.1" + babel-preset-jest "^28.1.3" + chalk "^4.0.0" + graceful-fs "^4.2.9" + slash "^3.0.0" + +babel-loader@8.2.5: + version "8.2.5" + resolved "https://registry.yarnpkg.com/babel-loader/-/babel-loader-8.2.5.tgz#d45f585e654d5a5d90f5350a779d7647c5ed512e" + integrity sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ== + dependencies: + find-cache-dir "^3.3.1" + loader-utils "^2.0.0" + make-dir "^3.1.0" + schema-utils "^2.6.5" + +babel-plugin-istanbul@6.1.1, babel-plugin-istanbul@^6.1.1: + version "6.1.1" + resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz#fa88ec59232fd9b4e36dbbc540a8ec9a9b47da73" + integrity sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA== + dependencies: + "@babel/helper-plugin-utils" "^7.0.0" + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-instrument "^5.0.4" + test-exclude "^6.0.0" + +babel-plugin-jest-hoist@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-28.1.3.tgz#1952c4d0ea50f2d6d794353762278d1d8cca3fbe" + integrity sha512-Ys3tUKAmfnkRUpPdpa98eYrAR0nV+sSFUZZEGuQ2EbFd1y4SOLtD5QDNHAq+bb9a+bbXvYQC4b+ID/THIMcU6Q== + dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.1.14" + "@types/babel__traverse" "^7.0.6" + +babel-plugin-polyfill-corejs2@^0.3.2: + version "0.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz#5d1bd3836d0a19e1b84bbf2d9640ccb6f951c122" + integrity sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q== + dependencies: + "@babel/compat-data" "^7.17.7" + "@babel/helper-define-polyfill-provider" "^0.3.3" + semver "^6.1.1" + +babel-plugin-polyfill-corejs3@^0.5.3: + version "0.5.3" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.3.tgz#d7e09c9a899079d71a8b670c6181af56ec19c5c7" + integrity sha512-zKsXDh0XjnrUEW0mxIHLfjBfnXSMr5Q/goMe/fxpQnLm07mcOZiIZHBNWCMx60HmdvjxfXcalac0tfFg0wqxyw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.2" + core-js-compat "^3.21.0" + +babel-plugin-polyfill-regenerator@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz#390f91c38d90473592ed43351e801a9d3e0fd747" + integrity sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw== + dependencies: + "@babel/helper-define-polyfill-provider" "^0.3.3" + +babel-preset-current-node-syntax@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz#9a929eafece419612ef4ae4f60b1862ebad8ef30" + integrity sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw== + dependencies: + "@babel/plugin-syntax-async-generators" "^7.8.4" + "@babel/plugin-syntax-bigint" "^7.8.3" + "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.14.5" + "@babel/plugin-syntax-import-attributes" "^7.24.7" + "@babel/plugin-syntax-import-meta" "^7.10.4" + "@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-preset-jest@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-28.1.3.tgz#5dfc20b99abed5db994406c2b9ab94c73aaa419d" + integrity sha512-L+fupJvlWAHbQfn74coNX3zf60LXMJsezNvvx8eIh7iOR1luJ1poxYgQk1F8PYtNq/6QODDHCqsSnTFSWC491A== + dependencies: + babel-plugin-jest-hoist "^28.1.3" + babel-preset-current-node-syntax "^1.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base64-js@^1.2.0, base64-js@^1.3.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" + integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== + +base64id@2.0.0, base64id@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/base64id/-/base64id-2.0.0.tgz#2770ac6bc47d312af97a8bf9a634342e0cd25cb6" + integrity sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog== + +batch@0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/batch/-/batch-0.6.1.tgz#dc34314f4e679318093fc760272525f94bf25c16" + integrity sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw== + +bcrypt-pbkdf@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" + integrity sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w== + dependencies: + tweetnacl "^0.14.3" + +big.js@^5.2.2: + version "5.2.2" + resolved "https://registry.yarnpkg.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328" + integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ== + +binary-extensions@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.3.0.tgz#f6e14a97858d327252200242d4ccfe522c445522" + integrity sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw== + +bl@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/bl/-/bl-4.1.0.tgz#451535264182bec2fbbc83a62ab98cf11d9f7b3a" + integrity sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w== + dependencies: + buffer "^5.5.0" + inherits "^2.0.4" + readable-stream "^3.4.0" + +blocking-proxy@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/blocking-proxy/-/blocking-proxy-1.0.1.tgz#81d6fd1fe13a4c0d6957df7f91b75e98dac40cb2" + integrity sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA== + dependencies: + minimist "^1.2.0" + +body-parser@1.20.3, body-parser@^1.19.0: + version "1.20.3" + resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.20.3.tgz#1953431221c6fb5cd63c4b36d53fab0928e548c6" + integrity sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g== + dependencies: + bytes "3.1.2" + content-type "~1.0.5" + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + http-errors "2.0.0" + iconv-lite "0.4.24" + on-finished "2.4.1" + qs "6.13.0" + raw-body "2.5.2" + type-is "~1.6.18" + unpipe "1.0.0" + +bonjour-service@^1.0.11: + version "1.3.0" + resolved "https://registry.yarnpkg.com/bonjour-service/-/bonjour-service-1.3.0.tgz#80d867430b5a0da64e82a8047fc1e355bdb71722" + integrity sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA== + dependencies: + fast-deep-equal "^3.1.3" + multicast-dns "^7.2.5" + +boolbase@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e" + integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww== + +brace-expansion@^1.1.7: + version "1.1.12" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.12.tgz#ab9b454466e5a8cc3a187beaad580412a9c5b843" + integrity sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +brace-expansion@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7" + integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ== + dependencies: + balanced-match "^1.0.0" + +braces@^3.0.2, braces@^3.0.3, braces@~3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789" + integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA== + dependencies: + fill-range "^7.1.1" + +browser-process-hrtime@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" + integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== + +browserslist@^4.14.5, browserslist@^4.21.3, browserslist@^4.24.0, browserslist@^4.24.4, browserslist@^4.25.1, browserslist@^4.9.1: + version "4.25.1" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.25.1.tgz#ba9e8e6f298a1d86f829c9b975e07948967bb111" + integrity sha512-KGj0KoOMXLpSNkkEI6Z6mShmQy0bc1I+T7K9N81k4WWMrfz+6fQ6es80B/YLAeRoKvjYE1YSHHOW1qe9xIVzHw== + dependencies: + caniuse-lite "^1.0.30001726" + electron-to-chromium "^1.5.173" + node-releases "^2.0.19" + update-browserslist-db "^1.1.3" + +browserstack@^1.5.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/browserstack/-/browserstack-1.6.1.tgz#e051f9733ec3b507659f395c7a4765a1b1e358b3" + integrity sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw== + dependencies: + https-proxy-agent "^2.2.1" + +bs-logger@0.x, bs-logger@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/bs-logger/-/bs-logger-0.2.6.tgz#eb7d365307a72cf974cc6cda76b68354ad336bd8" + integrity sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog== + dependencies: + fast-json-stable-stringify "2.x" + +bser@2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" + integrity sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ== + dependencies: + node-int64 "^0.4.0" + +buffer-from@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.2.tgz#2b146a6fd72e80b4f55d255f35ed59a3a9a41bd5" + integrity sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ== + +buffer@^5.5.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +bufferutil@^4.0.1: + version "4.0.9" + resolved "https://registry.yarnpkg.com/bufferutil/-/bufferutil-4.0.9.tgz#6e81739ad48a95cad45a279588e13e95e24a800a" + integrity sha512-WDtdLmJvAuNNPzByAYpRo2rF1Mmradw6gvWsQKf63476DDXmomT9zUiGypLcG4ibIM67vhAj8jJRdbmEws2Aqw== + dependencies: + node-gyp-build "^4.3.0" + +builtins@^5.0.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-5.1.0.tgz#6d85eeb360c4ebc166c3fdef922a15aa7316a5e8" + integrity sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg== + dependencies: + semver "^7.0.0" + +bytes@3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.2.tgz#8b0beeb98605adf1b128fa4386403c009e0221a5" + integrity sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg== + +cacache@16.1.2: + version "16.1.2" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.2.tgz#a519519e9fc9e5e904575dcd3b77660cbf03f749" + integrity sha512-Xx+xPlfCZIUHagysjjOAje9nRo8pRDczQCcXb4J2O0BLtH+xeVue6ba4y1kfJfQMAnM2mkcoMIAyOctlaRGWYA== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^1.1.1" + +cacache@^16.0.0, cacache@^16.1.0: + version "16.1.3" + resolved "https://registry.yarnpkg.com/cacache/-/cacache-16.1.3.tgz#a02b9f34ecfaf9a78c9f4bc16fceb94d5d67a38e" + integrity sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ== + dependencies: + "@npmcli/fs" "^2.1.0" + "@npmcli/move-file" "^2.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + glob "^8.0.1" + infer-owner "^1.0.4" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + mkdirp "^1.0.4" + p-map "^4.0.0" + promise-inflight "^1.0.1" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + unique-filename "^2.0.0" + +call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + +call-bind@^1.0.2, call-bind@^1.0.5, call-bind@^1.0.7, call-bind@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c" + integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww== + dependencies: + call-bind-apply-helpers "^1.0.0" + es-define-property "^1.0.0" + get-intrinsic "^1.2.4" + set-function-length "^1.2.2" + +call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a" + integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg== + dependencies: + call-bind-apply-helpers "^1.0.2" + get-intrinsic "^1.3.0" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camelcase@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.2.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.3.0.tgz#5685b95eb209ac9c0c177467778c9c84df58ba9a" + integrity sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA== + +caniuse-lite@^1.0.30001702, caniuse-lite@^1.0.30001726: + version "1.0.30001727" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001727.tgz#22e9706422ad37aa50556af8c10e40e2d93a8b85" + integrity sha512-pB68nIHmbN6L/4C6MH1DokyR3bYqFwjaSs/sWDHGj4CTcFtQUQMuJftVwWkXq7mNWOybD3KhUv3oWHoGxgP14Q== + +caseless@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc" + integrity sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw== + +chalk@^1.1.1, chalk@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A== + 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" + +chalk@^4.0.0, chalk@^4.1.0, chalk@^4.1.1: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + +chardet@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" + integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== + +"chokidar@>=3.0.0 <4.0.0", chokidar@^3.0.0, chokidar@^3.5.1, chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + 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" + optionalDependencies: + fsevents "~2.3.2" + +chownr@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-2.0.0.tgz#15bfbe53d2eab4cf70f18a8cd68ebe5b3cb1dece" + integrity sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ== + +chrome-trace-event@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz#05bffd7ff928465093314708c93bdfa9bd1f0f5b" + integrity sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ== + +ci-info@^3.2.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-3.9.0.tgz#4279a62028a7b1f262f3473fc9605f5e218c59b4" + integrity sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ== + +cjs-module-lexer@^1.0.0: + version "1.4.3" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-1.4.3.tgz#0f79731eb8cfe1ec72acd4066efac9d61991b00d" + integrity sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q== + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-spinners@^2.5.0: + version "2.9.2" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.9.2.tgz#1773a8f4b9c4d6ac31563df53b3fc1d79462fe41" + integrity sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg== + +cli-width@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-3.0.0.tgz#a2f48437a2caa9a22436e794bf071ec9e61cedf6" + integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw== + +cliui@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +cliui@^8.0.1: + version "8.0.1" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-8.0.1.tgz#0c04b075db02cbfe60dc8e6cf2f5486b1a3608aa" + integrity sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.1" + wrap-ansi "^7.0.0" + +clone-deep@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-4.0.1.tgz#c19fd9bdbbf85942b4fd979c84dcf7d5f07c2387" + integrity sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ== + dependencies: + is-plain-object "^2.0.4" + kind-of "^6.0.2" + shallow-clone "^3.0.0" + +clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg== + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ== + +codelyzer@~6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/codelyzer/-/codelyzer-6.0.2.tgz#25d72eae641e8ff13ffd7d99b27c9c7ad5d7e135" + integrity sha512-v3+E0Ucu2xWJMOJ2fA/q9pDT/hlxHftHGPUay1/1cTgyPV5JTHFdO9hqo837Sx2s9vKBMTt5gO+lhF95PO6J+g== + dependencies: + "@angular/compiler" "9.0.0" + "@angular/core" "9.0.0" + app-root-path "^3.0.0" + aria-query "^3.0.0" + axobject-query "2.0.2" + css-selector-tokenizer "^0.7.1" + cssauron "^1.4.0" + damerau-levenshtein "^1.0.4" + rxjs "^6.5.3" + semver-dsl "^1.0.1" + source-map "^0.5.7" + sprintf-js "^1.1.2" + tslib "^1.10.0" + zone.js "~0.10.3" + +collect-v8-coverage@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz#c0b29bcd33bcd0779a1344c2136051e6afd3d9e9" + integrity sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q== + +color-convert@^1.9.0: + version "1.9.3" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-1.9.3.tgz#bb71850690e1f136567de629d2d5471deda4c1e8" + integrity sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg== + dependencies: + color-name "1.1.3" + +color-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +color-name@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.3.tgz#a7d0558bd89c42f795dd42328f740831ca53bc25" + integrity sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw== + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +colorette@^2.0.10: + version "2.0.20" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-2.0.20.tgz#9eb793e6833067f7235902fcd3b09917a000a95a" + integrity sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w== + +colors@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/colors/-/colors-1.4.0.tgz#c50491479d4c1bdaed2c9ced32cf7c7dc2360f78" + integrity sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA== + +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" + integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== + dependencies: + delayed-stream "~1.0.0" + +commander@^2.11.0, commander@^2.20.0: + version "2.20.3" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" + integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== + +common-tags@^1.4.0: + version "1.8.2" + resolved "https://registry.yarnpkg.com/common-tags/-/common-tags-1.8.2.tgz#94ebb3c076d26032745fd54face7f688ef5ac9c6" + integrity sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA== + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg== + +compressible@~2.0.18: + version "2.0.18" + resolved "https://registry.yarnpkg.com/compressible/-/compressible-2.0.18.tgz#af53cca6b070d4c3c0750fbd77286a6d7cc46fba" + integrity sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg== + dependencies: + mime-db ">= 1.43.0 < 2" + +compression@^1.7.4: + version "1.8.1" + resolved "https://registry.yarnpkg.com/compression/-/compression-1.8.1.tgz#4a45d909ac16509195a9a28bd91094889c180d79" + integrity sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w== + dependencies: + bytes "3.1.2" + compressible "~2.0.18" + debug "2.6.9" + negotiator "~0.6.4" + on-headers "~1.1.0" + safe-buffer "5.2.1" + vary "~1.1.2" + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== + +connect-history-api-fallback@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz#647264845251a0daf25b97ce87834cace0f5f1c8" + integrity sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA== + +connect@^3.7.0: + version "3.7.0" + resolved "https://registry.yarnpkg.com/connect/-/connect-3.7.0.tgz#5d49348910caa5e07a01800b030d0c35f20484f8" + integrity sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ== + dependencies: + debug "2.6.9" + finalhandler "1.1.2" + parseurl "~1.3.3" + utils-merge "1.0.1" + +console-control-strings@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ== + +content-disposition@0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.4.tgz#8b82b4efac82512a02bb0b1dcec9d2c5e8eb5bfe" + integrity sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ== + dependencies: + safe-buffer "5.2.1" + +content-type@~1.0.4, content-type@~1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/content-type/-/content-type-1.0.5.tgz#8b773162656d1d1086784c8f23a54ce6d73d7918" + integrity sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA== + +convert-source-map@^1.4.0, convert-source-map@^1.5.1, convert-source-map@^1.7.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.9.0.tgz#7faae62353fb4213366d0ca98358d22e8368b05f" + integrity sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A== + +convert-source-map@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-2.0.0.tgz#4b560f649fc4e918dd0ab75cf4961e8bc882d82a" + integrity sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg== + +cookie-signature@1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" + integrity sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ== + +cookie@0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.1.tgz#2f73c42142d5d5cf71310a74fc4ae61670e5dbc9" + integrity sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w== + +cookie@~0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.7.2.tgz#556369c472a2ba910f2979891b526b3436237ed7" + integrity sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w== + +copy-anything@^2.0.1: + version "2.0.6" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-2.0.6.tgz#092454ea9584a7b7ad5573062b2a87f5900fc480" + integrity sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw== + dependencies: + is-what "^3.14.1" + +copy-webpack-plugin@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz#96d4dbdb5f73d02dd72d0528d1958721ab72e04a" + integrity sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ== + dependencies: + fast-glob "^3.2.11" + glob-parent "^6.0.1" + globby "^13.1.1" + normalize-path "^3.0.0" + schema-utils "^4.0.0" + serialize-javascript "^6.0.0" + +core-js-compat@^3.21.0, core-js-compat@^3.22.1: + version "3.44.0" + resolved "https://registry.yarnpkg.com/core-js-compat/-/core-js-compat-3.44.0.tgz#62b9165b97e4cbdb8bca16b14818e67428b4a0f8" + integrity sha512-JepmAj2zfl6ogy34qfWtcE7nHKAJnKsQFRn++scjVS2bZFllwptzw61BZcZFYBPpUznLfAvh0LGhxKppk04ClA== + dependencies: + browserslist "^4.25.1" + +core-js@2.5.1: + version "2.5.1" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.5.1.tgz#ae6874dc66937789b80754ff5428df66819ca50b" + integrity sha512-Ekp5N+IEt1CpSSPii9pzpcvf9Wdtoo8ksCO/y5imsopL77FTidtti1WUfnmXmjKL72AV/MgL7DucrbaDiQ3+NA== + +core-util-is@1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ== + +core-util-is@~1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.3.tgz#a6042d3634c2b27e9328f837b965fac83808db85" + integrity sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ== + +cors@~2.8.5: + version "2.8.5" + resolved "https://registry.yarnpkg.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29" + integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g== + dependencies: + object-assign "^4" + vary "^1" + +cosmiconfig@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.1.0.tgz#1443b9afa596b670082ea46cbd8f6a62b84635f6" + integrity sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA== + 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" + +create-require@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/create-require/-/create-require-1.1.1.tgz#c1d7e8f1e5f6cfc9ff65f9cd352d37348756c333" + integrity sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ== + +critters@0.0.16: + version "0.0.16" + resolved "https://registry.yarnpkg.com/critters/-/critters-0.0.16.tgz#ffa2c5561a65b43c53b940036237ce72dcebfe93" + integrity sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A== + dependencies: + chalk "^4.1.0" + css-select "^4.2.0" + parse5 "^6.0.1" + parse5-htmlparser2-tree-adapter "^6.0.1" + postcss "^8.3.7" + pretty-bytes "^5.3.0" + +cross-spawn@^7.0.2, cross-spawn@^7.0.3: + version "7.0.6" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f" + integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +css-blank-pseudo@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/css-blank-pseudo/-/css-blank-pseudo-3.0.3.tgz#36523b01c12a25d812df343a32c322d2a2324561" + integrity sha512-VS90XWtsHGqoM0t4KpH053c4ehxZ2E6HtGI7x68YFV0pTo/QmkV/YFA+NnlvK8guxZVNWGQhVNJGC39Q8XF4OQ== + dependencies: + postcss-selector-parser "^6.0.9" + +css-has-pseudo@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/css-has-pseudo/-/css-has-pseudo-3.0.4.tgz#57f6be91ca242d5c9020ee3e51bbb5b89fc7af73" + integrity sha512-Vse0xpR1K9MNlp2j5w1pgWIJtm1a8qS0JwS9goFYcImjlHEmywP9VUF05aGBXzGpDJF86QXk4L0ypBmwPhGArw== + dependencies: + postcss-selector-parser "^6.0.9" + +css-loader@6.7.1: + version "6.7.1" + resolved "https://registry.yarnpkg.com/css-loader/-/css-loader-6.7.1.tgz#e98106f154f6e1baf3fc3bc455cb9981c1d5fd2e" + integrity sha512-yB5CNFa14MbPJcomwNh3wLThtkZgcNyI2bNMRt8iE5Z8Vwl7f8vQXFAzn2HDOJvtDq2NTZBUGMSUNNyrv3/+cw== + dependencies: + icss-utils "^5.1.0" + postcss "^8.4.7" + 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.2.0" + semver "^7.3.5" + +css-prefers-color-scheme@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/css-prefers-color-scheme/-/css-prefers-color-scheme-6.0.3.tgz#ca8a22e5992c10a5b9d315155e7caee625903349" + integrity sha512-4BqMbZksRkJQx2zAjrokiGMd07RqOa2IxIrrN10lyBe9xhn9DEvjUK79J6jkeiv9D9hQFXKb6g1jwU62jziJZA== + +css-select@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b" + integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ== + dependencies: + boolbase "^1.0.0" + css-what "^6.0.1" + domhandler "^4.3.1" + domutils "^2.8.0" + nth-check "^2.0.1" + +css-selector-tokenizer@^0.7.1: + version "0.7.3" + resolved "https://registry.yarnpkg.com/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz#735f26186e67c749aaf275783405cf0661fae8f1" + integrity sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg== + dependencies: + cssesc "^3.0.0" + fastparse "^1.1.2" + +css-what@^6.0.1: + version "6.2.2" + resolved "https://registry.yarnpkg.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea" + integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA== + +cssauron@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/cssauron/-/cssauron-1.4.0.tgz#a6602dff7e04a8306dc0db9a551e92e8b5662ad8" + integrity sha512-Ht70DcFBh+/ekjVrYS2PlDMdSQEl3OFNmjK6lcn49HptBgilXf/Zwg4uFh9Xn0pX3Q8YOkSjIFOfK2osvdqpBw== + dependencies: + through X.X.X + +cssdb@^7.0.0: + version "7.11.2" + resolved "https://registry.yarnpkg.com/cssdb/-/cssdb-7.11.2.tgz#127a2f5b946ee653361a5af5333ea85a39df5ae5" + integrity sha512-lhQ32TFkc1X4eTefGfYPvgovRSzIMofHkigfH8nWtyRL4XJLsRhJFreRvEgKzept7x1rjBuy3J/MurXLaFxW/A== + +cssesc@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/cssesc/-/cssesc-3.0.0.tgz#37741919903b868565e1c09ea747445cd18983ee" + integrity sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg== + +cssom@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.5.0.tgz#d254fa92cd8b6fbd83811b9fbaed34663cc17c36" + integrity sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw== + +cssom@~0.3.6: + version "0.3.8" + resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" + integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== + +cssstyle@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== + dependencies: + cssom "~0.3.6" + +custom-event@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/custom-event/-/custom-event-1.0.1.tgz#5d02a46850adf1b4a317946a3928fccb5bfd0425" + integrity sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg== + +d@1, d@^1.0.1, d@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/d/-/d-1.0.2.tgz#2aefd554b81981e7dccf72d6842ae725cb17e5de" + integrity sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw== + dependencies: + es5-ext "^0.10.64" + type "^2.7.2" + +damerau-levenshtein@^1.0.4: + version "1.0.8" + resolved "https://registry.yarnpkg.com/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz#b43d286ccbd36bc5b2f7ed41caf2d0aba1f8a6e7" + integrity sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA== + +dashdash@^1.12.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0" + integrity sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g== + dependencies: + assert-plus "^1.0.0" + +data-urls@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-3.0.2.tgz#9cf24a477ae22bcef5cd5f6f0bfbc1d2d3be9143" + integrity sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ== + dependencies: + abab "^2.0.6" + whatwg-mimetype "^3.0.0" + whatwg-url "^11.0.0" + +data-view-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570" + integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-length@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735" + integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-data-view "^1.0.2" + +data-view-byte-offset@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191" + integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-data-view "^1.0.1" + +date-format@^4.0.14: + version "4.0.14" + resolved "https://registry.yarnpkg.com/date-format/-/date-format-4.0.14.tgz#7a8e584434fb169a521c8b7aa481f355810d9400" + integrity sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg== + +debug@2.6.9, debug@^2.2.0: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@4, debug@^4.1.0, debug@^4.1.1, debug@^4.3.1, debug@^4.3.2, debug@^4.3.3, debug@^4.3.4: + version "4.4.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.4.1.tgz#e5a8bc6cbc4c6cd3e64308b0693a3d4fa550189b" + integrity sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ== + dependencies: + ms "^2.1.3" + +debug@4.3.4: + version "4.3.4" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.4.tgz#1319f6579357f2338d3337d2cdd4914bb5dcc865" + integrity sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ== + dependencies: + ms "2.1.2" + +debug@^3.1.0, debug@^3.2.7: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@~4.3.1, debug@~4.3.2, debug@~4.3.4: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA== + +decimal.js@^10.3.1: + version "10.6.0" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.6.0.tgz#e649a43e3ab953a72192ff5983865e509f37ed9a" + integrity sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg== + +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA== + +deep-equal@^2.0.5: + version "2.2.3" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.2.3.tgz#af89dafb23a396c7da3e862abc0be27cf51d56e1" + integrity sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA== + dependencies: + array-buffer-byte-length "^1.0.0" + call-bind "^1.0.5" + es-get-iterator "^1.1.3" + get-intrinsic "^1.2.2" + is-arguments "^1.1.1" + is-array-buffer "^3.0.2" + is-date-object "^1.0.5" + is-regex "^1.1.4" + is-shared-array-buffer "^1.0.2" + isarray "^2.0.5" + object-is "^1.1.5" + object-keys "^1.1.1" + object.assign "^4.1.4" + regexp.prototype.flags "^1.5.1" + side-channel "^1.0.4" + which-boxed-primitive "^1.0.2" + which-collection "^1.0.1" + which-typed-array "^1.1.13" + +deep-is@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" + integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== + +deepmerge@^4.2.2: + version "4.3.1" + resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.3.1.tgz#44b5f2147cd3b00d4b56137685966f26fd25dd4a" + integrity sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A== + +default-gateway@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/default-gateway/-/default-gateway-6.0.3.tgz#819494c888053bdb743edbf343d6cdf7f2943a71" + integrity sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg== + dependencies: + execa "^5.0.0" + +defaults@^1.0.3: + version "1.0.4" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.4.tgz#b0b02062c1e2aa62ff5d9528f0f98baa90978d7a" + integrity sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A== + dependencies: + clone "^1.0.2" + +define-data-property@^1.0.1, define-data-property@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e" + integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A== + dependencies: + es-define-property "^1.0.0" + es-errors "^1.3.0" + gopd "^1.0.1" + +define-lazy-prop@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz#3f7ae421129bcaaac9bc74905c98a0009ec9ee7f" + integrity sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og== + +define-properties@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c" + integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg== + dependencies: + define-data-property "^1.0.1" + has-property-descriptors "^1.0.0" + object-keys "^1.1.1" + +del@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/del/-/del-2.2.2.tgz#c12c981d067846c84bcaf862cff930d907ffd1a8" + integrity sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ== + dependencies: + globby "^5.0.0" + is-path-cwd "^1.0.0" + is-path-in-cwd "^1.0.0" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + rimraf "^2.2.8" + +delayed-stream@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619" + integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ== + +depd@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/depd/-/depd-2.0.0.tgz#b696163cc757560d09cf22cc8fad1571b79e76df" + integrity sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw== + +depd@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" + integrity sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ== + +dependency-graph@^0.11.0: + version "0.11.0" + resolved "https://registry.yarnpkg.com/dependency-graph/-/dependency-graph-0.11.0.tgz#ac0ce7ed68a54da22165a85e97a01d53f5eb2e27" + integrity sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg== + +destroy@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/destroy/-/destroy-1.2.0.tgz#4803735509ad8be552934c67df614f94e66fa015" + integrity sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg== + +detect-newline@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" + integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== + +detect-node@^2.0.4: + version "2.1.0" + resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" + integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== + +di@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/di/-/di-0.0.1.tgz#806649326ceaa7caa3306d75d985ea2748ba913c" + integrity sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA== + +diff-sequences@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-27.5.1.tgz#eaecc0d327fd68c8d9672a1e64ab8dccb2ef5327" + integrity sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ== + +diff-sequences@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-28.1.1.tgz#9989dc731266dc2903457a70e996f3a041913ac6" + integrity sha512-FU0iFaH/E23a+a718l8Qa/19bF9p06kgE0KipMOMadwa3SjnaElKzPaUC0vnibs6/B/9ni97s61mcejk8W1fQw== + +diff@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/diff/-/diff-4.0.2.tgz#60f3aecb89d5fae520c11aa19efc2bb982aade7d" + integrity sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A== + +dir-glob@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" + integrity sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA== + dependencies: + path-type "^4.0.0" + +dlv@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/dlv/-/dlv-1.1.3.tgz#5c198a8a11453596e751494d49874bc7732f2e79" + integrity sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA== + +dns-packet@^5.2.2: + version "5.6.1" + resolved "https://registry.yarnpkg.com/dns-packet/-/dns-packet-5.6.1.tgz#ae888ad425a9d1478a0674256ab866de1012cf2f" + integrity sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw== + dependencies: + "@leichtgewicht/ip-codec" "^2.0.1" + +doctrine@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-2.1.0.tgz#5cd01fc101621b42c4cd7f5d1a66243716d3f39d" + integrity sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw== + dependencies: + esutils "^2.0.2" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +dom-serialize@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/dom-serialize/-/dom-serialize-2.2.1.tgz#562ae8999f44be5ea3076f5419dcd59eb43ac95b" + integrity sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ== + dependencies: + custom-event "~1.0.0" + ent "~2.2.0" + extend "^3.0.0" + void-elements "^2.0.0" + +dom-serializer@^1.0.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30" + integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag== + dependencies: + domelementtype "^2.0.1" + domhandler "^4.2.0" + entities "^2.0.0" + +domelementtype@^2.0.1, domelementtype@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d" + integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw== + +domexception@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-4.0.0.tgz#4ad1be56ccadc86fc76d033353999a8037d03673" + integrity sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw== + dependencies: + webidl-conversions "^7.0.0" + +domhandler@^4.2.0, domhandler@^4.3.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c" + integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ== + dependencies: + domelementtype "^2.2.0" + +domino@^2.1.2: + version "2.1.6" + resolved "https://registry.yarnpkg.com/domino/-/domino-2.1.6.tgz#fe4ace4310526e5e7b9d12c7de01b7f485a57ffe" + integrity sha512-3VdM/SXBZX2omc9JF9nOPCtDaYQ67BGp5CoLpIQlO2KCAPETs8TcDHacF26jXadGbvUteZzRTeos2fhID5+ucQ== + +domutils@^2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135" + integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A== + dependencies: + dom-serializer "^1.0.1" + domelementtype "^2.2.0" + domhandler "^4.2.0" + +dunder-proto@^1.0.0, dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + +ecc-jsbn@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz#3a83a904e54353287874c564b7549386849a98c9" + integrity sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw== + dependencies: + jsbn "~0.1.0" + safer-buffer "^2.1.0" + +ee-first@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/ee-first/-/ee-first-1.1.1.tgz#590c61156b0ae2f4f0255732a158b266bc56b21d" + integrity sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow== + +electron-to-chromium@^1.5.173: + version "1.5.190" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.5.190.tgz#f0ac8be182291a45e8154dbb12f18d2b2318e4ac" + integrity sha512-k4McmnB2091YIsdCgkS0fMVMPOJgxl93ltFzaryXqwip1AaxeDqKCGLxkXODDA5Ab/D+tV5EL5+aTx76RvLRxw== + +emittery@^0.10.2: + version "0.10.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.10.2.tgz#902eec8aedb8c41938c46e9385e9db7e03182933" + integrity sha512-aITqOwnLanpHLNXZJENbOgjUBeHocD+xsSJmNrjovKBW5HbSpW3d1pEls7GFQPUWXiwG9+0P4GtHfEqC/4M0Iw== + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +emojis-list@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78" + integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q== + +encodeurl@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-1.0.2.tgz#ad3ff4c86ec2d029322f5a02c3a9a606c95b3f59" + integrity sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w== + +encodeurl@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/encodeurl/-/encodeurl-2.0.0.tgz#7b8ea898077d7e409d3ac45474ea38eaf0857a58" + integrity sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg== + +encoding@^0.1.13: + version "0.1.13" + resolved "https://registry.yarnpkg.com/encoding/-/encoding-0.1.13.tgz#56574afdd791f54a8e9b2785c0582a2d26210fa9" + integrity sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A== + dependencies: + iconv-lite "^0.6.2" + +engine.io-parser@~5.2.1: + version "5.2.3" + resolved "https://registry.yarnpkg.com/engine.io-parser/-/engine.io-parser-5.2.3.tgz#00dc5b97b1f233a23c9398d0209504cf5f94d92f" + integrity sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q== + +engine.io@~6.6.0: + version "6.6.4" + resolved "https://registry.yarnpkg.com/engine.io/-/engine.io-6.6.4.tgz#0a89a3e6b6c1d4b0c2a2a637495e7c149ec8d8ee" + integrity sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g== + dependencies: + "@types/cors" "^2.8.12" + "@types/node" ">=10.0.0" + accepts "~1.3.4" + base64id "2.0.0" + cookie "~0.7.2" + cors "~2.8.5" + debug "~4.3.1" + engine.io-parser "~5.2.1" + ws "~8.17.1" + +enhanced-resolve@^5.10.0: + version "5.18.2" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.18.2.tgz#7903c5b32ffd4b2143eeb4b92472bd68effd5464" + integrity sha512-6Jw4sE1maoRJo3q8MsSIn2onJFbLTOjY9hlx4DZXmOKvLRd1Ok2kXmAGXaafL2+ijsJZ1ClYbl/pmqr9+k4iUQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + +ent@~2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.2.tgz#22a5ed2fd7ce0cbcff1d1474cf4909a44bdb6e85" + integrity sha512-kKvD1tO6BM+oK9HzCPpUdRb4vKFQY/FPTFmurMvh6LlN68VMrdj77w8yp51/kDbpkFOS9J8w5W6zIzgM2H8/hw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + punycode "^1.4.1" + safe-regex-test "^1.1.0" + +entities@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55" + integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A== + +env-paths@^2.2.0: + version "2.2.1" + resolved "https://registry.yarnpkg.com/env-paths/-/env-paths-2.2.1.tgz#420399d416ce1fbe9bc0a07c62fa68d67fd0f8f2" + integrity sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A== + +err-code@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/err-code/-/err-code-2.0.3.tgz#23c2f3b756ffdfc608d30e27c9a941024807e7f9" + integrity sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA== + +errno@^0.1.1: + version "0.1.8" + resolved "https://registry.yarnpkg.com/errno/-/errno-0.1.8.tgz#8bb3e9c7d463be4976ff888f76b4809ebc2e811f" + integrity sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A== + dependencies: + prr "~1.0.1" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.23.2, es-abstract@^1.23.5, es-abstract@^1.23.9, es-abstract@^1.24.0: + version "1.24.0" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328" + integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg== + dependencies: + array-buffer-byte-length "^1.0.2" + arraybuffer.prototype.slice "^1.0.4" + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + data-view-buffer "^1.0.2" + data-view-byte-length "^1.0.2" + data-view-byte-offset "^1.0.1" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + es-set-tostringtag "^2.1.0" + es-to-primitive "^1.3.0" + function.prototype.name "^1.1.8" + get-intrinsic "^1.3.0" + get-proto "^1.0.1" + get-symbol-description "^1.1.0" + globalthis "^1.0.4" + gopd "^1.2.0" + has-property-descriptors "^1.0.2" + has-proto "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + internal-slot "^1.1.0" + is-array-buffer "^3.0.5" + is-callable "^1.2.7" + is-data-view "^1.0.2" + is-negative-zero "^2.0.3" + is-regex "^1.2.1" + is-set "^2.0.3" + is-shared-array-buffer "^1.0.4" + is-string "^1.1.1" + is-typed-array "^1.1.15" + is-weakref "^1.1.1" + math-intrinsics "^1.1.0" + object-inspect "^1.13.4" + object-keys "^1.1.1" + object.assign "^4.1.7" + own-keys "^1.0.1" + regexp.prototype.flags "^1.5.4" + safe-array-concat "^1.1.3" + safe-push-apply "^1.0.0" + safe-regex-test "^1.1.0" + set-proto "^1.0.0" + stop-iteration-iterator "^1.1.0" + string.prototype.trim "^1.2.10" + string.prototype.trimend "^1.0.9" + string.prototype.trimstart "^1.0.8" + typed-array-buffer "^1.0.3" + typed-array-byte-length "^1.0.3" + typed-array-byte-offset "^1.0.4" + typed-array-length "^1.0.7" + unbox-primitive "^1.1.0" + which-typed-array "^1.1.19" + +es-define-property@^1.0.0, es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-get-iterator@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/es-get-iterator/-/es-get-iterator-1.1.3.tgz#3ef87523c5d464d41084b2c3c9c214f1199763d6" + integrity sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw== + dependencies: + call-bind "^1.0.2" + get-intrinsic "^1.1.3" + has-symbols "^1.0.3" + is-arguments "^1.1.1" + is-map "^2.0.2" + is-set "^2.0.2" + is-string "^1.0.7" + isarray "^2.0.5" + stop-iteration-iterator "^1.0.0" + +es-module-lexer@^0.9.0: + version "0.9.3" + resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.9.3.tgz#6f13db00cc38417137daf74366f535c8eb438f19" + integrity sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +es-shim-unscopables@^1.0.2, es-shim-unscopables@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz#438df35520dac5d105f3943d927549ea3b00f4b5" + integrity sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw== + dependencies: + hasown "^2.0.2" + +es-to-primitive@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18" + integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g== + dependencies: + is-callable "^1.2.7" + is-date-object "^1.0.5" + is-symbol "^1.0.4" + +es5-ext@^0.10.35, es5-ext@^0.10.62, es5-ext@^0.10.63, es5-ext@^0.10.64, es5-ext@~0.10.14: + version "0.10.64" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.64.tgz#12e4ffb48f1ba2ea777f1fcdd1918ef73ea21714" + integrity sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg== + dependencies: + es6-iterator "^2.0.3" + es6-symbol "^3.1.3" + esniff "^2.0.1" + next-tick "^1.1.0" + +es6-iterator@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-iterator/-/es6-iterator-2.0.3.tgz#a7de889141a05a94b0854403b2d0a0fbfa98f3b7" + integrity sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g== + dependencies: + d "1" + es5-ext "^0.10.35" + es6-symbol "^3.1.1" + +es6-promise@^4.0.3: + version "4.2.8" + resolved "https://registry.yarnpkg.com/es6-promise/-/es6-promise-4.2.8.tgz#4eb21594c972bc40553d276e510539143db53e0a" + integrity sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w== + +es6-promisify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/es6-promisify/-/es6-promisify-5.0.0.tgz#5109d62f3e56ea967c4b63505aef08291c8a5203" + integrity sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ== + dependencies: + es6-promise "^4.0.3" + +es6-symbol@^3.1.1, es6-symbol@^3.1.3: + version "3.1.4" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.4.tgz#f4e7d28013770b4208ecbf3e0bf14d3bcb557b8c" + integrity sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg== + dependencies: + d "^1.0.2" + ext "^1.7.0" + +esbuild-android-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-android-64/-/esbuild-android-64-0.15.5.tgz#3c7b2f2a59017dab3f2c0356188a8dd9cbdc91c8" + integrity sha512-dYPPkiGNskvZqmIK29OPxolyY3tp+c47+Fsc2WYSOVjEPWNCHNyqhtFqQadcXMJDQt8eN0NMDukbyQgFcHquXg== + +esbuild-android-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-android-arm64/-/esbuild-android-arm64-0.15.5.tgz#e301db818c5a67b786bf3bb7320e414ac0fcf193" + integrity sha512-YyEkaQl08ze3cBzI/4Cm1S+rVh8HMOpCdq8B78JLbNFHhzi4NixVN93xDrHZLztlocEYqi45rHHCgA8kZFidFg== + +esbuild-darwin-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-darwin-64/-/esbuild-darwin-64-0.15.5.tgz#11726de5d0bf5960b92421ef433e35871c091f8d" + integrity sha512-Cr0iIqnWKx3ZTvDUAzG0H/u9dWjLE4c2gTtRLz4pqOBGjfjqdcZSfAObFzKTInLLSmD0ZV1I/mshhPoYSBMMCQ== + +esbuild-darwin-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.15.5.tgz#ad89dafebb3613fd374f5a245bb0ce4132413997" + integrity sha512-WIfQkocGtFrz7vCu44ypY5YmiFXpsxvz2xqwe688jFfSVCnUsCn2qkEVDo7gT8EpsLOz1J/OmqjExePL1dr1Kg== + +esbuild-freebsd-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-64/-/esbuild-freebsd-64-0.15.5.tgz#6bfb52b4a0d29c965aa833e04126e95173289c8a" + integrity sha512-M5/EfzV2RsMd/wqwR18CELcenZ8+fFxQAAEO7TJKDmP3knhWSbD72ILzrXFMMwshlPAS1ShCZ90jsxkm+8FlaA== + +esbuild-freebsd-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.15.5.tgz#38a3fed8c6398072f9914856c7c3e3444f9ef4dd" + integrity sha512-2JQQ5Qs9J0440F/n/aUBNvY6lTo4XP/4lt1TwDfHuo0DY3w5++anw+jTjfouLzbJmFFiwmX7SmUhMnysocx96w== + +esbuild-linux-32@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-32/-/esbuild-linux-32-0.15.5.tgz#942dc70127f0c0a7ea91111baf2806e61fc81b32" + integrity sha512-gO9vNnIN0FTUGjvTFucIXtBSr1Woymmx/aHQtuU+2OllGU6YFLs99960UD4Dib1kFovVgs59MTXwpFdVoSMZoQ== + +esbuild-linux-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-64/-/esbuild-linux-64-0.15.5.tgz#6d748564492d5daaa7e62420862c31ac3a44aed9" + integrity sha512-ne0GFdNLsm4veXbTnYAWjbx3shpNKZJUd6XpNbKNUZaNllDZfYQt0/zRqOg0sc7O8GQ+PjSMv9IpIEULXVTVmg== + +esbuild-linux-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm64/-/esbuild-linux-arm64-0.15.5.tgz#28cd899beb2d2b0a3870fd44f4526835089a318d" + integrity sha512-7EgFyP2zjO065XTfdCxiXVEk+f83RQ1JsryN1X/VSX2li9rnHAt2swRbpoz5Vlrl6qjHrCmq5b6yxD13z6RheA== + +esbuild-linux-arm@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-arm/-/esbuild-linux-arm-0.15.5.tgz#6441c256225564d8794fdef5b0a69bc1a43051b5" + integrity sha512-wvAoHEN+gJ/22gnvhZnS/+2H14HyAxM07m59RSLn3iXrQsdS518jnEWRBnJz3fR6BJa+VUTo0NxYjGaNt7RA7Q== + +esbuild-linux-mips64le@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.15.5.tgz#d4927f817290eaffc062446896b2a553f0e11981" + integrity sha512-KdnSkHxWrJ6Y40ABu+ipTZeRhFtc8dowGyFsZY5prsmMSr1ZTG9zQawguN4/tunJ0wy3+kD54GaGwdcpwWAvZQ== + +esbuild-linux-ppc64le@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.15.5.tgz#b6d660dc6d5295f89ac51c675f1a2f639e2fb474" + integrity sha512-QdRHGeZ2ykl5P0KRmfGBZIHmqcwIsUKWmmpZTOq573jRWwmpfRmS7xOhmDHBj9pxv+6qRMH8tLr2fe+ZKQvCYw== + +esbuild-linux-riscv64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.15.5.tgz#2801bf18414dc3d3ad58d1ea83084f00d9d84896" + integrity sha512-p+WE6RX+jNILsf+exR29DwgV6B73khEQV0qWUbzxaycxawZ8NE0wA6HnnTxbiw5f4Gx9sJDUBemh9v49lKOORA== + +esbuild-linux-s390x@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-linux-s390x/-/esbuild-linux-s390x-0.15.5.tgz#12a634ae6d3384cacc2b8f4201047deafe596eae" + integrity sha512-J2ngOB4cNzmqLHh6TYMM/ips8aoZIuzxJnDdWutBw5482jGXiOzsPoEF4j2WJ2mGnm7FBCO4StGcwzOgic70JQ== + +esbuild-netbsd-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-netbsd-64/-/esbuild-netbsd-64-0.15.5.tgz#951bbf87600512dfcfbe3b8d9d117d684d26c1b8" + integrity sha512-MmKUYGDizYjFia0Rwt8oOgmiFH7zaYlsoQ3tIOfPxOqLssAsEgG0MUdRDm5lliqjiuoog8LyDu9srQk5YwWF3w== + +esbuild-openbsd-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-openbsd-64/-/esbuild-openbsd-64-0.15.5.tgz#26705b61961d525d79a772232e8b8f211fdbb035" + integrity sha512-2mMFfkLk3oPWfopA9Plj4hyhqHNuGyp5KQyTT9Rc8hFd8wAn5ZrbJg+gNcLMo2yzf8Uiu0RT6G9B15YN9WQyMA== + +esbuild-sunos-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-sunos-64/-/esbuild-sunos-64-0.15.5.tgz#d794da1ae60e6e2f6194c44d7b3c66bf66c7a141" + integrity sha512-2sIzhMUfLNoD+rdmV6AacilCHSxZIoGAU2oT7XmJ0lXcZWnCvCtObvO6D4puxX9YRE97GodciRGDLBaiC6x1SA== + +esbuild-wasm@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.15.5.tgz#d59878b097d2da024a532da94acce6384de9e314" + integrity sha512-lTJOEKekN/4JI/eOEq0wLcx53co2N6vaT/XjBz46D1tvIVoUEyM0o2K6txW6gEotf31szFD/J1PbxmnbkGlK9A== + +esbuild-wasm@>=0.13.8: + version "0.25.8" + resolved "https://registry.yarnpkg.com/esbuild-wasm/-/esbuild-wasm-0.25.8.tgz#98c85576a4e67aef51018db2507863838bb1eba7" + integrity sha512-VFUDMoZdf/NsyCepv5heZqvNLYj9HL+xEKG5tktsFbx+shR8Dt9MchKBEdu/5the2RfTzgxkO6B/nUfzmsWN9Q== + +esbuild-windows-32@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-32/-/esbuild-windows-32-0.15.5.tgz#0670326903f421424be86bc03b7f7b3ff86a9db7" + integrity sha512-e+duNED9UBop7Vnlap6XKedA/53lIi12xv2ebeNS4gFmu7aKyTrok7DPIZyU5w/ftHD4MUDs5PJUkQPP9xJRzg== + +esbuild-windows-64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-64/-/esbuild-windows-64-0.15.5.tgz#64f32acb7341f3f0a4d10e8ff1998c2d1ebfc0a9" + integrity sha512-v+PjvNtSASHOjPDMIai9Yi+aP+Vwox+3WVdg2JB8N9aivJ7lyhp4NVU+J0MV2OkWFPnVO8AE/7xH+72ibUUEnw== + +esbuild-windows-arm64@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild-windows-arm64/-/esbuild-windows-arm64-0.15.5.tgz#4fe7f333ce22a922906b10233c62171673a3854b" + integrity sha512-Yz8w/D8CUPYstvVQujByu6mlf48lKmXkq6bkeSZZxTA626efQOJb26aDGLzmFWx6eg/FwrXgt6SZs9V8Pwy/aA== + +esbuild@0.15.5: + version "0.15.5" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.15.5.tgz#5effd05666f621d4ff2fe2c76a67c198292193ff" + integrity sha512-VSf6S1QVqvxfIsSKb3UKr3VhUCis7wgDbtF4Vd9z84UJr05/Sp2fRKmzC+CSPG/dNAPPJZ0BTBLTT1Fhd6N9Gg== + optionalDependencies: + "@esbuild/linux-loong64" "0.15.5" + esbuild-android-64 "0.15.5" + esbuild-android-arm64 "0.15.5" + esbuild-darwin-64 "0.15.5" + esbuild-darwin-arm64 "0.15.5" + esbuild-freebsd-64 "0.15.5" + esbuild-freebsd-arm64 "0.15.5" + esbuild-linux-32 "0.15.5" + esbuild-linux-64 "0.15.5" + esbuild-linux-arm "0.15.5" + esbuild-linux-arm64 "0.15.5" + esbuild-linux-mips64le "0.15.5" + esbuild-linux-ppc64le "0.15.5" + esbuild-linux-riscv64 "0.15.5" + esbuild-linux-s390x "0.15.5" + esbuild-netbsd-64 "0.15.5" + esbuild-openbsd-64 "0.15.5" + esbuild-sunos-64 "0.15.5" + esbuild-windows-32 "0.15.5" + esbuild-windows-64 "0.15.5" + esbuild-windows-arm64 "0.15.5" + +esbuild@>=0.13.8: + version "0.25.8" + resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.25.8.tgz#482d42198b427c9c2f3a81b63d7663aecb1dda07" + integrity sha512-vVC0USHGtMi8+R4Kz8rt6JhEWLxsv9Rnu/lGYbPR8u47B+DCBksq9JarW0zOO7bs37hyOK1l2/oqtbciutL5+Q== + optionalDependencies: + "@esbuild/aix-ppc64" "0.25.8" + "@esbuild/android-arm" "0.25.8" + "@esbuild/android-arm64" "0.25.8" + "@esbuild/android-x64" "0.25.8" + "@esbuild/darwin-arm64" "0.25.8" + "@esbuild/darwin-x64" "0.25.8" + "@esbuild/freebsd-arm64" "0.25.8" + "@esbuild/freebsd-x64" "0.25.8" + "@esbuild/linux-arm" "0.25.8" + "@esbuild/linux-arm64" "0.25.8" + "@esbuild/linux-ia32" "0.25.8" + "@esbuild/linux-loong64" "0.25.8" + "@esbuild/linux-mips64el" "0.25.8" + "@esbuild/linux-ppc64" "0.25.8" + "@esbuild/linux-riscv64" "0.25.8" + "@esbuild/linux-s390x" "0.25.8" + "@esbuild/linux-x64" "0.25.8" + "@esbuild/netbsd-arm64" "0.25.8" + "@esbuild/netbsd-x64" "0.25.8" + "@esbuild/openbsd-arm64" "0.25.8" + "@esbuild/openbsd-x64" "0.25.8" + "@esbuild/openharmony-arm64" "0.25.8" + "@esbuild/sunos-x64" "0.25.8" + "@esbuild/win32-arm64" "0.25.8" + "@esbuild/win32-ia32" "0.25.8" + "@esbuild/win32-x64" "0.25.8" + +escalade@^3.1.1, escalade@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.2.0.tgz#011a3f69856ba189dffa7dc8fcce99d2a87903e5" + integrity sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA== + +escape-html@~1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988" + integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow== + +escape-string-regexp@^1.0.2, escape-string-regexp@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" + integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg== + +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escape-string-regexp@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +escodegen@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-2.1.0.tgz#ba93bbb7a43986d29d6041f99f5262da773e2e17" + integrity sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w== + dependencies: + esprima "^4.0.1" + estraverse "^5.2.0" + esutils "^2.0.2" + optionalDependencies: + source-map "~0.6.1" + +eslint-config-prettier@^8.5.0: + version "8.10.2" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-8.10.2.tgz#0642e53625ebc62c31c24726b0f050df6bd97a2e" + integrity sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A== + +eslint-import-resolver-node@^0.3.9: + version "0.3.9" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz#d4eaac52b8a2e7c3cd1903eb00f7e053356118ac" + integrity sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g== + dependencies: + debug "^3.2.7" + is-core-module "^2.13.0" + resolve "^1.22.4" + +eslint-module-utils@^2.12.1: + version "2.12.1" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz#f76d3220bfb83c057651359295ab5854eaad75ff" + integrity sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw== + dependencies: + debug "^3.2.7" + +eslint-plugin-import@^2.26.0: + version "2.32.0" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz#602b55faa6e4caeaa5e970c198b5c00a37708980" + integrity sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA== + dependencies: + "@rtsao/scc" "^1.1.0" + array-includes "^3.1.9" + array.prototype.findlastindex "^1.2.6" + array.prototype.flat "^1.3.3" + array.prototype.flatmap "^1.3.3" + debug "^3.2.7" + doctrine "^2.1.0" + eslint-import-resolver-node "^0.3.9" + eslint-module-utils "^2.12.1" + hasown "^2.0.2" + is-core-module "^2.16.1" + is-glob "^4.0.3" + minimatch "^3.1.2" + object.fromentries "^2.0.8" + object.groupby "^1.0.3" + object.values "^1.2.1" + semver "^6.3.1" + string.prototype.trimend "^1.0.9" + tsconfig-paths "^3.15.0" + +eslint-plugin-prettier@^4.2.1: + version "4.2.5" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.5.tgz#91ca3f2f01a84f1272cce04e9717550494c0fe06" + integrity sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-scope@5.1.1, eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-scope@^7.0.0, eslint-scope@^7.2.2: + version "7.2.2" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-7.2.2.tgz#deb4f92563390f32006894af62a22dba1c46423f" + integrity sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg== + dependencies: + esrecurse "^4.3.0" + estraverse "^5.2.0" + +eslint-utils@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-3.0.0.tgz#8aebaface7345bb33559db0a1f13a1d2d48c3672" + integrity sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA== + dependencies: + eslint-visitor-keys "^2.0.0" + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint-visitor-keys@^3.1.0, eslint-visitor-keys@^3.3.0, eslint-visitor-keys@^3.4.1, eslint-visitor-keys@^3.4.3: + version "3.4.3" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz#0cd72fe8550e3c2eae156a96a4dddcd1c8ac5800" + integrity sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag== + +eslint@^8.28.0, eslint@^8.7.0: + version "8.57.1" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-8.57.1.tgz#7df109654aba7e3bbe5c8eae533c5e461d3c6ca9" + integrity sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA== + dependencies: + "@eslint-community/eslint-utils" "^4.2.0" + "@eslint-community/regexpp" "^4.6.1" + "@eslint/eslintrc" "^2.1.4" + "@eslint/js" "8.57.1" + "@humanwhocodes/config-array" "^0.13.0" + "@humanwhocodes/module-importer" "^1.0.1" + "@nodelib/fs.walk" "^1.2.8" + "@ungap/structured-clone" "^1.2.0" + ajv "^6.12.4" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.3.2" + doctrine "^3.0.0" + escape-string-regexp "^4.0.0" + eslint-scope "^7.2.2" + eslint-visitor-keys "^3.4.3" + espree "^9.6.1" + esquery "^1.4.2" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + find-up "^5.0.0" + glob-parent "^6.0.2" + globals "^13.19.0" + graphemer "^1.4.0" + ignore "^5.2.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + is-path-inside "^3.0.3" + js-yaml "^4.1.0" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.1.2" + natural-compare "^1.4.0" + optionator "^0.9.3" + strip-ansi "^6.0.1" + text-table "^0.2.0" + +esniff@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/esniff/-/esniff-2.0.1.tgz#a4d4b43a5c71c7ec51c51098c1d8a29081f9b308" + integrity sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg== + dependencies: + d "^1.0.1" + es5-ext "^0.10.62" + event-emitter "^0.3.5" + type "^2.7.2" + +espree@^9.0.0, espree@^9.6.0, espree@^9.6.1: + version "9.6.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-9.6.1.tgz#a2a17b8e434690a5432f2f8018ce71d331a48c6f" + integrity sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ== + dependencies: + acorn "^8.9.0" + acorn-jsx "^5.3.2" + eslint-visitor-keys "^3.4.1" + +esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + +esquery@^1.4.0, esquery@^1.4.2: + version "1.6.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.6.0.tgz#91419234f804d852a82dceec3e16cdc22cf9dae7" + integrity sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.3.0.tgz#2eea5290702f26ab8fe5370370ff86c965d21123" + integrity sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +etag@~1.8.1: + version "1.8.1" + resolved "https://registry.yarnpkg.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887" + integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg== + +event-emitter@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/event-emitter/-/event-emitter-0.3.5.tgz#df8c69eef1647923c7157b9ce83840610b02cc39" + integrity sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA== + dependencies: + d "1" + es5-ext "~0.10.14" + +eventemitter-asyncresource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz#734ff2e44bf448e627f7748f905d6bdd57bdb65b" + integrity sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ== + +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + +events@^3.2.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/events/-/events-3.3.0.tgz#31a95ad0a924e2d2c419a813aeb2c4e878ea7400" + integrity sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q== + +eventsource@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/eventsource/-/eventsource-2.0.2.tgz#76dfcc02930fb2ff339520b6d290da573a9e8508" + integrity sha512-IzUmBGPR3+oUG9dUeXynyNmf91/3zUSJg1lCktzKw47OXuhco54U3r9B7O4XX+Rb1Itm9OZ2b0RkTs10bICOxA== + +execa@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/execa/-/execa-5.1.1.tgz#f80ad9cbf4298f7bd1d4c9555c21e93741c411dd" + integrity sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg== + 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" + +exit@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/exit/-/exit-0.1.2.tgz#0632638f8d877cc82107d30a0fff1a17cba1cd0c" + integrity sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ== + +expect@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/expect/-/expect-28.1.3.tgz#90a7c1a124f1824133dd4533cce2d2bdcb6603ec" + integrity sha512-eEh0xn8HlsuOBxFgIss+2mX85VAS4Qy3OSkjV7rlBWljtA4oWH37glVGyOZSZvErDT/yBywZdPGwCXuTvSG85g== + dependencies: + "@jest/expect-utils" "^28.1.3" + jest-get-type "^28.0.2" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + +exponential-backoff@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/exponential-backoff/-/exponential-backoff-3.1.2.tgz#a8f26adb96bf78e8cd8ad1037928d5e5c0679d91" + integrity sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA== + +express@^4.17.3: + version "4.21.2" + resolved "https://registry.yarnpkg.com/express/-/express-4.21.2.tgz#cf250e48362174ead6cea4a566abef0162c1ec32" + integrity sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA== + dependencies: + accepts "~1.3.8" + array-flatten "1.1.1" + body-parser "1.20.3" + content-disposition "0.5.4" + content-type "~1.0.4" + cookie "0.7.1" + cookie-signature "1.0.6" + debug "2.6.9" + depd "2.0.0" + encodeurl "~2.0.0" + escape-html "~1.0.3" + etag "~1.8.1" + finalhandler "1.3.1" + fresh "0.5.2" + http-errors "2.0.0" + merge-descriptors "1.0.3" + methods "~1.1.2" + on-finished "2.4.1" + parseurl "~1.3.3" + path-to-regexp "0.1.12" + proxy-addr "~2.0.7" + qs "6.13.0" + range-parser "~1.2.1" + safe-buffer "5.2.1" + send "0.19.0" + serve-static "1.16.2" + setprototypeof "1.2.0" + statuses "2.0.1" + type-is "~1.6.18" + utils-merge "1.0.1" + vary "~1.1.2" + +ext@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.7.0.tgz#0ea4383c0103d60e70be99e9a7f11027a33c4f5f" + integrity sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw== + dependencies: + type "^2.7.2" + +extend@^3.0.0, extend@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +external-editor@^3.0.3: + version "3.1.0" + resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" + integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== + dependencies: + chardet "^0.7.0" + iconv-lite "^0.4.24" + tmp "^0.0.33" + +extsprintf@1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" + integrity sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g== + +extsprintf@^1.2.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.1.tgz#8d172c064867f235c0c84a596806d279bf4bcc07" + integrity sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA== + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-diff@^1.1.2: + version "1.3.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.3.0.tgz#ece407fa550a64d638536cd727e129c61616e0f0" + integrity sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw== + +fast-glob@^3.2.11, fast-glob@^3.2.9, fast-glob@^3.3.0: + version "3.3.3" + resolved "https://registry.yarnpkg.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818" + integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg== + 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.8" + +fast-json-stable-stringify@2.x, fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw== + +fast-uri@^3.0.1: + version "3.0.6" + resolved "https://registry.yarnpkg.com/fast-uri/-/fast-uri-3.0.6.tgz#88f130b77cfaea2378d56bf970dea21257a68748" + integrity sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw== + +fastparse@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/fastparse/-/fastparse-1.1.2.tgz#91728c5a5942eced8531283c79441ee4122c35a9" + integrity sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ== + +fastq@^1.6.0: + version "1.19.1" + resolved "https://registry.yarnpkg.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5" + integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ== + dependencies: + reusify "^1.0.4" + +faye-websocket@^0.11.3, faye-websocket@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/faye-websocket/-/faye-websocket-0.11.4.tgz#7f0d9275cfdd86a1c963dc8b65fcc451edcbb1da" + integrity sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g== + dependencies: + websocket-driver ">=0.5.1" + +fb-watchman@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/fb-watchman/-/fb-watchman-2.0.2.tgz#e9524ee6b5c77e9e5001af0f85f3adbb8623255c" + integrity sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA== + dependencies: + bser "2.1.1" + +figures@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +fill-range@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292" + integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg== + dependencies: + to-regex-range "^5.0.1" + +finalhandler@1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" + integrity sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA== + 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" + +finalhandler@1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.3.1.tgz#0c575f1d1d324ddd1da35ad7ece3df7d19088019" + integrity sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ== + dependencies: + debug "2.6.9" + encodeurl "~2.0.0" + escape-html "~1.0.3" + on-finished "2.4.1" + parseurl "~1.3.3" + statuses "2.0.1" + unpipe "~1.0.0" + +find-cache-dir@^3.3.1: + version "3.3.2" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.2.tgz#b30c5b6eff0730731aea9bbd9dbecbd80256d64b" + integrity sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.0" + +find-up@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.0.0" + path-exists "^4.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +flat-cache@^3.0.4: + version "3.2.0" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.2.0.tgz#2c0c2d5040c99b1632771a9d105725c0115363ee" + integrity sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw== + dependencies: + flatted "^3.2.9" + keyv "^4.5.3" + rimraf "^3.0.2" + +flatted@^3.2.7, flatted@^3.2.9: + version "3.3.3" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.3.3.tgz#67c8fad95454a7c7abebf74bb78ee74a44023358" + integrity sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg== + +follow-redirects@^1.0.0: + version "1.15.9" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.15.9.tgz#a604fa10e443bf98ca94228d9eebcc2e8a2c8ee1" + integrity sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ== + +for-each@^0.3.3, for-each@^0.3.5: + version "0.3.5" + resolved "https://registry.yarnpkg.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47" + integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg== + dependencies: + is-callable "^1.2.7" + +forever-agent@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" + integrity sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw== + +form-data@^4.0.0: + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" + mime-types "^2.1.12" + +form-data@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.3.3.tgz#dcce52c05f644f298c6a7ab936bd724ceffbf3a6" + integrity sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.6" + mime-types "^2.1.12" + +forwarded@0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/forwarded/-/forwarded-0.2.0.tgz#2269936428aad4c15c7ebe9779a84bf0b2a81811" + integrity sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow== + +fraction.js@^4.3.7: + version "4.3.7" + resolved "https://registry.yarnpkg.com/fraction.js/-/fraction.js-4.3.7.tgz#06ca0085157e42fda7f9e726e79fefc4068840f7" + integrity sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew== + +fresh@0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/fresh/-/fresh-0.5.2.tgz#3d8cadd90d976569fa835ab1f8e4b23a105605a7" + integrity sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q== + +fs-extra@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-8.1.0.tgz#49d43c45a88cd9677668cb7be1b46efdb8d2e1c0" + integrity sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g== + dependencies: + graceful-fs "^4.2.0" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^2.0.0, fs-minipass@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-2.1.0.tgz#7f5036fdbf12c63c169190cbe4199c852271f9fb" + integrity sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg== + dependencies: + minipass "^3.0.0" + +fs-monkey@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/fs-monkey/-/fs-monkey-1.1.0.tgz#632aa15a20e71828ed56b24303363fb1414e5997" + integrity sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw== + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw== + +fsevents@^2.3.2, fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +function-bind@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c" + integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA== + +function.prototype.name@^1.1.6, function.prototype.name@^1.1.8: + version "1.1.8" + resolved "https://registry.yarnpkg.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78" + integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + functions-have-names "^1.2.3" + hasown "^2.0.2" + is-callable "^1.2.7" + +functions-have-names@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834" + integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ== + +gauge@^4.0.3: + version "4.0.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-4.0.4.tgz#52ff0652f2bbf607a989793d53b751bef2328dce" + integrity sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg== + dependencies: + aproba "^1.0.3 || ^2.0.0" + color-support "^1.1.3" + console-control-strings "^1.1.0" + has-unicode "^2.0.1" + signal-exit "^3.0.7" + string-width "^4.2.3" + strip-ansi "^6.0.1" + wide-align "^1.1.5" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +get-caller-file@^2.0.1, get-caller-file@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" + integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== + +get-intrinsic@^1.1.3, get-intrinsic@^1.2.2, get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +get-proto@^1.0.0, get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + +get-stream@^6.0.0: + version "6.0.1" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.1.tgz#a262d8eef67aced57c2852ad6167526a43cbf7b7" + integrity sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg== + +get-symbol-description@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee" + integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + +getpass@^0.1.1: + version "0.1.7" + resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" + integrity sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng== + dependencies: + assert-plus "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-parent@^6.0.1, glob-parent@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-6.0.2.tgz#6d237d99083950c79290f24c7642a3de9a28f9e3" + integrity sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A== + dependencies: + is-glob "^4.0.3" + +glob-to-regexp@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz#c75297087c851b9a578bd217dd59a92f59fe546e" + integrity sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw== + +glob@8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.0.3.tgz#415c6eb2deed9e502c68fa44a272e6da6eeca42e" + integrity sha512-ull455NHSHI/Y1FqGaaYFaLGkNMMJbavMrEGFXG/PGrg6y7sutWHUHrz6gy6WEBH6akM1M414dWKCNs+IhKdiQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@^7.0.3, glob@^7.0.6, glob@^7.1.3, glob@^7.1.4, glob@^7.1.7: + version "7.2.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.3.tgz#b8df0fb802bbfa8e89bd1d938b4e16578ed44f2b" + integrity sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^3.1.1" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^8.0.1: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +globals@^13.19.0: + version "13.24.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.24.0.tgz#8432a19d78ce0c1e833949c36adb345400bb1171" + integrity sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ== + dependencies: + type-fest "^0.20.2" + +globalthis@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236" + integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ== + dependencies: + define-properties "^1.2.1" + gopd "^1.0.1" + +globby@^11.1.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-11.1.0.tgz#bd4be98bb042f83d796f7e3811991fbe82a0d34b" + 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" + +globby@^13.1.1: + version "13.2.2" + resolved "https://registry.yarnpkg.com/globby/-/globby-13.2.2.tgz#63b90b1bf68619c2135475cbd4e71e66aa090592" + integrity sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w== + dependencies: + dir-glob "^3.0.1" + fast-glob "^3.3.0" + ignore "^5.2.4" + merge2 "^1.4.1" + slash "^4.0.0" + +globby@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-5.0.0.tgz#ebd84667ca0dbb330b99bcfc68eac2bc54370e0d" + integrity sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ== + dependencies: + array-union "^1.0.1" + arrify "^1.0.0" + glob "^7.0.3" + object-assign "^4.0.1" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +gopd@^1.0.1, gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4, graceful-fs@^4.2.6, graceful-fs@^4.2.9: + version "4.2.11" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" + integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ== + +graphemer@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" + integrity sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag== + +hammerjs@2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/hammerjs/-/hammerjs-2.0.8.tgz#04ef77862cff2bb79d30f7692095930222bf60f1" + integrity sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ== + +handle-thing@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/handle-thing/-/handle-thing-2.0.1.tgz#857f79ce359580c340d43081cc648970d0bb234e" + integrity sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg== + +har-schema@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-2.0.0.tgz#a94c2224ebcac04782a0d9035521f24735b7ec92" + integrity sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q== + +har-validator@~5.1.3: + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== + dependencies: + ajv "^6.12.3" + har-schema "^2.0.0" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg== + dependencies: + ansi-regex "^2.0.0" + +has-bigints@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe" + integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg== + +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + +has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854" + integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg== + dependencies: + es-define-property "^1.0.0" + +has-proto@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5" + integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ== + dependencies: + dunder-proto "^1.0.0" + +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + +has-unicode@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ== + +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + +hdr-histogram-js@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz#0b860534655722b6e3f3e7dca7b78867cf43dcb5" + integrity sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g== + dependencies: + "@assemblyscript/loader" "^0.10.1" + base64-js "^1.2.0" + pako "^1.0.3" + +hdr-histogram-percentiles-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz#9409f4de0c2dda78e61de2d9d78b1e9f3cba283c" + integrity sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw== + +hosted-git-info@^5.0.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-5.2.1.tgz#0ba1c97178ef91f3ab30842ae63d6a272341156f" + integrity sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw== + dependencies: + lru-cache "^7.5.1" + +hpack.js@^2.1.6: + version "2.1.6" + resolved "https://registry.yarnpkg.com/hpack.js/-/hpack.js-2.1.6.tgz#87774c0949e513f42e84575b3c45681fade2a0b2" + integrity sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ== + dependencies: + inherits "^2.0.1" + obuf "^1.0.0" + readable-stream "^2.0.1" + wbuf "^1.1.0" + +html-encoding-sniffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-3.0.0.tgz#2cb1a8cf0db52414776e5b2a7a04d5dd98158de9" + integrity sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA== + dependencies: + whatwg-encoding "^2.0.0" + +html-entities@^2.3.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/html-entities/-/html-entities-2.6.0.tgz#7c64f1ea3b36818ccae3d3fb48b6974208e984f8" + integrity sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ== + +html-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +http-cache-semantics@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.2.0.tgz#205f4db64f8562b76a4ff9235aa5279839a09dd5" + integrity sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ== + +http-deceiver@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/http-deceiver/-/http-deceiver-1.2.7.tgz#fa7168944ab9a519d337cb0bec7284dc3e723d87" + integrity sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw== + +http-errors@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-2.0.0.tgz#b7774a1486ef73cf7667ac9ae0858c012c57b9d3" + integrity sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ== + dependencies: + depd "2.0.0" + inherits "2.0.4" + setprototypeof "1.2.0" + statuses "2.0.1" + toidentifier "1.0.1" + +http-errors@~1.6.2: + version "1.6.3" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" + integrity sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A== + dependencies: + depd "~1.1.2" + inherits "2.0.3" + setprototypeof "1.1.0" + statuses ">= 1.4.0 < 2" + +http-parser-js@>=0.5.1: + version "0.5.10" + resolved "https://registry.yarnpkg.com/http-parser-js/-/http-parser-js-0.5.10.tgz#b3277bd6d7ed5588e20ea73bf724fcbe44609075" + integrity sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA== + +http-proxy-agent@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz#5129800203520d434f142bc78ff3c170800f2b43" + integrity sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w== + dependencies: + "@tootallnate/once" "2" + agent-base "6" + debug "4" + +http-proxy-middleware@^2.0.3: + version "2.0.9" + resolved "https://registry.yarnpkg.com/http-proxy-middleware/-/http-proxy-middleware-2.0.9.tgz#e9e63d68afaa4eee3d147f39149ab84c0c2815ef" + integrity sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q== + 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" + +http-proxy@^1.18.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/http-proxy/-/http-proxy-1.18.1.tgz#401541f0534884bbf95260334e72f88ee3976549" + integrity sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ== + dependencies: + eventemitter3 "^4.0.0" + follow-redirects "^1.0.0" + requires-port "^1.0.0" + +http-signature@~1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.2.0.tgz#9aecd925114772f3d95b65a60abb8f7c18fbace1" + integrity sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ== + dependencies: + assert-plus "^1.0.0" + jsprim "^1.2.2" + sshpk "^1.7.0" + +https-proxy-agent@5.0.1, https-proxy-agent@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz#c59ef224a04fe8b754f3db0063a25ea30d0005d6" + integrity sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA== + dependencies: + agent-base "6" + debug "4" + +https-proxy-agent@^2.2.1: + version "2.2.4" + resolved "https://registry.yarnpkg.com/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz#4ee7a737abd92678a293d9b34a1af4d0d08c787b" + integrity sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg== + dependencies: + agent-base "^4.3.0" + debug "^3.1.0" + +human-signals@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-2.1.0.tgz#dc91fcba42e4d06e4abaed33b3e7a3c02f514ea0" + integrity sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw== + +humanize-ms@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/humanize-ms/-/humanize-ms-1.2.1.tgz#c46e3159a293f6b896da29316d8b6fe8bb79bbed" + integrity sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ== + dependencies: + ms "^2.0.0" + +iconv-lite@0.4.24, iconv-lite@^0.4.24: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +iconv-lite@0.6.3, iconv-lite@^0.6.2, iconv-lite@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.6.3.tgz#a52f80bf38da1952eb5c681790719871a1a72501" + integrity sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw== + dependencies: + safer-buffer ">= 2.1.2 < 3.0.0" + +icss-utils@^5.0.0, icss-utils@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-5.1.0.tgz#c6be6858abd013d768e98366ae47e25d5887b1ae" + integrity sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA== + +ieee754@^1.1.13: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + +ignore-walk@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-5.0.1.tgz#5f199e23e1288f518d90358d461387788a154776" + integrity sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw== + dependencies: + minimatch "^5.0.1" + +ignore@5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.0.tgz#6d3bac8fa7fe0d45d9f9be7bac2fc279577e345a" + integrity sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ== + +ignore@^5.2.0, ignore@^5.2.4: + version "5.3.2" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.3.2.tgz#3cd40e729f3643fd87cb04e50bf0eb722bc596f5" + integrity sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g== + +image-size@~0.5.0: + version "0.5.5" + resolved "https://registry.yarnpkg.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c" + integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ== + +immediate@~3.0.5: + version "3.0.6" + resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.0.6.tgz#9db1dbd0faf8de6fbe0f5dd5e56bb606280de69b" + integrity sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ== + +immutable@^4.0.0: + version "4.3.7" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-4.3.7.tgz#c70145fc90d89fb02021e65c84eb0226e4e5a381" + integrity sha512-1hqclzwYwjRDFLjcFxOM5AYkkG0rpFPpr1RLPMEuGczoS7YA8gLhy8SWXYRAA/XwfEHpfo3cw5JGioS32fnMRw== + +import-fresh@^3.2.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.1.tgz#9cecb56503c0ada1f2741dbbd6546e4b13b57ccf" + integrity sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +import-local@^3.0.2: + version "3.2.0" + resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.2.0.tgz#c3d5c745798c02a6f8b897726aba5100186ee260" + integrity sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA== + dependencies: + pkg-dir "^4.2.0" + resolve-cwd "^3.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA== + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +infer-owner@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/infer-owner/-/infer-owner-1.0.4.tgz#c4cefcaa8e51051c2a40ba2ce8a3d27295af9467" + integrity sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A== + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA== + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@2.0.4, inherits@^2.0.1, inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +inherits@2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" + integrity sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw== + +ini@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ini/-/ini-3.0.0.tgz#2f6de95006923aa75feed8894f5686165adc08f1" + integrity sha512-TxYQaeNW/N8ymDvwAxPyRbhMBtnEwuvaTYpOQkFx1nSeusgezHniEc/l35Vo4iCq/mMiTJbpD7oYxN98hFlfmw== + +ini@^1.3.4: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +inquirer@8.2.4: + version "8.2.4" + resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-8.2.4.tgz#ddbfe86ca2f67649a67daa6f1051c128f684f0b4" + integrity sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg== + dependencies: + ansi-escapes "^4.2.1" + chalk "^4.1.1" + cli-cursor "^3.1.0" + cli-width "^3.0.0" + external-editor "^3.0.3" + figures "^3.0.0" + lodash "^4.17.21" + mute-stream "0.0.8" + ora "^5.4.1" + run-async "^2.4.0" + rxjs "^7.5.5" + string-width "^4.1.0" + strip-ansi "^6.0.0" + through "^2.3.6" + wrap-ansi "^7.0.0" + +internal-slot@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961" + integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw== + dependencies: + es-errors "^1.3.0" + hasown "^2.0.2" + side-channel "^1.1.0" + +ip-address@^9.0.5: + version "9.0.5" + resolved "https://registry.yarnpkg.com/ip-address/-/ip-address-9.0.5.tgz#117a960819b08780c3bd1f14ef3c1cc1d3f3ea5a" + integrity sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g== + dependencies: + jsbn "1.1.0" + sprintf-js "^1.1.3" + +ipaddr.js@1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-1.9.1.tgz#bff38543eeb8984825079ff3a2a8e6cbd46781b3" + integrity sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g== + +ipaddr.js@^2.0.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ipaddr.js/-/ipaddr.js-2.2.0.tgz#d33fa7bac284f4de7af949638c9d68157c6b92e8" + integrity sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA== + +is-arguments@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b" + integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-array-buffer@^3.0.2, is-array-buffer@^3.0.4, is-array-buffer@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280" + integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg== + +is-async-function@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523" + integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ== + dependencies: + async-function "^1.0.0" + call-bound "^1.0.3" + get-proto "^1.0.1" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-bigint@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672" + integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ== + dependencies: + has-bigints "^1.0.2" + +is-binary-path@~2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-2.1.0.tgz#ea1f7f3b80f064236e83470f86c09c254fb45b09" + integrity sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw== + dependencies: + binary-extensions "^2.0.0" + +is-boolean-object@^1.2.1: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e" + integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-callable@^1.2.7: + version "1.2.7" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055" + integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA== + +is-core-module@^2.13.0, is-core-module@^2.16.0, is-core-module@^2.16.1, is-core-module@^2.8.1, is-core-module@^2.9.0: + version "2.16.1" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.16.1.tgz#2a98801a849f43e2add644fbb6bc6229b19a4ef4" + integrity sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w== + dependencies: + hasown "^2.0.2" + +is-data-view@^1.0.1, is-data-view@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e" + integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw== + dependencies: + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + is-typed-array "^1.1.13" + +is-date-object@^1.0.5, is-date-object@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7" + integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg== + dependencies: + call-bound "^1.0.2" + has-tostringtag "^1.0.2" + +is-docker@^2.0.0, is-docker@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.2.1.tgz#33eeabe23cfe86f14bde4408a02c0cfb853acdaa" + integrity sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ== + +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== + +is-finalizationregistry@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90" + integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg== + dependencies: + call-bound "^1.0.3" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-generator-fn@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" + integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== + +is-generator-function@^1.0.10: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-generator-function/-/is-generator-function-1.1.0.tgz#bf3eeda931201394f57b5dba2800f91a238309ca" + integrity sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ== + dependencies: + call-bound "^1.0.3" + get-proto "^1.0.0" + has-tostringtag "^1.0.2" + safe-regex-test "^1.1.0" + +is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3, is-glob@~4.0.1: + version "4.0.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" + integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg== + dependencies: + is-extglob "^2.1.1" + +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + +is-lambda@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-lambda/-/is-lambda-1.0.1.tgz#3d9877899e6a53efc0160504cde15f82e6f061d5" + integrity sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ== + +is-map@^2.0.2, is-map@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e" + integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw== + +is-negative-zero@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747" + integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw== + +is-number-object@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541" + integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== + +is-path-cwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-path-cwd/-/is-path-cwd-1.0.0.tgz#d225ec23132e89edd38fda767472e62e65f1106d" + integrity sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw== + +is-path-in-cwd@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz#5ac48b345ef675339bd6c7a48a912110b241cf52" + integrity sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ== + dependencies: + is-path-inside "^1.0.0" + +is-path-inside@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-1.0.1.tgz#8ef5b7de50437a3fdca6b4e865ef7aa55cb48036" + integrity sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g== + dependencies: + path-is-inside "^1.0.1" + +is-path-inside@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/is-path-inside/-/is-path-inside-3.0.3.tgz#d231362e53a07ff2b0e0ea7fed049161ffd16283" + integrity sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ== + +is-plain-obj@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-3.0.0.tgz#af6f2ea14ac5a646183a5bbdb5baabbc156ad9d7" + integrity sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA== + +is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-potential-custom-element-name@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz#171ed6f19e3ac554394edf78caa05784a45bebb5" + integrity sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ== + +is-regex@^1.1.4, is-regex@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22" + integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g== + dependencies: + call-bound "^1.0.2" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + +is-set@^2.0.2, is-set@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d" + integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg== + +is-shared-array-buffer@^1.0.2, is-shared-array-buffer@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f" + integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A== + dependencies: + call-bound "^1.0.3" + +is-stream@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.1.tgz#fac1e3d53b97ad5a9d0ae9cef2389f5810a5c077" + integrity sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg== + +is-string@^1.0.7, is-string@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9" + integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA== + dependencies: + call-bound "^1.0.3" + has-tostringtag "^1.0.2" + +is-symbol@^1.0.4, is-symbol@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634" + integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w== + dependencies: + call-bound "^1.0.2" + has-symbols "^1.1.0" + safe-regex-test "^1.1.0" + +is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15: + version "1.1.15" + resolved "https://registry.yarnpkg.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b" + integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ== + dependencies: + which-typed-array "^1.1.16" + +is-typedarray@^1.0.0, is-typedarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA== + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-weakmap@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd" + integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w== + +is-weakref@^1.0.2, is-weakref@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293" + integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew== + dependencies: + call-bound "^1.0.3" + +is-weakset@^2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca" + integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ== + dependencies: + call-bound "^1.0.3" + get-intrinsic "^1.2.6" + +is-what@^3.14.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-3.14.1.tgz#e1222f46ddda85dead0fd1c9df131760e77755c1" + integrity sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA== + +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.0.0" + +isarray@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723" + integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw== + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ== + +isbinaryfile@^4.0.8: + version "4.0.10" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-4.0.10.tgz#0c5b5e30c2557a2f06febd37b7322946aaee42b3" + integrity sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw== + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw== + +isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg== + +isstream@~0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" + integrity sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g== + +istanbul-lib-coverage@^2.0.5: + version "2.0.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz#675f0ab69503fad4b1d849f736baaca803344f49" + integrity sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA== + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.2.0: + version "3.2.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz#2d166c4b0644d43a39f04bf6c2edd1e585f31756" + integrity sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg== + +istanbul-lib-instrument@^5.0.4, istanbul-lib-instrument@^5.1.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz#d10c8885c2125574e1c231cacadf955675e1ce3d" + integrity sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg== + dependencies: + "@babel/core" "^7.12.3" + "@babel/parser" "^7.14.7" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.2.0" + semver "^6.3.0" + +istanbul-lib-report@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz#908305bac9a5bd175ac6a74489eafd0fc2445a7d" + integrity sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^4.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-3.0.6.tgz#284997c48211752ec486253da97e3879defba8c8" + integrity sha512-R47KzMtDJH6X4/YW9XTx+jrLnZnscW4VpNN+1PViSYTejLVPWv7oov+Duf8YQSPyVRUvueQqz1TcsC6mooZTXw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^2.0.5" + make-dir "^2.1.0" + rimraf "^2.6.3" + source-map "^0.6.1" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz#895f3a709fcfba34c6de5a42939022f3e4358551" + integrity sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2, istanbul-reports@^3.1.3: + version "3.1.7" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.1.7.tgz#daed12b9e1dca518e15c056e1e537e741280fa0b" + integrity sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +jasmine-core@^4.1.0: + version "4.6.1" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.6.1.tgz#5ebb8afa07282078f8d7b15871737a83b74e58f2" + integrity sha512-VYz/BjjmC3klLJlLwA4Kw8ytk0zDSmbbDLNs794VnWmkcCB7I9aAL/D48VNQtmITyPvea2C3jdUMfc3kAoy0PQ== + +jasmine-core@~2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-2.8.0.tgz#bcc979ae1f9fd05701e45e52e65d3a5d63f1a24e" + integrity sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ== + +jasmine-core@~4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-4.5.0.tgz#1a6bd0bde3f60996164311c88a0995d67ceda7c3" + integrity sha512-9PMzyvhtocxb3aXJVOPqBDswdgyAeSB81QnLop4npOpbqnheaTEwPc9ZloQeVswugPManznQBjD8kWDTjlnHuw== + +jasmine-spec-reporter@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/jasmine-spec-reporter/-/jasmine-spec-reporter-7.0.0.tgz#94b939448e63d4e2bd01668142389f20f0a8ea49" + integrity sha512-OtC7JRasiTcjsaCBPtMO0Tl8glCejM4J4/dNuOJdA8lBjz4PmWjYQ6pzb0uzpBNAWJMDudYuj9OdXJWqM2QTJg== + dependencies: + colors "1.4.0" + +jasmine@2.8.0: + version "2.8.0" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-2.8.0.tgz#6b089c0a11576b1f16df11b80146d91d4e8b8a3e" + integrity sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw== + dependencies: + exit "^0.1.2" + glob "^7.0.6" + jasmine-core "~2.8.0" + +jasminewd2@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/jasminewd2/-/jasminewd2-2.2.0.tgz#e37cf0b17f199cce23bea71b2039395246b4ec4e" + integrity sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg== + +jest-changed-files@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-28.1.3.tgz#d9aeee6792be3686c47cb988a8eaf82ff4238831" + integrity sha512-esaOfUWJXk2nfZt9SPyC8gA1kNfdKLkQWyzsMlqq8msYSlNKfmZxfRgZn4Cd4MGVUF+7v6dBs0d5TOAKa7iIiA== + dependencies: + execa "^5.0.0" + p-limit "^3.1.0" + +jest-circus@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-circus/-/jest-circus-28.1.3.tgz#d14bd11cf8ee1a03d69902dc47b6bd4634ee00e4" + integrity sha512-cZ+eS5zc79MBwt+IhQhiEp0OeBddpc1n8MBo1nMB8A7oPMKEO+Sre+wHaLJexQUj9Ya/8NOBY0RESUgYjB6fow== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/expect" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + co "^4.6.0" + dedent "^0.7.0" + is-generator-fn "^2.0.0" + jest-each "^28.1.3" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-runtime "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + p-limit "^3.1.0" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-cli@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-28.1.3.tgz#558b33c577d06de55087b8448d373b9f654e46b2" + integrity sha512-roY3kvrv57Azn1yPgdTebPAXvdR2xfezaKKYzVxZ6It/5NCxzJym6tUI5P1zkdWhfUYkxEI9uZWcQdaFLo8mJQ== + dependencies: + "@jest/core" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + chalk "^4.0.0" + exit "^0.1.2" + graceful-fs "^4.2.9" + import-local "^3.0.2" + jest-config "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" + prompts "^2.0.1" + yargs "^17.3.1" + +jest-config@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-28.1.3.tgz#e315e1f73df3cac31447eed8b8740a477392ec60" + integrity sha512-MG3INjByJ0J4AsNBm7T3hsuxKQqFIiRo/AUqb1q9LRKI5UU6Aar9JHbr9Ivn1TVwfUD9KirRoM/T6u8XlcQPHQ== + dependencies: + "@babel/core" "^7.11.6" + "@jest/test-sequencer" "^28.1.3" + "@jest/types" "^28.1.3" + babel-jest "^28.1.3" + chalk "^4.0.0" + ci-info "^3.2.0" + deepmerge "^4.2.2" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-circus "^28.1.3" + jest-environment-node "^28.1.3" + jest-get-type "^28.0.2" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.3" + jest-runner "^28.1.3" + jest-util "^28.1.3" + jest-validate "^28.1.3" + micromatch "^4.0.4" + parse-json "^5.2.0" + pretty-format "^28.1.3" + slash "^3.0.0" + strip-json-comments "^3.1.1" + +jest-diff@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-27.5.1.tgz#a07f5011ac9e6643cf8a95a462b7b1ecf6680def" + integrity sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw== + dependencies: + chalk "^4.0.0" + diff-sequences "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-diff@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-28.1.3.tgz#948a192d86f4e7a64c5264ad4da4877133d8792f" + integrity sha512-8RqP1B/OXzjjTWkqMX67iqgwBVJRgCyKD3L9nq+6ZqJMdvjE8RgHktqZ6jNrkdMT+dJuYNI3rhQpxaz7drJHfw== + dependencies: + chalk "^4.0.0" + diff-sequences "^28.1.1" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-docblock@^28.1.1: + version "28.1.1" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-28.1.1.tgz#6f515c3bf841516d82ecd57a62eed9204c2f42a8" + integrity sha512-3wayBVNiOYx0cwAbl9rwm5kKFP8yHH3d/fkEaL02NPTkDojPtheGB7HZSFY4wzX+DxyrvhXz0KSCVksmCknCuA== + dependencies: + detect-newline "^3.0.0" + +jest-each@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-28.1.3.tgz#bdd1516edbe2b1f3569cfdad9acd543040028f81" + integrity sha512-arT1z4sg2yABU5uogObVPvSlSMQlDA48owx07BDPAiasW0yYpYHYOo4HHLz9q0BVzDVU4hILFjzJw0So9aCL/g== + dependencies: + "@jest/types" "^28.1.3" + chalk "^4.0.0" + jest-get-type "^28.0.2" + jest-util "^28.1.3" + pretty-format "^28.1.3" + +jest-environment-jsdom@^28.0.0: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-28.1.3.tgz#2d4e5d61b7f1d94c3bddfbb21f0308ee506c09fb" + integrity sha512-HnlGUmZRdxfCByd3GM2F100DgQOajUBzEitjGqIREcb45kGjZvRrKUdlaF6escXBdcXNl0OBh+1ZrfeZT3GnAg== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/jsdom" "^16.2.4" + "@types/node" "*" + jest-mock "^28.1.3" + jest-util "^28.1.3" + jsdom "^19.0.0" + +jest-environment-node@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-28.1.3.tgz#7e74fe40eb645b9d56c0c4b70ca4357faa349be5" + integrity sha512-ugP6XOhEpjAEhGYvp5Xj989ns5cB1K6ZdjBYuS30umT4CQEETaxSiPcZ/E1kFktX4GkrcM4qu07IIlDYX1gp+A== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + jest-mock "^28.1.3" + jest-util "^28.1.3" + +jest-get-type@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-27.5.1.tgz#3cd613c507b0f7ace013df407a1c1cd578bcb4f1" + integrity sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw== + +jest-get-type@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-28.0.2.tgz#34622e628e4fdcd793d46db8a242227901fcf203" + integrity sha512-ioj2w9/DxSYHfOm5lJKCdcAmPJzQXmbM/Url3rhlghrPvT3tt+7a/+oXc9azkKmLvoiXjtV83bEWqi+vs5nlPA== + +jest-haste-map@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-28.1.3.tgz#abd5451129a38d9841049644f34b034308944e2b" + integrity sha512-3S+RQWDXccXDKSWnkHa/dPwt+2qwA8CJzR61w3FoYCvoo3Pn8tvGcysmMF0Bj0EX5RYvAI2EIvC57OmotfdtKA== + dependencies: + "@jest/types" "^28.1.3" + "@types/graceful-fs" "^4.1.3" + "@types/node" "*" + anymatch "^3.0.3" + fb-watchman "^2.0.0" + graceful-fs "^4.2.9" + jest-regex-util "^28.0.2" + jest-util "^28.1.3" + jest-worker "^28.1.3" + micromatch "^4.0.4" + walker "^1.0.8" + optionalDependencies: + fsevents "^2.3.2" + +jest-leak-detector@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-28.1.3.tgz#a6685d9b074be99e3adee816ce84fd30795e654d" + integrity sha512-WFVJhnQsiKtDEo5lG2mM0v40QWnBM+zMdHHyJs8AWZ7J0QZJS59MsyKeJHWhpBZBH32S48FOVvGyOFT1h0DlqA== + dependencies: + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-matcher-utils@^27.0.0: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-27.5.1.tgz#9c0cdbda8245bc22d2331729d1091308b40cf8ab" + integrity sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw== + dependencies: + chalk "^4.0.0" + jest-diff "^27.5.1" + jest-get-type "^27.5.1" + pretty-format "^27.5.1" + +jest-matcher-utils@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-28.1.3.tgz#5a77f1c129dd5ba3b4d7fc20728806c78893146e" + integrity sha512-kQeJ7qHemKfbzKoGjHHrRKH6atgxMk8Enkk2iPQ3XwO6oE/KYD8lMYOziCkeSB9G4adPM4nR1DE8Tf5JeWH6Bw== + dependencies: + chalk "^4.0.0" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + pretty-format "^28.1.3" + +jest-message-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-28.1.3.tgz#232def7f2e333f1eecc90649b5b94b0055e7c43d" + integrity sha512-PFdn9Iewbt575zKPf1286Ht9EPoJmYT7P0kY+RibeYZ2XtOr53pDLEFoTWXbd1h4JiGiWpTBC84fc8xMXQMb7g== + dependencies: + "@babel/code-frame" "^7.12.13" + "@jest/types" "^28.1.3" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.9" + micromatch "^4.0.4" + pretty-format "^28.1.3" + slash "^3.0.0" + stack-utils "^2.0.3" + +jest-mock@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-28.1.3.tgz#d4e9b1fc838bea595c77ab73672ebf513ab249da" + integrity sha512-o3J2jr6dMMWYVH4Lh/NKmDXdosrsJgi4AviS8oXLujcjpCMBb1FMsblDnOXKZKfSiHLxYub1eS0IHuRXsio9eA== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz#930b1546164d4ad5937d5540e711d4d38d4cad2e" + integrity sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w== + +jest-preset-angular@~12.2.3: + version "12.2.6" + resolved "https://registry.yarnpkg.com/jest-preset-angular/-/jest-preset-angular-12.2.6.tgz#61b4643c1da3852dee65832048ce87aead2e885f" + integrity sha512-h5xazwr6Q4ZgQ/Bpcko2bJ6EnvSn3ek4cujhjK4+EPoB/27g0UzEiyNdlqTFa4m4uNjrqWRTSX+rHmWyPMg5PQ== + dependencies: + bs-logger "^0.2.6" + esbuild-wasm ">=0.13.8" + jest-environment-jsdom "^28.0.0" + pretty-format "^28.0.0" + ts-jest "^28.0.0" + optionalDependencies: + esbuild ">=0.13.8" + +jest-regex-util@^28.0.2: + version "28.0.2" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-28.0.2.tgz#afdc377a3b25fb6e80825adcf76c854e5bf47ead" + integrity sha512-4s0IgyNIy0y9FK+cjoVYoxamT7Zeo7MhzqRGx7YDYmaQn1wucY9rotiGkBzzcMXTtjrCAP/f7f+E0F7+fxPNdw== + +jest-resolve-dependencies@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-28.1.3.tgz#8c65d7583460df7275c6ea2791901fa975c1fe66" + integrity sha512-qa0QO2Q0XzQoNPouMbCc7Bvtsem8eQgVPNkwn9LnS+R2n8DaVDPL/U1gngC0LTl1RYXJU0uJa2BMC2DbTfFrHA== + dependencies: + jest-regex-util "^28.0.2" + jest-snapshot "^28.1.3" + +jest-resolve@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-28.1.3.tgz#cfb36100341ddbb061ec781426b3c31eb51aa0a8" + integrity sha512-Z1W3tTjE6QaNI90qo/BJpfnvpxtaFTFw5CDgwpyE/Kz8U/06N1Hjf4ia9quUhCh39qIGWF1ZuxFiBiJQwSEYKQ== + dependencies: + chalk "^4.0.0" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + jest-pnp-resolver "^1.2.2" + jest-util "^28.1.3" + jest-validate "^28.1.3" + resolve "^1.20.0" + resolve.exports "^1.1.0" + slash "^3.0.0" + +jest-runner@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-28.1.3.tgz#5eee25febd730b4713a2cdfd76bdd5557840f9a1" + integrity sha512-GkMw4D/0USd62OVO0oEgjn23TM+YJa2U2Wu5zz9xsQB1MxWKDOlrnykPxnMsN0tnJllfLPinHTka61u0QhaxBA== + dependencies: + "@jest/console" "^28.1.3" + "@jest/environment" "^28.1.3" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.10.2" + graceful-fs "^4.2.9" + jest-docblock "^28.1.1" + jest-environment-node "^28.1.3" + jest-haste-map "^28.1.3" + jest-leak-detector "^28.1.3" + jest-message-util "^28.1.3" + jest-resolve "^28.1.3" + jest-runtime "^28.1.3" + jest-util "^28.1.3" + jest-watcher "^28.1.3" + jest-worker "^28.1.3" + p-limit "^3.1.0" + source-map-support "0.5.13" + +jest-runtime@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-28.1.3.tgz#a57643458235aa53e8ec7821949e728960d0605f" + integrity sha512-NU+881ScBQQLc1JHG5eJGU7Ui3kLKrmwCPPtYsJtBykixrM2OhVQlpMmFWJjMyDfdkGgBMNjXCGB/ebzsgNGQw== + dependencies: + "@jest/environment" "^28.1.3" + "@jest/fake-timers" "^28.1.3" + "@jest/globals" "^28.1.3" + "@jest/source-map" "^28.1.2" + "@jest/test-result" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + chalk "^4.0.0" + cjs-module-lexer "^1.0.0" + collect-v8-coverage "^1.0.0" + execa "^5.0.0" + glob "^7.1.3" + graceful-fs "^4.2.9" + jest-haste-map "^28.1.3" + jest-message-util "^28.1.3" + jest-mock "^28.1.3" + jest-regex-util "^28.0.2" + jest-resolve "^28.1.3" + jest-snapshot "^28.1.3" + jest-util "^28.1.3" + slash "^3.0.0" + strip-bom "^4.0.0" + +jest-snapshot@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-28.1.3.tgz#17467b3ab8ddb81e2f605db05583d69388fc0668" + integrity sha512-4lzMgtiNlc3DU/8lZfmqxN3AYD6GGLbl+72rdBpXvcV+whX7mDrREzkPdp2RnmfIiWBg1YbuFSkXduF2JcafJg== + dependencies: + "@babel/core" "^7.11.6" + "@babel/generator" "^7.7.2" + "@babel/plugin-syntax-typescript" "^7.7.2" + "@babel/traverse" "^7.7.2" + "@babel/types" "^7.3.3" + "@jest/expect-utils" "^28.1.3" + "@jest/transform" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/babel__traverse" "^7.0.6" + "@types/prettier" "^2.1.5" + babel-preset-current-node-syntax "^1.0.0" + chalk "^4.0.0" + expect "^28.1.3" + graceful-fs "^4.2.9" + jest-diff "^28.1.3" + jest-get-type "^28.0.2" + jest-haste-map "^28.1.3" + jest-matcher-utils "^28.1.3" + jest-message-util "^28.1.3" + jest-util "^28.1.3" + natural-compare "^1.4.0" + pretty-format "^28.1.3" + semver "^7.3.5" + +jest-util@^28.0.0, jest-util@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-28.1.3.tgz#f4f932aa0074f0679943220ff9cbba7e497028b0" + integrity sha512-XdqfpHwpcSRko/C35uLYFM2emRAltIIKZiJ9eAmhjsj0CqZMa0p1ib0R5fWIqGhn1a103DebTbpqIaP1qCQ6tQ== + dependencies: + "@jest/types" "^28.1.3" + "@types/node" "*" + chalk "^4.0.0" + ci-info "^3.2.0" + graceful-fs "^4.2.9" + picomatch "^2.2.3" + +jest-validate@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-28.1.3.tgz#e322267fd5e7c64cea4629612c357bbda96229df" + integrity sha512-SZbOGBWEsaTxBGCOpsRWlXlvNkvTkY0XxRfh7zYmvd8uL5Qzyg0CHAXiXKROflh801quA6+/DsT4ODDthOC/OA== + dependencies: + "@jest/types" "^28.1.3" + camelcase "^6.2.0" + chalk "^4.0.0" + jest-get-type "^28.0.2" + leven "^3.1.0" + pretty-format "^28.1.3" + +jest-watcher@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-28.1.3.tgz#c6023a59ba2255e3b4c57179fc94164b3e73abd4" + integrity sha512-t4qcqj9hze+jviFPUN3YAtAEeFnr/azITXQEMARf5cMwKY2SMBRnCQTXLixTl20OR6mLh9KLMrgVJgJISym+1g== + dependencies: + "@jest/test-result" "^28.1.3" + "@jest/types" "^28.1.3" + "@types/node" "*" + ansi-escapes "^4.2.1" + chalk "^4.0.0" + emittery "^0.10.2" + jest-util "^28.1.3" + string-length "^4.0.1" + +jest-worker@^27.4.5: + version "27.5.1" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-27.5.1.tgz#8d146f0900e8973b106b6f73cc1e9a8cb86f8db0" + integrity sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest-worker@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-28.1.3.tgz#7e3c4ce3fa23d1bb6accb169e7f396f98ed4bb98" + integrity sha512-CqRA220YV/6jCo8VWvAt1KKx6eek1VIHMPeLEbpcfSfkEeWyBNppynM/o6q+Wmw+sOhos2ml34wZbSX3G13//g== + dependencies: + "@types/node" "*" + merge-stream "^2.0.0" + supports-color "^8.0.0" + +jest@28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-28.1.3.tgz#e9c6a7eecdebe3548ca2b18894a50f45b36dfc6b" + integrity sha512-N4GT5on8UkZgH0O5LUavMRV1EDEhNTL0KEfRmDIeZHSV7p2XgLoY9t9VDUgL6o+yfdgYHVxuz81G8oB9VG5uyA== + dependencies: + "@jest/core" "^28.1.3" + "@jest/types" "^28.1.3" + import-local "^3.0.2" + jest-cli "^28.1.3" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml@^3.13.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +jsbn@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-1.1.0.tgz#b01307cb29b618a1ed26ec79e911f803c4da0040" + integrity sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A== + +jsbn@~0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" + integrity sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg== + +jsdom@^19.0.0: + version "19.0.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-19.0.0.tgz#93e67c149fe26816d38a849ea30ac93677e16b6a" + integrity sha512-RYAyjCbxy/vri/CfnjUWJQQtZ3LKlLnDqj+9XLNnJPgEGeirZs3hllKR20re8LUZ6o1b1X4Jat+Qd26zmP41+A== + dependencies: + abab "^2.0.5" + acorn "^8.5.0" + acorn-globals "^6.0.0" + cssom "^0.5.0" + cssstyle "^2.3.0" + data-urls "^3.0.1" + decimal.js "^10.3.1" + domexception "^4.0.0" + escodegen "^2.0.0" + form-data "^4.0.0" + html-encoding-sniffer "^3.0.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-potential-custom-element-name "^1.0.1" + nwsapi "^2.2.0" + parse5 "6.0.1" + saxes "^5.0.1" + symbol-tree "^3.2.4" + tough-cookie "^4.0.0" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^3.0.0" + webidl-conversions "^7.0.0" + whatwg-encoding "^2.0.0" + whatwg-mimetype "^3.0.0" + whatwg-url "^10.0.0" + ws "^8.2.3" + xml-name-validator "^4.0.0" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +jsesc@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.1.0.tgz#74d335a234f67ed19907fdadfac7ccf9d409825d" + integrity sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA== + +jsesc@~3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-3.0.2.tgz#bb8b09a6597ba426425f2e4a07245c3d00b9343e" + integrity sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g== + +json-buffer@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/json-buffer/-/json-buffer-3.0.1.tgz#9338802a30d3b6605fbe0613e094008ca8c05a13" + integrity sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ== + +json-parse-even-better-errors@^2.3.0, json-parse-even-better-errors@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-schema@0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.4.0.tgz#f7de4cf6efab838ebaeb3236474cbba5a1930ab5" + integrity sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw== + +json-stringify-safe@~5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" + integrity sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA== + +json5@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593" + integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA== + dependencies: + minimist "^1.2.0" + +json5@^2.1.2, json5@^2.2.1, json5@^2.2.3: + version "2.2.3" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.3.tgz#78cd6f1a19bdc12b73db5ad0c61efd66c1e29283" + integrity sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg== + +jsonc-parser@3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/jsonc-parser/-/jsonc-parser-3.1.0.tgz#73b8f0e5c940b83d03476bc2e51a20ef0932615d" + integrity sha512-DRf0QjnNeCUds3xTjKlQQ3DpJD51GvDjJfnxUVWg6PZTo2otSm+slzNAxU/35hF8/oJIKoG9slq30JYOsF2azg== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg== + optionalDependencies: + graceful-fs "^4.1.6" + +jsonparse@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/jsonparse/-/jsonparse-1.3.1.tgz#3f4dae4a91fac315f71062f8521cc239f1366280" + integrity sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg== + +jsprim@^1.2.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.2.tgz#712c65533a15c878ba59e9ed5f0e26d5b77c5feb" + integrity sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw== + dependencies: + assert-plus "1.0.0" + extsprintf "1.3.0" + json-schema "0.4.0" + verror "1.10.0" + +jszip@^3.1.3: + version "3.10.1" + resolved "https://registry.yarnpkg.com/jszip/-/jszip-3.10.1.tgz#34aee70eb18ea1faec2f589208a157d1feb091c2" + integrity sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g== + dependencies: + lie "~3.3.0" + pako "~1.0.2" + readable-stream "~2.3.6" + setimmediate "^1.0.5" + +karma-chrome-launcher@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz#baca9cc071b1562a1db241827257bfe5cab597ea" + integrity sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ== + dependencies: + which "^1.2.1" + +karma-cli@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/karma-cli/-/karma-cli-2.0.0.tgz#481548d28661af4cc68f3d8e09708f17d2cba931" + integrity sha512-1Kb28UILg1ZsfqQmeELbPzuEb5C6GZJfVIk0qOr8LNYQuYWmAaqP16WpbpKEjhejDrDYyYOwwJXSZO6u7q5Pvw== + dependencies: + resolve "^1.3.3" + +karma-coverage-istanbul-reporter@~3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-3.0.3.tgz#f3b5303553aadc8e681d40d360dfdc19bc7e9fe9" + integrity sha512-wE4VFhG/QZv2Y4CdAYWDbMmcAHeS926ZIji4z+FkB2aF/EposRb6DP6G5ncT/wXhqUfAb/d7kZrNKPonbvsATw== + dependencies: + istanbul-lib-coverage "^3.0.0" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^3.0.6" + istanbul-reports "^3.0.2" + minimatch "^3.0.4" + +karma-jasmine-html-reporter@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-2.0.0.tgz#76c26ce40e217dc36a630fbcd7b31c3462948bf2" + integrity sha512-SB8HNNiazAHXM1vGEzf8/tSyEhkfxuDdhYdPBX2Mwgzt0OuF2gicApQ+uvXLID/gXyJQgvrM9+1/2SxZFUUDIA== + +karma-jasmine@~5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/karma-jasmine/-/karma-jasmine-5.1.0.tgz#3af4558a6502fa16856a0f346ec2193d4b884b2f" + integrity sha512-i/zQLFrfEpRyQoJF9fsCdTMOF5c2dK7C7OmsuKg2D0YSsuZSfQDiLuaiktbuio6F2wiCsZSnSnieIQ0ant/uzQ== + dependencies: + jasmine-core "^4.1.0" + +karma-source-map-support@1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz#58526ceccf7e8730e56effd97a4de8d712ac0d6b" + integrity sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A== + dependencies: + source-map-support "^0.5.5" + +karma@~6.4.1: + version "6.4.4" + resolved "https://registry.yarnpkg.com/karma/-/karma-6.4.4.tgz#dfa5a426cf5a8b53b43cd54ef0d0d09742351492" + integrity sha512-LrtUxbdvt1gOpo3gxG+VAJlJAEMhbWlM4YrFQgql98FwF7+K8K12LYO4hnDdUkNjeztYrOXEMqgTajSWgmtI/w== + dependencies: + "@colors/colors" "1.5.0" + body-parser "^1.19.0" + braces "^3.0.2" + chokidar "^3.5.1" + connect "^3.7.0" + di "^0.0.1" + dom-serialize "^2.2.1" + glob "^7.1.7" + graceful-fs "^4.2.6" + http-proxy "^1.18.1" + isbinaryfile "^4.0.8" + lodash "^4.17.21" + log4js "^6.4.1" + mime "^2.5.2" + minimatch "^3.0.4" + mkdirp "^0.5.5" + qjobs "^1.2.0" + range-parser "^1.2.1" + rimraf "^3.0.2" + socket.io "^4.7.2" + source-map "^0.6.1" + tmp "^0.2.1" + ua-parser-js "^0.7.30" + yargs "^16.1.1" + +keyv@^4.5.3: + version "4.5.4" + resolved "https://registry.yarnpkg.com/keyv/-/keyv-4.5.4.tgz#a879a99e29452f942439f2a405e3af8b31d4de93" + integrity sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw== + dependencies: + json-buffer "3.0.1" + +kind-of@^6.0.2: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +kleur@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/kleur/-/kleur-3.0.3.tgz#a79c9ecc86ee1ce3fa6206d1216c501f147fc07e" + integrity sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w== + +klona@^2.0.4, klona@^2.0.5: + version "2.0.6" + resolved "https://registry.yarnpkg.com/klona/-/klona-2.0.6.tgz#85bffbf819c03b2f53270412420a4555ef882e22" + integrity sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA== + +less-loader@11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/less-loader/-/less-loader-11.0.0.tgz#a31b2bc5cdfb62f1c7de9b2d01cd944c22b1a024" + integrity sha512-9+LOWWjuoectIEx3zrfN83NAGxSUB5pWEabbbidVQVgZhN+wN68pOvuyirVlH1IK4VT1f3TmlyvAnCXh8O5KEw== + dependencies: + klona "^2.0.4" + +less@4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/less/-/less-4.1.3.tgz#175be9ddcbf9b250173e0a00b4d6920a5b770246" + integrity sha512-w16Xk/Ta9Hhyei0Gpz9m7VS8F28nieJaL/VyShID7cYvP6IL5oHeL6p4TXSDJqZE/lNv0oJ2pGVjJsRkfwm5FA== + dependencies: + copy-anything "^2.0.1" + parse-node-version "^1.0.1" + tslib "^2.3.0" + optionalDependencies: + errno "^0.1.1" + graceful-fs "^4.1.2" + image-size "~0.5.0" + make-dir "^2.1.0" + mime "^1.4.1" + needle "^3.1.0" + source-map "~0.6.0" + +leven@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" + integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +license-webpack-plugin@4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz#1e18442ed20b754b82f1adeff42249b81d11aec6" + integrity sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw== + dependencies: + webpack-sources "^3.0.0" + +lie@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lie/-/lie-3.3.0.tgz#dcf82dee545f46074daf200c7c1c5a08e0f40f6a" + integrity sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ== + dependencies: + immediate "~3.0.5" + +lines-and-columns@^1.1.6: + version "1.2.4" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.2.4.tgz#eca284f75d2965079309dc0ad9255abb2ebc1632" + integrity sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg== + +loader-runner@^4.2.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.3.0.tgz#c1b4a163b99f614830353b16755e7149ac2314e1" + integrity sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg== + +loader-utils@3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-3.2.1.tgz#4fb104b599daafd82ef3e1a41fb9265f87e1f576" + integrity sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw== + +loader-utils@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-2.0.4.tgz#8b5cb38b5c34a9a018ee1fc0e6a066d1dfcc528c" + integrity sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw== + dependencies: + big.js "^5.2.2" + emojis-list "^3.0.0" + json5 "^2.1.2" + +locate-path@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow== + +lodash.memoize@4.x: + version "4.1.2" + resolved "https://registry.yarnpkg.com/lodash.memoize/-/lodash.memoize-4.1.2.tgz#bcc6c49a42a2840ed997f323eada5ecd182e0bfe" + integrity sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag== + +lodash.merge@^4.6.0, lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log4js@^6.4.1: + version "6.9.1" + resolved "https://registry.yarnpkg.com/log4js/-/log4js-6.9.1.tgz#aba5a3ff4e7872ae34f8b4c533706753709e38b6" + integrity sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + flatted "^3.2.7" + rfdc "^1.3.0" + streamroller "^3.1.5" + +loglevel-colored-level-prefix@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/loglevel-colored-level-prefix/-/loglevel-colored-level-prefix-1.0.0.tgz#6a40218fdc7ae15fc76c3d0f3e676c465388603e" + integrity sha512-u45Wcxxc+SdAlh4yeF/uKlC1SPUPCy0gullSNKXod5I4bmifzk+Q4lSLExNEVn19tGaJipbZ4V4jbFn79/6mVA== + dependencies: + chalk "^1.1.3" + loglevel "^1.4.1" + +loglevel@^1.4.1: + version "1.9.2" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.9.2.tgz#c2e028d6c757720107df4e64508530db6621ba08" + integrity sha512-HgMmCqIJSAKqo68l0rS2AanEWfkxaZ5wNiEFb5ggm08lDs9Xl2KxBlX3PTcaD2chBM1gXAYf491/M2Rv8Jwayg== + +lru-cache@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-5.1.1.tgz#1da27e6710271947695daf6848e847f01d84b920" + integrity sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w== + dependencies: + yallist "^3.0.2" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +lru-cache@^7.4.4, lru-cache@^7.5.1, lru-cache@^7.7.1: + version "7.18.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-7.18.3.tgz#f793896e0fd0e954a59dfdd82f0773808df6aa89" + integrity sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA== + +magic-string@0.26.2: + version "0.26.2" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.2.tgz#5331700e4158cd6befda738bb6b0c7b93c0d4432" + integrity sha512-NzzlXpclt5zAbmo6h6jNc8zl2gNRGHvmsZW4IvZhTC4W7k4OlLP+S5YLussa/r3ixNT66KOQfNORlXHSOy/X4A== + dependencies: + sourcemap-codec "^1.4.8" + +magic-string@^0.26.0: + version "0.26.7" + resolved "https://registry.yarnpkg.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f" + integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow== + dependencies: + sourcemap-codec "^1.4.8" + +make-dir@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-2.1.0.tgz#5f0310e18b8be898cc07009295a30ae41e91e6f5" + integrity sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA== + dependencies: + pify "^4.0.1" + semver "^5.6.0" + +make-dir@^3.0.2, make-dir@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.0.0" + +make-dir@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-4.0.0.tgz#c3c2307a771277cd9638305f915c29ae741b614e" + integrity sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw== + dependencies: + semver "^7.5.3" + +make-error@1.x, make-error@^1.1.1: + version "1.3.6" + resolved "https://registry.yarnpkg.com/make-error/-/make-error-1.3.6.tgz#2eb2e37ea9b67c4891f684a1394799af484cf7a2" + integrity sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw== + +make-fetch-happen@^10.0.3, make-fetch-happen@^10.0.6: + version "10.2.1" + resolved "https://registry.yarnpkg.com/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz#f5e3835c5e9817b617f2770870d9492d28678164" + integrity sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w== + dependencies: + agentkeepalive "^4.2.1" + cacache "^16.1.0" + http-cache-semantics "^4.1.0" + http-proxy-agent "^5.0.0" + https-proxy-agent "^5.0.0" + is-lambda "^1.0.1" + lru-cache "^7.7.1" + minipass "^3.1.6" + minipass-collect "^1.0.2" + minipass-fetch "^2.0.3" + minipass-flush "^1.0.5" + minipass-pipeline "^1.2.4" + negotiator "^0.6.3" + promise-retry "^2.0.1" + socks-proxy-agent "^7.0.0" + ssri "^9.0.0" + +makeerror@1.0.12: + version "1.0.12" + resolved "https://registry.yarnpkg.com/makeerror/-/makeerror-1.0.12.tgz#3e5dd2079a82e812e983cc6610c4a2cb0eaa801a" + integrity sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg== + dependencies: + tmpl "1.0.5" + +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + +media-typer@0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/media-typer/-/media-typer-0.3.0.tgz#8710d7af0aa626f8fffa1ce00168545263255748" + integrity sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ== + +memfs@^3.4.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/memfs/-/memfs-3.6.0.tgz#d7a2110f86f79dd950a8b6df6d57bc984aa185f6" + integrity sha512-EGowvkkgbMcIChjMTMkESFDbZeSh8xZ7kNSF0hAiAN4Jh6jgHCRS0Ga/+C8y6Au+oqpezRHCfPsmJ2+DwAgiwQ== + dependencies: + fs-monkey "^1.0.4" + +merge-descriptors@1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-descriptors/-/merge-descriptors-1.0.3.tgz#d80319a65f3c7935351e5cfdac8f9318504dbed5" + integrity sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ== + +merge-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-2.0.0.tgz#52823629a14dd00c9770fb6ad47dc6310f2c1f60" + integrity sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w== + +merge2@^1.3.0, merge2@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" + integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== + +methods@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/methods/-/methods-1.1.2.tgz#5529a4d67654134edcc5266656835b0f851afcee" + integrity sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w== + +micromatch@^4.0.2, micromatch@^4.0.4, micromatch@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202" + integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA== + dependencies: + braces "^3.0.3" + picomatch "^2.3.1" + +mime-db@1.52.0: + version "1.52.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" + integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg== + +"mime-db@>= 1.43.0 < 2": + version "1.54.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.54.0.tgz#cddb3ee4f9c64530dff640236661d42cb6a314f5" + integrity sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ== + +mime-types@^2.1.12, mime-types@^2.1.27, mime-types@^2.1.31, mime-types@~2.1.17, mime-types@~2.1.19, mime-types@~2.1.24, mime-types@~2.1.34: + version "2.1.35" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a" + integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw== + dependencies: + mime-db "1.52.0" + +mime@1.6.0, mime@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +mime@^2.5.2: + version "2.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-2.6.0.tgz#a2a682a95cd4d0cb1d6257e28f83da7e35800367" + integrity sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg== + +mimic-fn@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-2.1.0.tgz#7ed2c2ccccaf84d3ffcb7a69b57711fc2083401b" + integrity sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg== + +mini-css-extract-plugin@2.6.1: + version "2.6.1" + resolved "https://registry.yarnpkg.com/mini-css-extract-plugin/-/mini-css-extract-plugin-2.6.1.tgz#9a1251d15f2035c342d99a468ab9da7a0451b71e" + integrity sha512-wd+SD57/K6DiV7jIR34P+s3uckTRuQvx0tKPcvjFlrEylk6P4mQ2KSWk1hblj1Kxaqok7LogKOieygXqBczNlg== + dependencies: + schema-utils "^4.0.0" + +minimalistic-assert@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz#2e194de044626d4a10e7f7fbc00ce73e83e4d5c7" + integrity sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A== + +minimatch@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.0.tgz#1717b464f4971b144f6aabe8f2d0b8e4511e09c7" + integrity sha512-9TPBGGak4nHfGZsPBohm9AWg6NoT7QTCehS3BIJABslyZbzxfV78QM2Y6+i741OPZIafFAaiiEMh5OyIrJPgtg== + dependencies: + brace-expansion "^2.0.1" + +minimatch@^3.0.4, minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" + integrity sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw== + dependencies: + brace-expansion "^1.1.7" + +minimatch@^5.0.1: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimist@^1.2.0, minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +minipass-collect@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-collect/-/minipass-collect-1.0.2.tgz#22b813bf745dc6edba2576b940022ad6edc8c617" + integrity sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA== + dependencies: + minipass "^3.0.0" + +minipass-fetch@^2.0.3: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minipass-fetch/-/minipass-fetch-2.1.2.tgz#95560b50c472d81a3bc76f20ede80eaed76d8add" + integrity sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA== + dependencies: + minipass "^3.1.6" + minipass-sized "^1.0.3" + minizlib "^2.1.2" + optionalDependencies: + encoding "^0.1.13" + +minipass-flush@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/minipass-flush/-/minipass-flush-1.0.5.tgz#82e7135d7e89a50ffe64610a787953c4c4cbb373" + integrity sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw== + dependencies: + minipass "^3.0.0" + +minipass-json-stream@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/minipass-json-stream/-/minipass-json-stream-1.0.2.tgz#5121616c77a11c406c3ffa77509e0b77bb267ec3" + integrity sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg== + dependencies: + jsonparse "^1.3.1" + minipass "^3.0.0" + +minipass-pipeline@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz#68472f79711c084657c067c5c6ad93cddea8214c" + integrity sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A== + dependencies: + minipass "^3.0.0" + +minipass-sized@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/minipass-sized/-/minipass-sized-1.0.3.tgz#70ee5a7c5052070afacfbc22977ea79def353b70" + integrity sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g== + dependencies: + minipass "^3.0.0" + +minipass@^3.0.0, minipass@^3.1.1, minipass@^3.1.6: + version "3.3.6" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-3.3.6.tgz#7bba384db3a1520d18c9c0e5251c3444e95dd94a" + integrity sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw== + dependencies: + yallist "^4.0.0" + +minipass@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-5.0.0.tgz#3e9788ffb90b694a5d0ec94479a45b5d8738133d" + integrity sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ== + +minizlib@^2.1.1, minizlib@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-2.1.2.tgz#e90d3466ba209b932451508a11ce3d3632145931" + integrity sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg== + dependencies: + minipass "^3.0.0" + yallist "^4.0.0" + +mkdirp@^0.5.5: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mkdirp@^1.0.3, mkdirp@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-1.0.4.tgz#3eb5ed62622756d79a5f0e2a221dfebad75c2f7e" + integrity sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw== + +moment@^2.29.1: + version "2.30.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.30.1.tgz#f8c91c07b7a786e30c59926df530b4eac96974ae" + integrity sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A== + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@2.1.3, ms@^2.0.0, ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multicast-dns@^7.2.5: + version "7.2.5" + resolved "https://registry.yarnpkg.com/multicast-dns/-/multicast-dns-7.2.5.tgz#77eb46057f4d7adbd16d9290fa7299f6fa64cced" + integrity sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg== + dependencies: + dns-packet "^5.2.2" + thunky "^1.0.2" + +mute-stream@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.8.tgz#1630c42b2251ff81e2a283de96a5497ea92e5e0d" + integrity sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA== + +nanoid@^3.3.11, nanoid@^3.3.4: + version "3.3.11" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b" + integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w== + +natural-compare-lite@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz#17b09581988979fddafe0201e931ba933c96cbb4" + integrity sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== + +needle@^3.1.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/needle/-/needle-3.3.1.tgz#63f75aec580c2e77e209f3f324e2cdf3d29bd049" + integrity sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q== + dependencies: + iconv-lite "^0.6.3" + sax "^1.2.4" + +negotiator@0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.3.tgz#58e323a72fedc0d6f9cd4d31fe49f51479590ccd" + integrity sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg== + +negotiator@^0.6.3, negotiator@~0.6.4: + version "0.6.4" + resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.4.tgz#777948e2452651c570b712dd01c23e262713fff7" + integrity sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w== + +neo-async@^2.6.2: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +net@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/net/-/net-1.0.2.tgz#d1757ec9a7fb2371d83cf4755ce3e27e10829388" + integrity sha512-kbhcj2SVVR4caaVnGLJKmlk2+f+oLkjqdKeQlmUtz6nGzOpbcobwVIeSURNgraV/v3tlmGIX82OcPCl0K6RbHQ== + +next-tick@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-1.1.0.tgz#1836ee30ad56d67ef281b22bd199f709449b35eb" + integrity sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ== + +nice-napi@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/nice-napi/-/nice-napi-1.0.2.tgz#dc0ab5a1eac20ce548802fc5686eaa6bc654927b" + integrity sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA== + dependencies: + node-addon-api "^3.0.0" + node-gyp-build "^4.2.2" + +node-addon-api@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/node-addon-api/-/node-addon-api-3.2.1.tgz#81325e0a2117789c0128dab65e7e38f07ceba161" + integrity sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A== + +node-forge@^1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/node-forge/-/node-forge-1.3.1.tgz#be8da2af243b2417d5f646a770663a92b7e9ded3" + integrity sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA== + +node-gyp-build@^4.2.2, node-gyp-build@^4.3.0: + version "4.8.4" + resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.8.4.tgz#8a70ee85464ae52327772a90d66c6077a900cfc8" + integrity sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ== + +node-gyp@^9.0.0: + version "9.4.1" + resolved "https://registry.yarnpkg.com/node-gyp/-/node-gyp-9.4.1.tgz#8a1023e0d6766ecb52764cc3a734b36ff275e185" + integrity sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ== + dependencies: + env-paths "^2.2.0" + exponential-backoff "^3.1.1" + glob "^7.1.4" + graceful-fs "^4.2.6" + make-fetch-happen "^10.0.3" + nopt "^6.0.0" + npmlog "^6.0.0" + rimraf "^3.0.2" + semver "^7.3.5" + tar "^6.1.2" + which "^2.0.2" + +node-int64@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/node-int64/-/node-int64-0.4.0.tgz#87a9065cdb355d3182d8f94ce11188b825c68a3b" + integrity sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw== + +node-releases@^2.0.19: + version "2.0.19" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-2.0.19.tgz#9e445a52950951ec4d177d843af370b411caf314" + integrity sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw== + +nopt@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-6.0.0.tgz#245801d8ebf409c6df22ab9d95b65e1309cdb16d" + integrity sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g== + dependencies: + abbrev "^1.0.0" + +normalize-package-data@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-4.0.1.tgz#b46b24e0616d06cadf9d5718b29b6d445a82a62c" + integrity sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg== + dependencies: + hosted-git-info "^5.0.0" + is-core-module "^2.8.1" + semver "^7.3.5" + validate-npm-package-license "^3.0.4" + +normalize-path@^3.0.0, normalize-path@~3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-3.0.0.tgz#0dcd69ff23a1c9b11fd0978316644a0388216a65" + integrity sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA== + +normalize-range@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/normalize-range/-/normalize-range-0.1.2.tgz#2d10c06bdfd312ea9777695a4d28439456b75942" + integrity sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA== + +npm-bundled@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.1.2.tgz#944c78789bd739035b70baa2ca5cc32b8d860bc1" + integrity sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ== + dependencies: + npm-normalize-package-bin "^1.0.1" + +npm-bundled@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-2.0.1.tgz#94113f7eb342cd7a67de1e789f896b04d2c600f4" + integrity sha512-gZLxXdjEzE/+mOstGDqR6b0EkhJ+kM6fxM6vUuckuctuVPh80Q6pw/rSZj9s4Gex9GxWtIicO1pc8DB9KZWudw== + dependencies: + npm-normalize-package-bin "^2.0.0" + +npm-install-checks@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/npm-install-checks/-/npm-install-checks-5.0.0.tgz#5ff27d209a4e3542b8ac6b0c1db6063506248234" + integrity sha512-65lUsMI8ztHCxFz5ckCEC44DRvEGdZX5usQFriauxHEwt7upv1FKaQEmAtU0YnOAdwuNWCmk64xYiQABNrEyLA== + dependencies: + semver "^7.1.1" + +npm-normalize-package-bin@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz#6e79a41f23fd235c0623218228da7d9c23b8f6e2" + integrity sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA== + +npm-normalize-package-bin@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/npm-normalize-package-bin/-/npm-normalize-package-bin-2.0.0.tgz#9447a1adaaf89d8ad0abe24c6c84ad614a675fff" + integrity sha512-awzfKUO7v0FscrSpRoogyNm0sajikhBWpU0QMrW09AMi9n1PoKU6WaIqUzuJSQnpciZZmJ/jMZ2Egfmb/9LiWQ== + +npm-package-arg@9.1.0: + version "9.1.0" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.0.tgz#a60e9f1e7c03e4e3e4e994ea87fff8b90b522987" + integrity sha512-4J0GL+u2Nh6OnhvUKXRr2ZMG4lR8qtLp+kv7UiV00Y+nGiSxtttCyIRHCt5L5BNkXQld/RceYItau3MDOoGiBw== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +npm-package-arg@^9.0.0, npm-package-arg@^9.0.1: + version "9.1.2" + resolved "https://registry.yarnpkg.com/npm-package-arg/-/npm-package-arg-9.1.2.tgz#fc8acecb00235f42270dda446f36926ddd9ac2bc" + integrity sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg== + dependencies: + hosted-git-info "^5.0.0" + proc-log "^2.0.1" + semver "^7.3.5" + validate-npm-package-name "^4.0.0" + +npm-packlist@^5.1.0: + version "5.1.3" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-5.1.3.tgz#69d253e6fd664b9058b85005905012e00e69274b" + integrity sha512-263/0NGrn32YFYi4J533qzrQ/krmmrWwhKkzwTuM4f/07ug51odoaNjUexxO4vxlzURHcmYMH1QjvHjsNDKLVg== + dependencies: + glob "^8.0.1" + ignore-walk "^5.0.1" + npm-bundled "^2.0.0" + npm-normalize-package-bin "^2.0.0" + +npm-pick-manifest@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.1.tgz#76dda30a7cd6b99be822217a935c2f5eacdaca4c" + integrity sha512-IA8+tuv8KujbsbLQvselW2XQgmXWS47t3CB0ZrzsRZ82DbDfkcFunOaPm4X7qNuhMfq+FmV7hQT4iFVpHqV7mg== + dependencies: + npm-install-checks "^5.0.0" + npm-normalize-package-bin "^1.0.1" + npm-package-arg "^9.0.0" + semver "^7.3.5" + +npm-pick-manifest@^7.0.0: + version "7.0.2" + resolved "https://registry.yarnpkg.com/npm-pick-manifest/-/npm-pick-manifest-7.0.2.tgz#1d372b4e7ea7c6712316c0e99388a73ed3496e84" + integrity sha512-gk37SyRmlIjvTfcYl6RzDbSmS9Y4TOBXfsPnoYqTHARNgWbyDiCSMLUpmALDj4jjcTZpURiEfsSHJj9k7EV4Rw== + dependencies: + npm-install-checks "^5.0.0" + npm-normalize-package-bin "^2.0.0" + npm-package-arg "^9.0.0" + semver "^7.3.5" + +npm-registry-fetch@^13.0.1: + version "13.3.1" + resolved "https://registry.yarnpkg.com/npm-registry-fetch/-/npm-registry-fetch-13.3.1.tgz#bb078b5fa6c52774116ae501ba1af2a33166af7e" + integrity sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw== + dependencies: + make-fetch-happen "^10.0.6" + minipass "^3.1.6" + minipass-fetch "^2.0.3" + minipass-json-stream "^1.0.1" + minizlib "^2.1.2" + npm-package-arg "^9.0.1" + proc-log "^2.0.0" + +npm-run-path@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-4.0.1.tgz#b7ecd1e5ed53da8e37a55e1c2269e0b97ed748ea" + integrity sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw== + dependencies: + path-key "^3.0.0" + +npmlog@^6.0.0: + version "6.0.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-6.0.2.tgz#c8166017a42f2dea92d6453168dd865186a70830" + integrity sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg== + dependencies: + are-we-there-yet "^3.0.0" + console-control-strings "^1.1.0" + gauge "^4.0.3" + set-blocking "^2.0.0" + +nth-check@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d" + integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w== + dependencies: + boolbase "^1.0.0" + +nwsapi@^2.2.0: + version "2.2.20" + resolved "https://registry.yarnpkg.com/nwsapi/-/nwsapi-2.2.20.tgz#22e53253c61e7b0e7e93cef42c891154bcca11ef" + integrity sha512-/ieB+mDe4MrrKMT8z+mQL8klXydZWGR5Dowt4RAGKbJ3kIGEx3X4ljUo+6V73IXtUPWgfOlU5B9MlGxFO5T+cA== + +oauth-sign@~0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" + integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== + +object-assign@^4, object-assign@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.13.3, object-inspect@^1.13.4: + version "1.13.4" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213" + integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew== + +object-is@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07" + integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + +object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object.assign@^4.1.4, object.assign@^4.1.7: + version "4.1.7" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d" + integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + has-symbols "^1.1.0" + object-keys "^1.1.1" + +object.fromentries@^2.0.8: + version "2.0.8" + resolved "https://registry.yarnpkg.com/object.fromentries/-/object.fromentries-2.0.8.tgz#f7195d8a9b97bd95cbc1999ea939ecd1a2b00c65" + integrity sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + es-object-atoms "^1.0.0" + +object.groupby@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/object.groupby/-/object.groupby-1.0.3.tgz#9b125c36238129f6f7b61954a1e7176148d5002e" + integrity sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-abstract "^1.23.2" + +object.values@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.2.1.tgz#deed520a50809ff7f75a7cfd4bc64c7a038c6216" + integrity sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.3" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +obuf@^1.0.0, obuf@^1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/obuf/-/obuf-1.1.2.tgz#09bea3343d41859ebd446292d11c9d4db619084e" + integrity sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg== + +on-finished@2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.4.1.tgz#58c8c44116e54845ad57f14ab10b03533184ac3f" + integrity sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg== + dependencies: + ee-first "1.1.1" + +on-finished@~2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/on-finished/-/on-finished-2.3.0.tgz#20f1336481b083cd75337992a16971aa2d906947" + integrity sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww== + dependencies: + ee-first "1.1.1" + +on-headers@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.1.0.tgz#59da4f91c45f5f989c6e4bcedc5a3b0aed70ff65" + integrity sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A== + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w== + dependencies: + wrappy "1" + +onetime@^5.1.0, onetime@^5.1.2: + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== + dependencies: + mimic-fn "^2.1.0" + +open@8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.0.tgz#345321ae18f8138f82565a910fdc6b39e8c244f8" + integrity sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +open@^8.0.9: + version "8.4.2" + resolved "https://registry.yarnpkg.com/open/-/open-8.4.2.tgz#5b5ffe2a8f793dcd2aad73e550cb87b59cb084f9" + integrity sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ== + dependencies: + define-lazy-prop "^2.0.0" + is-docker "^2.1.1" + is-wsl "^2.2.0" + +optionator@^0.9.3: + version "0.9.4" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.4.tgz#7ea1c1a5d91d764fb282139c88fe11e182a3a734" + integrity sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.5" + +ora@5.4.1, ora@^5.4.1: + version "5.4.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-5.4.1.tgz#1b2678426af4ac4a509008e5e4ac9e9959db9e18" + integrity sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ== + dependencies: + bl "^4.1.0" + chalk "^4.1.0" + cli-cursor "^3.1.0" + cli-spinners "^2.5.0" + is-interactive "^1.0.0" + is-unicode-supported "^0.1.0" + log-symbols "^4.1.0" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + +os-tmpdir@~1.0.1, os-tmpdir@~1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g== + +own-keys@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358" + integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg== + dependencies: + get-intrinsic "^1.2.6" + object-keys "^1.1.1" + safe-push-apply "^1.0.0" + +p-limit@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.0.0" + +p-limit@^3.0.2, p-limit@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-retry@^4.5.0: + version "4.6.2" + resolved "https://registry.yarnpkg.com/p-retry/-/p-retry-4.6.2.tgz#9baae7184057edd4e17231cee04264106e092a16" + integrity sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ== + dependencies: + "@types/retry" "0.12.0" + retry "^0.13.1" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +pacote@13.6.2: + version "13.6.2" + resolved "https://registry.yarnpkg.com/pacote/-/pacote-13.6.2.tgz#0d444ba3618ab3e5cd330b451c22967bbd0ca48a" + integrity sha512-Gu8fU3GsvOPkak2CkbojR7vjs3k3P9cA6uazKTHdsdV0gpCEQq2opelnEv30KRQWgVzP5Vd/5umjcedma3MKtg== + dependencies: + "@npmcli/git" "^3.0.0" + "@npmcli/installed-package-contents" "^1.0.7" + "@npmcli/promise-spawn" "^3.0.0" + "@npmcli/run-script" "^4.1.0" + cacache "^16.0.0" + chownr "^2.0.0" + fs-minipass "^2.1.0" + infer-owner "^1.0.4" + minipass "^3.1.6" + mkdirp "^1.0.4" + npm-package-arg "^9.0.0" + npm-packlist "^5.1.0" + npm-pick-manifest "^7.0.0" + npm-registry-fetch "^13.0.1" + proc-log "^2.0.0" + promise-retry "^2.0.1" + read-package-json "^5.0.0" + read-package-json-fast "^2.0.3" + rimraf "^3.0.2" + ssri "^9.0.0" + tar "^6.1.11" + +pako@^1.0.3, pako@~1.0.2: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^5.0.0, parse-json@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + 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" + +parse-node-version@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse5-html-rewriting-stream@6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz#de1820559317ab4e451ea72dba05fddfd914480b" + integrity sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg== + dependencies: + parse5 "^6.0.1" + parse5-sax-parser "^6.0.1" + +parse5-htmlparser2-tree-adapter@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz#2cdf9ad823321140370d4dbf5d3e92c7c8ddc6e6" + integrity sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA== + dependencies: + parse5 "^6.0.1" + +parse5-sax-parser@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz#98b4d366b5b266a7cd90b4b58906667af882daba" + integrity sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg== + dependencies: + parse5 "^6.0.1" + +parse5@6.0.1, parse5@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-6.0.1.tgz#e1a1c085c569b3dc08321184f19a39cc27f7c30b" + integrity sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw== + +parse5@^5.0.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== + +parseurl@~1.3.2, parseurl@~1.3.3: + version "1.3.3" + resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" + integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg== + +path-is-inside@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" + integrity sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w== + +path-key@^3.0.0, path-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-to-regexp@0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-0.1.12.tgz#d5e1a12e478a976d432ef3c58d534b9923164bb7" + integrity sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ== + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + +performance-now@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" + integrity sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow== + +picocolors@^1.0.0, picocolors@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b" + integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA== + +picomatch@^2.0.4, picomatch@^2.2.1, picomatch@^2.2.3, picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0, pify@^2.3.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog== + +pify@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" + integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw== + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg== + +pirates@^4.0.4: + version "4.0.7" + resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.7.tgz#643b4a18c4257c8a65104b73f3049ce9a0a15e22" + integrity sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA== + +piscina@3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/piscina/-/piscina-3.2.0.tgz#f5a1dde0c05567775690cccefe59d9223924d154" + integrity sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA== + dependencies: + eventemitter-asyncresource "^1.0.0" + hdr-histogram-js "^2.0.1" + hdr-histogram-percentiles-obj "^3.0.0" + optionalDependencies: + nice-napi "^1.0.2" + +pkg-dir@^4.1.0, pkg-dir@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +possible-typed-array-names@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae" + integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg== + +postcss-attribute-case-insensitive@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/postcss-attribute-case-insensitive/-/postcss-attribute-case-insensitive-5.0.2.tgz#03d761b24afc04c09e757e92ff53716ae8ea2741" + integrity sha512-XIidXV8fDr0kKt28vqki84fRK8VW8eTuIa4PChv2MqKuT6C9UjmSKzen6KaWhWEoYvwxFCa7n/tC1SZ3tyq4SQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-clamp@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/postcss-clamp/-/postcss-clamp-4.1.0.tgz#7263e95abadd8c2ba1bd911b0b5a5c9c93e02363" + integrity sha512-ry4b1Llo/9zz+PKC+030KUnPITTJAHeOwjfAyyB60eT0AorGLdzp52s31OsPRHRf8NchkgFoG2y6fCfn1IV1Ow== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-functional-notation@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/postcss-color-functional-notation/-/postcss-color-functional-notation-4.2.4.tgz#21a909e8d7454d3612d1659e471ce4696f28caec" + integrity sha512-2yrTAUZUab9s6CpxkxC4rVgFEVaR6/2Pipvi6qcgvnYiVqZcbDHEoBDhrXzyb7Efh2CCfHQNtcqWcIruDTIUeg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-hex-alpha@^8.0.4: + version "8.0.4" + resolved "https://registry.yarnpkg.com/postcss-color-hex-alpha/-/postcss-color-hex-alpha-8.0.4.tgz#c66e2980f2fbc1a63f5b079663340ce8b55f25a5" + integrity sha512-nLo2DCRC9eE4w2JmuKgVA3fGL3d01kGq752pVALF68qpGLmx2Qrk91QTKkdUqqp45T1K1XV8IhQpcu1hoAQflQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-color-rebeccapurple@^7.1.1: + version "7.1.1" + resolved "https://registry.yarnpkg.com/postcss-color-rebeccapurple/-/postcss-color-rebeccapurple-7.1.1.tgz#63fdab91d878ebc4dd4b7c02619a0c3d6a56ced0" + integrity sha512-pGxkuVEInwLHgkNxUc4sdg4g3py7zUeCQ9sMfwyHAT+Ezk8a4OaaVZ8lIY5+oNqA/BXXgLyXv0+5wHP68R79hg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-media@^8.0.2: + version "8.0.2" + resolved "https://registry.yarnpkg.com/postcss-custom-media/-/postcss-custom-media-8.0.2.tgz#c8f9637edf45fef761b014c024cee013f80529ea" + integrity sha512-7yi25vDAoHAkbhAzX9dHx2yc6ntS4jQvejrNcC+csQJAXjj15e7VcWfMgLqBNAbOvqi5uIa9huOVwdHbf+sKqg== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-properties@^12.1.8: + version "12.1.11" + resolved "https://registry.yarnpkg.com/postcss-custom-properties/-/postcss-custom-properties-12.1.11.tgz#d14bb9b3989ac4d40aaa0e110b43be67ac7845cf" + integrity sha512-0IDJYhgU8xDv1KY6+VgUwuQkVtmYzRwu+dMjnmdMafXYv86SWqfxkc7qdDvWS38vsjaEtv8e0vGOUQrAiMBLpQ== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-custom-selectors@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/postcss-custom-selectors/-/postcss-custom-selectors-6.0.3.tgz#1ab4684d65f30fed175520f82d223db0337239d9" + integrity sha512-fgVkmyiWDwmD3JbpCmB45SvvlCD6z9CG6Ie6Iere22W5aHea6oWa7EM2bpnv2Fj3I94L3VbtvX9KqwSi5aFzSg== + dependencies: + postcss-selector-parser "^6.0.4" + +postcss-dir-pseudo-class@^6.0.5: + version "6.0.5" + resolved "https://registry.yarnpkg.com/postcss-dir-pseudo-class/-/postcss-dir-pseudo-class-6.0.5.tgz#2bf31de5de76added44e0a25ecf60ae9f7c7c26c" + integrity sha512-eqn4m70P031PF7ZQIvSgy9RSJ5uI2171O/OO/zcRNYpJbvaeKFUlar1aJ7rmgiQtbm0FSPsRewjpdS0Oew7MPA== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-double-position-gradients@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/postcss-double-position-gradients/-/postcss-double-position-gradients-3.1.2.tgz#b96318fdb477be95997e86edd29c6e3557a49b91" + integrity sha512-GX+FuE/uBR6eskOK+4vkXgT6pDkexLokPaz/AbJna9s5Kzp/yl488pKPjhy0obB475ovfT1Wv8ho7U/cHNaRgQ== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-env-function@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/postcss-env-function/-/postcss-env-function-4.0.6.tgz#7b2d24c812f540ed6eda4c81f6090416722a8e7a" + integrity sha512-kpA6FsLra+NqcFnL81TnsU+Z7orGtDTxcOhl6pwXeEq1yFPpRMkCDpHhrz8CFQDr/Wfm0jLiNQ1OsGGPjlqPwA== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-focus-visible@^6.0.4: + version "6.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-visible/-/postcss-focus-visible-6.0.4.tgz#50c9ea9afa0ee657fb75635fabad25e18d76bf9e" + integrity sha512-QcKuUU/dgNsstIK6HELFRT5Y3lbrMLEOwG+A4s5cA+fx3A3y/JTq3X9LaOj3OC3ALH0XqyrgQIgey/MIZ8Wczw== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-focus-within@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-focus-within/-/postcss-focus-within-5.0.4.tgz#5b1d2ec603195f3344b716c0b75f61e44e8d2e20" + integrity sha512-vvjDN++C0mu8jz4af5d52CB184ogg/sSxAFS+oUJQq2SuCe7T5U2iIsVJtsCp2d6R4j0jr5+q3rPkBVZkXD9fQ== + dependencies: + postcss-selector-parser "^6.0.9" + +postcss-font-variant@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-font-variant/-/postcss-font-variant-5.0.0.tgz#efd59b4b7ea8bb06127f2d031bfbb7f24d32fa66" + integrity sha512-1fmkBaCALD72CK2a9i468mA/+tr9/1cBxRRMXOUaZqO43oWPR5imcyPjXwuv7PXbCid4ndlP5zWhidQVVa3hmA== + +postcss-gap-properties@^3.0.5: + version "3.0.5" + resolved "https://registry.yarnpkg.com/postcss-gap-properties/-/postcss-gap-properties-3.0.5.tgz#f7e3cddcf73ee19e94ccf7cb77773f9560aa2fff" + integrity sha512-IuE6gKSdoUNcvkGIqdtjtcMtZIFyXZhmFd5RUlg97iVEvp1BZKV5ngsAjCjrVy+14uhGBQl9tzmi1Qwq4kqVOg== + +postcss-image-set-function@^4.0.7: + version "4.0.7" + resolved "https://registry.yarnpkg.com/postcss-image-set-function/-/postcss-image-set-function-4.0.7.tgz#08353bd756f1cbfb3b6e93182c7829879114481f" + integrity sha512-9T2r9rsvYzm5ndsBE8WgtrMlIT7VbtTfE7b3BQnudUqnBcBo7L758oc+o+pdj/dUV0l5wjwSdjeOH2DZtfv8qw== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-import@15.0.0: + version "15.0.0" + resolved "https://registry.yarnpkg.com/postcss-import/-/postcss-import-15.0.0.tgz#0b66c25fdd9c0d19576e63c803cf39e4bad08822" + integrity sha512-Y20shPQ07RitgBGv2zvkEAu9bqvrD77C9axhj/aA1BQj4czape2MdClCExvB27EwYEJdGgKZBpKanb0t1rK2Kg== + dependencies: + postcss-value-parser "^4.0.0" + read-cache "^1.0.0" + resolve "^1.1.7" + +postcss-initial@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/postcss-initial/-/postcss-initial-4.0.1.tgz#529f735f72c5724a0fb30527df6fb7ac54d7de42" + integrity sha512-0ueD7rPqX8Pn1xJIjay0AZeIuDoF+V+VvMt/uOnn+4ezUKhZM/NokDeP6DwMNyIoYByuN/94IQnt5FEkaN59xQ== + +postcss-lab-function@^4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/postcss-lab-function/-/postcss-lab-function-4.2.1.tgz#6fe4c015102ff7cd27d1bd5385582f67ebdbdc98" + integrity sha512-xuXll4isR03CrQsmxyz92LJB2xX9n+pZJ5jE9JgcnmsCammLyKdlzrBin+25dy6wIjfhJpKBAN80gsTlCgRk2w== + dependencies: + "@csstools/postcss-progressive-custom-properties" "^1.1.0" + postcss-value-parser "^4.2.0" + +postcss-loader@7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/postcss-loader/-/postcss-loader-7.0.1.tgz#4c883cc0a1b2bfe2074377b7a74c1cd805684395" + integrity sha512-VRviFEyYlLjctSM93gAZtcJJ/iSkPZ79zWbN/1fSH+NisBByEiVLqpdVDrPLVSi8DX0oJo12kL/GppTBdKVXiQ== + dependencies: + cosmiconfig "^7.0.0" + klona "^2.0.5" + semver "^7.3.7" + +postcss-logical@^5.0.4: + version "5.0.4" + resolved "https://registry.yarnpkg.com/postcss-logical/-/postcss-logical-5.0.4.tgz#ec75b1ee54421acc04d5921576b7d8db6b0e6f73" + integrity sha512-RHXxplCeLh9VjinvMrZONq7im4wjWGlRJAqmAVLXyZaXwfDWP73/oq4NdIp+OZwhQUMj0zjqDfM5Fj7qby+B4g== + +postcss-media-minmax@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/postcss-media-minmax/-/postcss-media-minmax-5.0.0.tgz#7140bddec173e2d6d657edbd8554a55794e2a5b5" + integrity sha512-yDUvFf9QdFZTuCUg0g0uNSHVlJ5X1lSzDZjPSFaiCWvjgsvu8vEVxtahPrLMinIDEEGnx6cBe6iqdx5YWz08wQ== + +postcss-modules-extract-imports@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.1.0.tgz#b4497cb85a9c0c4b5aabeb759bb25e8d89f15002" + integrity sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q== + +postcss-modules-local-by-default@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.2.0.tgz#d150f43837831dae25e4085596e84f6f5d6ec368" + integrity sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw== + dependencies: + icss-utils "^5.0.0" + postcss-selector-parser "^7.0.0" + postcss-value-parser "^4.1.0" + +postcss-modules-scope@^3.0.0: + version "3.2.1" + resolved "https://registry.yarnpkg.com/postcss-modules-scope/-/postcss-modules-scope-3.2.1.tgz#1bbccddcb398f1d7a511e0a2d1d047718af4078c" + integrity sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA== + dependencies: + postcss-selector-parser "^7.0.0" + +postcss-modules-values@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz#d7c5e7e68c3bb3c9b27cbf48ca0bb3ffb4602c9c" + integrity sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ== + dependencies: + icss-utils "^5.0.0" + +postcss-nesting@^10.1.10: + version "10.2.0" + resolved "https://registry.yarnpkg.com/postcss-nesting/-/postcss-nesting-10.2.0.tgz#0b12ce0db8edfd2d8ae0aaf86427370b898890be" + integrity sha512-EwMkYchxiDiKUhlJGzWsD9b2zvq/r2SSubcRrgP+jujMXFzqvANLt16lJANC+5uZ6hjI7lpRmI6O8JIl+8l1KA== + dependencies: + "@csstools/selector-specificity" "^2.0.0" + postcss-selector-parser "^6.0.10" + +postcss-opacity-percentage@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/postcss-opacity-percentage/-/postcss-opacity-percentage-1.1.3.tgz#5b89b35551a556e20c5d23eb5260fbfcf5245da6" + integrity sha512-An6Ba4pHBiDtyVpSLymUUERMo2cU7s+Obz6BTrS+gxkbnSBNKSuD0AVUc+CpBMrpVPKKfoVz0WQCX+Tnst0i4A== + +postcss-overflow-shorthand@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-overflow-shorthand/-/postcss-overflow-shorthand-3.0.4.tgz#7ed6486fec44b76f0eab15aa4866cda5d55d893e" + integrity sha512-otYl/ylHK8Y9bcBnPLo3foYFLL6a6Ak+3EQBPOTR7luMYCOsiVTUk1iLvNf6tVPNGXcoL9Hoz37kpfriRIFb4A== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-page-break@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/postcss-page-break/-/postcss-page-break-3.0.4.tgz#7fbf741c233621622b68d435babfb70dd8c1ee5f" + integrity sha512-1JGu8oCjVXLa9q9rFTo4MbeeA5FMe00/9C7lN4va606Rdb+HkxXtXsmEDrIraQ11fGz/WvKWa8gMuCKkrXpTsQ== + +postcss-place@^7.0.5: + version "7.0.5" + resolved "https://registry.yarnpkg.com/postcss-place/-/postcss-place-7.0.5.tgz#95dbf85fd9656a3a6e60e832b5809914236986c4" + integrity sha512-wR8igaZROA6Z4pv0d+bvVrvGY4GVHihBCBQieXFY3kuSuMyOmEnnfFzHl/tQuqHZkfkIVBEbDvYcFfHmpSet9g== + dependencies: + postcss-value-parser "^4.2.0" + +postcss-preset-env@7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/postcss-preset-env/-/postcss-preset-env-7.8.0.tgz#5bd3ad53b2ef02edd41645d1ffee1ff8a49f24e5" + integrity sha512-leqiqLOellpLKfbHkD06E04P6d9ZQ24mat6hu4NSqun7WG0UhspHR5Myiv/510qouCjoo4+YJtNOqg5xHaFnCA== + dependencies: + "@csstools/postcss-cascade-layers" "^1.0.5" + "@csstools/postcss-color-function" "^1.1.1" + "@csstools/postcss-font-format-keywords" "^1.0.1" + "@csstools/postcss-hwb-function" "^1.0.2" + "@csstools/postcss-ic-unit" "^1.0.1" + "@csstools/postcss-is-pseudo-class" "^2.0.7" + "@csstools/postcss-nested-calc" "^1.0.0" + "@csstools/postcss-normalize-display-values" "^1.0.1" + "@csstools/postcss-oklab-function" "^1.1.1" + "@csstools/postcss-progressive-custom-properties" "^1.3.0" + "@csstools/postcss-stepped-value-functions" "^1.0.1" + "@csstools/postcss-text-decoration-shorthand" "^1.0.0" + "@csstools/postcss-trigonometric-functions" "^1.0.2" + "@csstools/postcss-unset-value" "^1.0.2" + autoprefixer "^10.4.8" + browserslist "^4.21.3" + css-blank-pseudo "^3.0.3" + css-has-pseudo "^3.0.4" + css-prefers-color-scheme "^6.0.3" + cssdb "^7.0.0" + postcss-attribute-case-insensitive "^5.0.2" + postcss-clamp "^4.1.0" + postcss-color-functional-notation "^4.2.4" + postcss-color-hex-alpha "^8.0.4" + postcss-color-rebeccapurple "^7.1.1" + postcss-custom-media "^8.0.2" + postcss-custom-properties "^12.1.8" + postcss-custom-selectors "^6.0.3" + postcss-dir-pseudo-class "^6.0.5" + postcss-double-position-gradients "^3.1.2" + postcss-env-function "^4.0.6" + postcss-focus-visible "^6.0.4" + postcss-focus-within "^5.0.4" + postcss-font-variant "^5.0.0" + postcss-gap-properties "^3.0.5" + postcss-image-set-function "^4.0.7" + postcss-initial "^4.0.1" + postcss-lab-function "^4.2.1" + postcss-logical "^5.0.4" + postcss-media-minmax "^5.0.0" + postcss-nesting "^10.1.10" + postcss-opacity-percentage "^1.1.2" + postcss-overflow-shorthand "^3.0.4" + postcss-page-break "^3.0.4" + postcss-place "^7.0.5" + postcss-pseudo-class-any-link "^7.1.6" + postcss-replace-overflow-wrap "^4.0.0" + postcss-selector-not "^6.0.1" + postcss-value-parser "^4.2.0" + +postcss-pseudo-class-any-link@^7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/postcss-pseudo-class-any-link/-/postcss-pseudo-class-any-link-7.1.6.tgz#2693b221902da772c278def85a4d9a64b6e617ab" + integrity sha512-9sCtZkO6f/5ML9WcTLcIyV1yz9D1rf0tWc+ulKcvV30s0iZKS/ONyETvoWsr6vnrmW+X+KmuK3gV/w5EWnT37w== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-replace-overflow-wrap@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/postcss-replace-overflow-wrap/-/postcss-replace-overflow-wrap-4.0.0.tgz#d2df6bed10b477bf9c52fab28c568b4b29ca4319" + integrity sha512-KmF7SBPphT4gPPcKZc7aDkweHiKEEO8cla/GjcBK+ckKxiZslIu3C4GCRW3DNfL0o7yW7kMQu9xlZ1kXRXLXtw== + +postcss-selector-not@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/postcss-selector-not/-/postcss-selector-not-6.0.1.tgz#8f0a709bf7d4b45222793fc34409be407537556d" + integrity sha512-1i9affjAe9xu/y9uqWH+tD4r6/hDaXJruk8xn2x1vzxC2U3J3LKO3zJW4CyxlNhA56pADJ/djpEwpH1RClI2rQ== + dependencies: + postcss-selector-parser "^6.0.10" + +postcss-selector-parser@^6.0.10, postcss-selector-parser@^6.0.4, postcss-selector-parser@^6.0.9: + version "6.1.2" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz#27ecb41fb0e3b6ba7a1ec84fff347f734c7929de" + integrity sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-selector-parser@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz#4d6af97eba65d73bc4d84bcb343e865d7dd16262" + integrity sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA== + dependencies: + cssesc "^3.0.0" + util-deprecate "^1.0.2" + +postcss-value-parser@^4.0.0, postcss-value-parser@^4.1.0, postcss-value-parser@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz#723c09920836ba6d3e5af019f92bc0971c02e514" + integrity sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ== + +postcss@8.4.16: + version "8.4.16" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.16.tgz#33a1d675fac39941f5f445db0de4db2b6e01d43c" + integrity sha512-ipHE1XBvKzm5xI7hiHCZJCSugxvsdq2mPnsq5+UF+VHCjiBvtDrlxJfMBToWaP9D5XlgNmcFGqoHmUn0EYEaRQ== + dependencies: + nanoid "^3.3.4" + picocolors "^1.0.0" + source-map-js "^1.0.2" + +postcss@^8.2.14, postcss@^8.3.7, postcss@^8.4.7: + version "8.5.6" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c" + integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg== + dependencies: + nanoid "^3.3.11" + picocolors "^1.1.1" + source-map-js "^1.2.1" + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +prettier-eslint@^15.0.1: + version "15.0.1" + resolved "https://registry.yarnpkg.com/prettier-eslint/-/prettier-eslint-15.0.1.tgz#2543a43e9acec2a9767ad6458165ce81f353db9c" + integrity sha512-mGOWVHixSvpZWARqSDXbdtTL54mMBxc5oQYQ6RAqy8jecuNJBgN3t9E5a81G66F8x8fsKNiR1HWaBV66MJDOpg== + dependencies: + "@types/eslint" "^8.4.2" + "@types/prettier" "^2.6.0" + "@typescript-eslint/parser" "^5.10.0" + common-tags "^1.4.0" + dlv "^1.1.0" + eslint "^8.7.0" + indent-string "^4.0.0" + lodash.merge "^4.6.0" + loglevel-colored-level-prefix "^1.0.0" + prettier "^2.5.1" + pretty-format "^23.0.1" + require-relative "^0.8.7" + typescript "^4.5.4" + vue-eslint-parser "^8.0.1" + +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.5.1, prettier@^2.8.1: + version "2.8.8" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.8.8.tgz#e8c5d7e98a4305ffe3de2e1fc4aca1a71c28b1da" + integrity sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q== + +pretty-bytes@^5.3.0: + version "5.6.0" + resolved "https://registry.yarnpkg.com/pretty-bytes/-/pretty-bytes-5.6.0.tgz#356256f643804773c82f64723fe78c92c62beaeb" + integrity sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg== + +pretty-format@^23.0.1: + version "23.6.0" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-23.6.0.tgz#5eaac8eeb6b33b987b7fe6097ea6a8a146ab5760" + integrity sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw== + dependencies: + ansi-regex "^3.0.0" + ansi-styles "^3.2.0" + +pretty-format@^27.0.0, pretty-format@^27.5.1: + version "27.5.1" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-27.5.1.tgz#2181879fdea51a7a5851fb39d920faa63f01d88e" + integrity sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ== + dependencies: + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^17.0.1" + +pretty-format@^28.0.0, pretty-format@^28.1.3: + version "28.1.3" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-28.1.3.tgz#c9fba8cedf99ce50963a11b27d982a9ae90970d5" + integrity sha512-8gFb/To0OmxHR9+ZTb14Df2vNxdGCX8g1xWGUTqUw5TiZvcQf5sHKObd5UcPyLLyowNwDAMTF3XWOG1B6mxl1Q== + dependencies: + "@jest/schemas" "^28.1.3" + ansi-regex "^5.0.1" + ansi-styles "^5.0.0" + react-is "^18.0.0" + +proc-log@^2.0.0, proc-log@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/proc-log/-/proc-log-2.0.1.tgz#8f3f69a1f608de27878f91f5c688b225391cb685" + integrity sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw== + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +promise-inflight@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/promise-inflight/-/promise-inflight-1.0.1.tgz#98472870bf228132fcbdd868129bad12c3c029e3" + integrity sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g== + +promise-retry@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/promise-retry/-/promise-retry-2.0.1.tgz#ff747a13620ab57ba688f5fc67855410c370da22" + integrity sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g== + dependencies: + err-code "^2.0.2" + retry "^0.12.0" + +prompts@^2.0.1: + version "2.4.2" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.2.tgz#7b57e73b3a48029ad10ebd44f74b01722a4cb069" + integrity sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q== + dependencies: + kleur "^3.0.3" + sisteransi "^1.0.5" + +protractor@~7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/protractor/-/protractor-7.0.0.tgz#c3e263608bd72e2c2dc802b11a772711a4792d03" + integrity sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw== + dependencies: + "@types/q" "^0.0.32" + "@types/selenium-webdriver" "^3.0.0" + blocking-proxy "^1.0.0" + browserstack "^1.5.1" + chalk "^1.1.3" + glob "^7.0.3" + jasmine "2.8.0" + jasminewd2 "^2.1.0" + q "1.4.1" + saucelabs "^1.5.0" + selenium-webdriver "3.6.0" + source-map-support "~0.4.0" + webdriver-js-extender "2.1.0" + webdriver-manager "^12.1.7" + yargs "^15.3.1" + +proxy-addr@~2.0.7: + version "2.0.7" + resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.7.tgz#f19fe69ceab311eeb94b42e70e8c2070f9ba1025" + integrity sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg== + dependencies: + forwarded "0.2.0" + ipaddr.js "1.9.1" + +prr@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/prr/-/prr-1.0.1.tgz#d3fc114ba06995a45ec6893f484ceb1d78f5f476" + integrity sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw== + +psl@^1.1.28, psl@^1.1.33: + version "1.15.0" + resolved "https://registry.yarnpkg.com/psl/-/psl-1.15.0.tgz#bdace31896f1d97cec6a79e8224898ce93d974c6" + integrity sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w== + dependencies: + punycode "^2.3.1" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + +punycode@^2.1.0, punycode@^2.1.1, punycode@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.1.tgz#027422e2faec0b25e1549c3e1bd8309b9133b6e5" + integrity sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg== + +q@1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.4.1.tgz#55705bcd93c5f3673530c2c2cbc0c2b3addc286e" + integrity sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg== + +q@^1.4.1: + version "1.5.1" + resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" + integrity sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw== + +qjobs@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/qjobs/-/qjobs-1.2.0.tgz#c45e9c61800bd087ef88d7e256423bdd49e5d071" + integrity sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg== + +qs@6.13.0: + version "6.13.0" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.13.0.tgz#6ca3bd58439f7e245655798997787b0d88a51906" + integrity sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg== + dependencies: + side-channel "^1.0.6" + +qs@~6.5.2: + version "6.5.3" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.3.tgz#3aeeffc91967ef6e35c0e488ef46fb296ab76aad" + integrity sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA== + +querystringify@^2.1.1: + version "2.2.0" + resolved "https://registry.yarnpkg.com/querystringify/-/querystringify-2.2.0.tgz#3345941b4153cb9d082d8eee4cda2016a9aef7f6" + integrity sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ== + +queue-microtask@^1.2.2: + version "1.2.3" + resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" + integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +range-parser@^1.2.1, range-parser@~1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" + integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== + +raw-body@2.5.2: + version "2.5.2" + resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.5.2.tgz#99febd83b90e08975087e8f1f9419a149366b68a" + integrity sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA== + dependencies: + bytes "3.1.2" + http-errors "2.0.0" + iconv-lite "0.4.24" + unpipe "1.0.0" + +react-is@^17.0.1: + version "17.0.2" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.2.tgz#e691d4a8e9c789365655539ab372762b0efb54f0" + integrity sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w== + +react-is@^18.0.0: + version "18.3.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-18.3.1.tgz#e83557dc12eae63a99e003a46388b1dcbb44db7e" + integrity sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg== + +read-cache@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/read-cache/-/read-cache-1.0.0.tgz#e664ef31161166c9751cdbe8dbcf86b5fb58f774" + integrity sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA== + dependencies: + pify "^2.3.0" + +read-package-json-fast@^2.0.3: + version "2.0.3" + resolved "https://registry.yarnpkg.com/read-package-json-fast/-/read-package-json-fast-2.0.3.tgz#323ca529630da82cb34b36cc0b996693c98c2b83" + integrity sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ== + dependencies: + json-parse-even-better-errors "^2.3.0" + npm-normalize-package-bin "^1.0.1" + +read-package-json@^5.0.0: + version "5.0.2" + resolved "https://registry.yarnpkg.com/read-package-json/-/read-package-json-5.0.2.tgz#b8779ccfd169f523b67208a89cc912e3f663f3fa" + integrity sha512-BSzugrt4kQ/Z0krro8zhTwV1Kd79ue25IhNN/VtHFy1mG/6Tluyi+msc0UpwaoQzxSHa28mntAjIZY6kEgfR9Q== + dependencies: + glob "^8.0.1" + json-parse-even-better-errors "^2.3.1" + normalize-package-data "^4.0.0" + npm-normalize-package-bin "^2.0.0" + +readable-stream@^2.0.1, readable-stream@~2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.8.tgz#91125e8042bba1b9887f49345f6277027ce8be9b" + integrity sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA== + 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" + +readable-stream@^3.0.6, readable-stream@^3.4.0, readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +reflect-metadata@^0.1.2: + version "0.1.14" + resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.14.tgz#24cf721fe60677146bb77eeb0e1f9dece3d65859" + integrity sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A== + +reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9" + integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-abstract "^1.23.9" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + get-intrinsic "^1.2.7" + get-proto "^1.0.1" + which-builtin-type "^1.2.1" + +regenerate-unicode-properties@^10.2.0: + version "10.2.0" + resolved "https://registry.yarnpkg.com/regenerate-unicode-properties/-/regenerate-unicode-properties-10.2.0.tgz#626e39df8c372338ea9b8028d1f99dc3fd9c3db0" + integrity sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA== + dependencies: + regenerate "^1.4.2" + +regenerate@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/regenerate/-/regenerate-1.4.2.tgz#b9346d8827e8f5a32f7ba29637d398b69014848a" + integrity sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A== + +regenerator-runtime@0.13.9: + version "0.13.9" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz#8925742a98ffd90814988d7566ad30ca3b263b52" + integrity sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA== + +regenerator-runtime@^0.13.4: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + +regex-parser@^2.2.11: + version "2.3.1" + resolved "https://registry.yarnpkg.com/regex-parser/-/regex-parser-2.3.1.tgz#ee3f70e50bdd81a221d505242cb9a9c275a2ad91" + integrity sha512-yXLRqatcCuKtVHsWrNg0JL3l1zGfdXeEvDa0bdu4tCDQw0RpMDZsqbkyRTUnKMR0tXF627V2oEWjBEaEdqTwtQ== + +regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19" + integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA== + dependencies: + call-bind "^1.0.8" + define-properties "^1.2.1" + es-errors "^1.3.0" + get-proto "^1.0.1" + gopd "^1.2.0" + set-function-name "^2.0.2" + +regexpp@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +regexpu-core@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/regexpu-core/-/regexpu-core-6.2.0.tgz#0e5190d79e542bf294955dccabae04d3c7d53826" + integrity sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA== + dependencies: + regenerate "^1.4.2" + regenerate-unicode-properties "^10.2.0" + regjsgen "^0.8.0" + regjsparser "^0.12.0" + unicode-match-property-ecmascript "^2.0.0" + unicode-match-property-value-ecmascript "^2.1.0" + +regjsgen@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/regjsgen/-/regjsgen-0.8.0.tgz#df23ff26e0c5b300a6470cad160a9d090c3a37ab" + integrity sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q== + +regjsparser@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/regjsparser/-/regjsparser-0.12.0.tgz#0e846df6c6530586429377de56e0475583b088dc" + integrity sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ== + dependencies: + jsesc "~3.0.2" + +request@^2.87.0: + version "2.88.2" + resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" + integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q== + +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +require-relative@^0.8.7: + version "0.8.7" + resolved "https://registry.yarnpkg.com/require-relative/-/require-relative-0.8.7.tgz#7999539fc9e047a37928fa196f8e1563dabd36de" + integrity sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg== + +requires-port@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/requires-port/-/requires-port-1.0.0.tgz#925d2601d39ac485e091cf0da5c6e694dc3dcaff" + integrity sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ== + +resolve-cwd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/resolve-cwd/-/resolve-cwd-3.0.0.tgz#0f0075f1bb2544766cf73ba6a6e2adfebcb13f2d" + integrity sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg== + dependencies: + resolve-from "^5.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +resolve-url-loader@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz#ee3142fb1f1e0d9db9524d539cfa166e9314f795" + integrity sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg== + dependencies: + adjust-sourcemap-loader "^4.0.0" + convert-source-map "^1.7.0" + loader-utils "^2.0.0" + postcss "^8.2.14" + source-map "0.6.1" + +resolve.exports@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/resolve.exports/-/resolve.exports-1.1.1.tgz#05cfd5b3edf641571fd46fa608b610dda9ead999" + integrity sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ== + +resolve@1.22.1: + version "1.22.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.1.tgz#27cb2ebb53f91abb49470a928bba7558066ac177" + integrity sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw== + dependencies: + is-core-module "^2.9.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +resolve@^1.1.7, resolve@^1.14.2, resolve@^1.20.0, resolve@^1.22.4, resolve@^1.3.3: + version "1.22.10" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.22.10.tgz#b663e83ffb09bbf2386944736baae803029b8b39" + integrity sha512-NPRy+/ncIMeDlTAsuqwKIiferiawhefFJtkNSW0qZJEqMEb+qBt/77B/jGeeek+F0uOeN05CDa6HXbbIgtVX4w== + dependencies: + is-core-module "^2.16.0" + path-parse "^1.0.7" + supports-preserve-symlinks-flag "^1.0.0" + +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + +retry@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.12.0.tgz#1b42a6266a21f07421d1b0b54b7dc167b01c013b" + integrity sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow== + +retry@^0.13.1: + version "0.13.1" + resolved "https://registry.yarnpkg.com/retry/-/retry-0.13.1.tgz#185b1587acf67919d63b357349e03537b2484658" + integrity sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg== + +reusify@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f" + integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw== + +rfdc@^1.3.0: + version "1.4.1" + resolved "https://registry.yarnpkg.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca" + integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA== + +rimraf@^2.2.8, rimraf@^2.5.2, rimraf@^2.5.4, rimraf@^2.6.3: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +run-async@^2.4.0: + version "2.4.1" + resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" + integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== + +run-parallel@^1.1.9: + version "1.2.0" + resolved "https://registry.yarnpkg.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee" + integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA== + dependencies: + queue-microtask "^1.2.2" + +rxjs@6.5.5: + version "6.5.5" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.5.5.tgz#c5c884e3094c8cfee31bf27eb87e54ccfc87f9ec" + integrity sha512-WfQI+1gohdf0Dai/Bbmk5L5ItH5tYqm3ki2c5GdWhKjalzjg93N3avFjVStyZZz+A2Em+ZxKH5bNghw9UeylGQ== + dependencies: + tslib "^1.9.0" + +rxjs@6.6.7, rxjs@^6.5.3: + version "6.6.7" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.7.tgz#90ac018acabf491bf65044235d5863c4dab804c9" + integrity sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ== + dependencies: + tslib "^1.9.0" + +rxjs@^7.5.5: + version "7.8.2" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b" + integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA== + dependencies: + tslib "^2.1.0" + +safe-array-concat@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3" + integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + get-intrinsic "^1.2.6" + has-symbols "^1.1.0" + isarray "^2.0.5" + +safe-buffer@5.2.1, safe-buffer@>=5.1.0, safe-buffer@^5.0.1, safe-buffer@^5.1.0, safe-buffer@^5.1.2, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-push-apply@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5" + integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA== + dependencies: + es-errors "^1.3.0" + isarray "^2.0.5" + +safe-regex-test@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1" + integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + is-regex "^1.2.1" + +"safer-buffer@>= 2.1.2 < 3", "safer-buffer@>= 2.1.2 < 3.0.0", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sass-loader@13.0.2: + version "13.0.2" + resolved "https://registry.yarnpkg.com/sass-loader/-/sass-loader-13.0.2.tgz#e81a909048e06520e9f2ff25113a801065adb3fe" + integrity sha512-BbiqbVmbfJaWVeOOAu2o7DhYWtcNmTfvroVgFXa6k2hHheMxNAeDHLNoDy/Q5aoaVlz0LH+MbMktKwm9vN/j8Q== + dependencies: + klona "^2.0.4" + neo-async "^2.6.2" + +sass@1.54.4: + version "1.54.4" + resolved "https://registry.yarnpkg.com/sass/-/sass-1.54.4.tgz#803ff2fef5525f1dd01670c3915b4b68b6cba72d" + integrity sha512-3tmF16yvnBwtlPrNBHw/H907j8MlOX8aTBnlNX1yrKx24RKcJGPyLhFUwkoKBKesR3unP93/2z14Ll8NicwQUA== + dependencies: + chokidar ">=3.0.0 <4.0.0" + immutable "^4.0.0" + source-map-js ">=0.6.2 <2.0.0" + +saucelabs@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/saucelabs/-/saucelabs-1.5.0.tgz#9405a73c360d449b232839919a86c396d379fd9d" + integrity sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ== + dependencies: + https-proxy-agent "^2.2.1" + +sax@>=0.6.0, sax@^1.2.4: + version "1.4.1" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.4.1.tgz#44cc8988377f126304d3b3fc1010c733b929ef0f" + integrity sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg== + +saxes@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== + dependencies: + xmlchars "^2.2.0" + +schema-utils@^2.6.5: + version "2.7.1" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-2.7.1.tgz#1ca4f32d1b24c590c203b8e7a50bf0ea4cd394d7" + integrity sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg== + dependencies: + "@types/json-schema" "^7.0.5" + ajv "^6.12.4" + ajv-keywords "^3.5.2" + +schema-utils@^3.1.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-3.3.0.tgz#f50a88877c3c01652a15b622ae9e9795df7a60fe" + integrity sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg== + dependencies: + "@types/json-schema" "^7.0.8" + ajv "^6.12.5" + ajv-keywords "^3.5.2" + +schema-utils@^4.0.0, schema-utils@^4.3.0: + version "4.3.2" + resolved "https://registry.yarnpkg.com/schema-utils/-/schema-utils-4.3.2.tgz#0c10878bf4a73fd2b1dfd14b9462b26788c806ae" + integrity sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ== + dependencies: + "@types/json-schema" "^7.0.9" + ajv "^8.9.0" + ajv-formats "^2.1.1" + ajv-keywords "^5.1.0" + +select-hose@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/select-hose/-/select-hose-2.0.0.tgz#625d8658f865af43ec962bfc376a37359a4994ca" + integrity sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg== + +selenium-webdriver@3.6.0, selenium-webdriver@^3.0.1: + version "3.6.0" + resolved "https://registry.yarnpkg.com/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz#2ba87a1662c020b8988c981ae62cb2a01298eafc" + integrity sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q== + dependencies: + jszip "^3.1.3" + rimraf "^2.5.4" + tmp "0.0.30" + xml2js "^0.4.17" + +selfsigned@^2.0.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/selfsigned/-/selfsigned-2.4.1.tgz#560d90565442a3ed35b674034cec4e95dceb4ae0" + integrity sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q== + dependencies: + "@types/node-forge" "^1.3.0" + node-forge "^1" + +semver-dsl@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/semver-dsl/-/semver-dsl-1.0.1.tgz#d3678de5555e8a61f629eed025366ae5f27340a0" + integrity sha512-e8BOaTo007E3dMuQQTnPdalbKTABKNS7UxoBIDnwOqRa+QwMrCPjynB8zAlPF6xlqUfdLPPLIJ13hJNmhtq8Ng== + dependencies: + semver "^5.3.0" + +semver@7.3.7: + version "7.3.7" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.7.tgz#12c5b649afdbf9049707796e22a4028814ce523f" + integrity sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g== + dependencies: + lru-cache "^6.0.0" + +semver@7.x, semver@^7.0.0, semver@^7.1.1, semver@^7.3.5, semver@^7.3.7, semver@^7.5.3: + version "7.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.7.2.tgz#67d99fdcd35cec21e6f8b87a7fd515a33f982b58" + integrity sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA== + +semver@^5.3.0, semver@^5.6.0: + version "5.7.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.2.tgz#48d55db737c3287cd4835e17fa13feace1c41ef8" + integrity sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g== + +semver@^6.0.0, semver@^6.1.1, semver@^6.1.2, semver@^6.3.0, semver@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.1.tgz#556d2ef8689146e46dcea4bfdd095f3434dffcb4" + integrity sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA== + +send@0.19.0: + version "0.19.0" + resolved "https://registry.yarnpkg.com/send/-/send-0.19.0.tgz#bbc5a388c8ea6c048967049dbeac0e4a3f09d7f8" + integrity sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw== + dependencies: + debug "2.6.9" + depd "2.0.0" + destroy "1.2.0" + encodeurl "~1.0.2" + escape-html "~1.0.3" + etag "~1.8.1" + fresh "0.5.2" + http-errors "2.0.0" + mime "1.6.0" + ms "2.1.3" + on-finished "2.4.1" + range-parser "~1.2.1" + statuses "2.0.1" + +serialize-javascript@^6.0.0, serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +serve-index@^1.9.1: + version "1.9.1" + resolved "https://registry.yarnpkg.com/serve-index/-/serve-index-1.9.1.tgz#d3768d69b1e7d82e5ce050fff5b453bea12a9239" + integrity sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw== + 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" + +serve-static@1.16.2: + version "1.16.2" + resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.16.2.tgz#b6a5343da47f6bdd2673848bf45754941e803296" + integrity sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw== + dependencies: + encodeurl "~2.0.0" + escape-html "~1.0.3" + parseurl "~1.3.3" + send "0.19.0" + +set-blocking@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw== + +set-function-length@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449" + integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + function-bind "^1.1.2" + get-intrinsic "^1.2.4" + gopd "^1.0.1" + has-property-descriptors "^1.0.2" + +set-function-name@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985" + integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ== + dependencies: + define-data-property "^1.1.4" + es-errors "^1.3.0" + functions-have-names "^1.2.3" + has-property-descriptors "^1.0.2" + +set-proto@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e" + integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw== + dependencies: + dunder-proto "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.0.0" + +setimmediate@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA== + +setprototypeof@1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" + integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== + +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +shallow-clone@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-3.0.1.tgz#8f2981ad92531f55035b01fb230769a40e02efa3" + integrity sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA== + dependencies: + kind-of "^6.0.2" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +side-channel-list@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad" + integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + +side-channel-map@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42" + integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + +side-channel-weakmap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea" + integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A== + dependencies: + call-bound "^1.0.2" + es-errors "^1.3.0" + get-intrinsic "^1.2.5" + object-inspect "^1.13.3" + side-channel-map "^1.0.1" + +side-channel@^1.0.4, side-channel@^1.0.6, side-channel@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9" + integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw== + dependencies: + es-errors "^1.3.0" + object-inspect "^1.13.3" + side-channel-list "^1.0.0" + side-channel-map "^1.0.1" + side-channel-weakmap "^1.0.2" + +signal-exit@^3.0.2, signal-exit@^3.0.3, signal-exit@^3.0.7: + version "3.0.7" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.7.tgz#a9a1767f8af84155114eaabd73f99273c8f59ad9" + integrity sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ== + +sisteransi@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" + integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== + +slash@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" + integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== + +slash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slash/-/slash-4.0.0.tgz#2422372176c4c6c5addb5e2ada885af984b396a7" + integrity sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew== + +smart-buffer@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/smart-buffer/-/smart-buffer-4.2.0.tgz#6e1d71fa4f18c05f7d0ff216dd16a481d0e8d9ae" + integrity sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg== + +socket.io-adapter@~2.5.2: + version "2.5.5" + resolved "https://registry.yarnpkg.com/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz#c7a1f9c703d7756844751b6ff9abfc1780664082" + integrity sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg== + dependencies: + debug "~4.3.4" + ws "~8.17.1" + +socket.io-parser@~4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/socket.io-parser/-/socket.io-parser-4.2.4.tgz#c806966cf7270601e47469ddeec30fbdfda44c83" + integrity sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew== + dependencies: + "@socket.io/component-emitter" "~3.1.0" + debug "~4.3.1" + +socket.io@^4.7.2: + version "4.8.1" + resolved "https://registry.yarnpkg.com/socket.io/-/socket.io-4.8.1.tgz#fa0eaff965cc97fdf4245e8d4794618459f7558a" + integrity sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg== + dependencies: + accepts "~1.3.4" + base64id "~2.0.0" + cors "~2.8.5" + debug "~4.3.2" + engine.io "~6.6.0" + socket.io-adapter "~2.5.2" + socket.io-parser "~4.2.4" + +sockjs-client@^1.1.1: + version "1.6.1" + resolved "https://registry.yarnpkg.com/sockjs-client/-/sockjs-client-1.6.1.tgz#350b8eda42d6d52ddc030c39943364c11dcad806" + integrity sha512-2g0tjOR+fRs0amxENLi/q5TiJTqY+WXFOzb5UwXndlK6TO3U/mirZznpx6w34HVMoc3g7cY24yC/ZMIYnDlfkw== + dependencies: + debug "^3.2.7" + eventsource "^2.0.2" + faye-websocket "^0.11.4" + inherits "^2.0.4" + url-parse "^1.5.10" + +sockjs@^0.3.24: + version "0.3.24" + resolved "https://registry.yarnpkg.com/sockjs/-/sockjs-0.3.24.tgz#c9bc8995f33a111bea0395ec30aa3206bdb5ccce" + integrity sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ== + dependencies: + faye-websocket "^0.11.3" + uuid "^8.3.2" + websocket-driver "^0.7.4" + +socks-proxy-agent@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz#dc069ecf34436621acb41e3efa66ca1b5fed15b6" + integrity sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww== + dependencies: + agent-base "^6.0.2" + debug "^4.3.3" + socks "^2.6.2" + +socks@^2.6.2: + version "2.8.6" + resolved "https://registry.yarnpkg.com/socks/-/socks-2.8.6.tgz#e335486a2552f34f932f0c27d8dbb93f2be867aa" + integrity sha512-pe4Y2yzru68lXCb38aAqRf5gvN8YdjP1lok5o0J7BOHljkyCGKVz7H3vpVIXKD27rj2giOJ7DwVyk/GWrPHDWA== + dependencies: + ip-address "^9.0.5" + smart-buffer "^4.2.0" + +"source-map-js@>=0.6.2 <2.0.0", source-map-js@^1.0.2, source-map-js@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46" + integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA== + +source-map-loader@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/source-map-loader/-/source-map-loader-4.0.0.tgz#bdc6b118bc6c87ee4d8d851f2d4efcc5abdb2ef5" + integrity sha512-i3KVgM3+QPAHNbGavK+VBq03YoJl24m9JWNbLgsjTj8aJzXG9M61bantBTNBt7CNwY2FYf+RJRYJ3pzalKjIrw== + dependencies: + abab "^2.0.6" + iconv-lite "^0.6.3" + source-map-js "^1.0.2" + +source-map-support@0.5.13: + version "0.5.13" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.13.tgz#31b24a9c2e73c2de85066c0feb7d44767ed52932" + integrity sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@0.5.21, source-map-support@^0.5.5, source-map-support@~0.5.20: + version "0.5.21" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.21.tgz#04fe7c7f9e1ed2d662233c28cb2b35b9f63f6e4f" + integrity sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w== + dependencies: + buffer-from "^1.0.0" + source-map "^0.6.0" + +source-map-support@~0.4.0: + version "0.4.18" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.4.18.tgz#0286a6de8be42641338594e97ccea75f0a2c585f" + integrity sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA== + dependencies: + source-map "^0.5.6" + +source-map@0.6.1, source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +source-map@0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.4.tgz#a9bbe705c9d8846f4e08ff6765acf0f1b0898656" + integrity sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA== + +source-map@^0.5.6, source-map@^0.5.7: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ== + +sourcemap-codec@^1.4.8: + version "1.4.8" + resolved "https://registry.yarnpkg.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4" + integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA== + +spdx-correct@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.2.0.tgz#4f5ab0668f0059e34f9c00dce331784a12de4e9c" + integrity sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz#5d607d27fc806f66d7b64a766650fa890f04ed66" + integrity sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.21" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.21.tgz#6d6e980c9df2b6fc905343a3b2d702a6239536c3" + integrity sha512-Bvg/8F5XephndSK3JffaRqdT+gyhfqIPwDHpX80tJrF8QQRYMo8sNMeaZ2Dp5+jhwKnUmIOyFFQfHRkjJm5nXg== + +spdy-transport@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdy-transport/-/spdy-transport-3.0.0.tgz#00d4863a6400ad75df93361a1608605e5dcdcf31" + integrity sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw== + 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" + +spdy@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/spdy/-/spdy-4.0.2.tgz#b74f466203a3eda452c02492b91fb9e84a27677b" + integrity sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA== + 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" + +sprintf-js@^1.1.2, sprintf-js@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.1.3.tgz#4914b903a2f8b685d17fdf78a70e917e872e444a" + integrity sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA== + +sprintf-js@~1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/sprintf-js/-/sprintf-js-1.0.3.tgz#04e6926f662895354f3dd015203633b857297e2c" + integrity sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g== + +sshpk@^1.7.0: + version "1.18.0" + resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.18.0.tgz#1663e55cddf4d688b86a46b77f0d5fe363aba028" + integrity sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ== + 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" + +ssri@^9.0.0: + version "9.0.1" + resolved "https://registry.yarnpkg.com/ssri/-/ssri-9.0.1.tgz#544d4c357a8d7b71a19700074b6883fcb4eae057" + integrity sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q== + dependencies: + minipass "^3.1.1" + +stack-utils@^2.0.3: + version "2.0.6" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.6.tgz#aaf0748169c02fc33c8232abccf933f54a1cc34f" + integrity sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ== + dependencies: + escape-string-regexp "^2.0.0" + +statuses@2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-2.0.1.tgz#55cb000ccf1d48728bd23c685a063998cf1a1b63" + integrity sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ== + +"statuses@>= 1.4.0 < 2", statuses@~1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" + integrity sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA== + +stompjs@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/stompjs/-/stompjs-2.3.3.tgz#34178ac7bb8ee294cc5d554ad8b50f7f5459fd8e" + integrity sha512-5l/Ogz0DTFW7TrpHF0LAETGqM/so8UxNJvYZjJKqcX31EVprSQgnGkO80tZctPC/lFBDUrSFiTG3xd0R27XAIA== + optionalDependencies: + websocket latest + +stop-iteration-iterator@^1.0.0, stop-iteration-iterator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad" + integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ== + dependencies: + es-errors "^1.3.0" + internal-slot "^1.1.0" + +streamroller@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/streamroller/-/streamroller-3.1.5.tgz#1263182329a45def1ffaef58d31b15d13d2ee7ff" + integrity sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw== + dependencies: + date-format "^4.0.14" + debug "^4.3.4" + fs-extra "^8.1.0" + +string-length@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.2.tgz#a8a8dc7bd5c1a82b9b3c8b87e125f66871b6e57a" + integrity sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ== + dependencies: + char-regex "^1.0.2" + strip-ansi "^6.0.0" + +"string-width@^1.0.2 || 2 || 3 || 4", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + 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" + +string.prototype.trim@^1.2.10: + version "1.2.10" + resolved "https://registry.yarnpkg.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81" + integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-data-property "^1.1.4" + define-properties "^1.2.1" + es-abstract "^1.23.5" + es-object-atoms "^1.0.0" + has-property-descriptors "^1.0.2" + +string.prototype.trimend@^1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942" + integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ== + dependencies: + call-bind "^1.0.8" + call-bound "^1.0.2" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string.prototype.trimstart@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde" + integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg== + dependencies: + call-bind "^1.0.7" + define-properties "^1.2.1" + es-object-atoms "^1.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg== + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA== + +strip-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +strip-final-newline@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" + integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== + +strip-json-comments@3.1.1, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +stylus-loader@7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/stylus-loader/-/stylus-loader-7.0.0.tgz#31fb929cd3a7c447a07a0b0148b48480eb2c3f4a" + integrity sha512-WTbtLrNfOfLgzTaR9Lj/BPhQroKk/LC1hfTXSUbrxmxgfUo3Y3LpmKRVA2R1XbjvTAvOfaian9vOyfv1z99E+A== + dependencies: + fast-glob "^3.2.11" + klona "^2.0.5" + normalize-path "^3.0.0" + +stylus@0.59.0: + version "0.0.1-security" + resolved "https://registry.yarnpkg.com/stylus/-/stylus-0.0.1-security.tgz#7fbf8df07e6c1202fce29d57fed2ecbf960e6a3b" + integrity sha512-qTLX5NJwuj5dqdJyi1eAjXGE4HfjWDoPLbSIpYWn/rAEdiyZnsngS/Yj0BRjM7wC41e/+spK4QCXFqz7LM0fFQ== + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g== + +supports-color@^7.0.0, supports-color@^7.1.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.0.0: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +supports-hyperlinks@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz#3943544347c1ff90b15effb03fc14ae45ec10624" + integrity sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA== + dependencies: + has-flag "^4.0.0" + supports-color "^7.0.0" + +supports-preserve-symlinks-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz#6eda4bd344a3c94aea376d4cc31bc77311039e09" + integrity sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w== + +symbol-observable@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-4.0.0.tgz#5b425f192279e87f2f9b937ac8540d1984b39205" + integrity sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ== + +symbol-tree@^3.2.4: + version "3.2.4" + resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" + integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== + +tapable@^2.1.1, tapable@^2.2.0: + version "2.2.2" + resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.2.tgz#ab4984340d30cb9989a490032f086dbb8b56d872" + integrity sha512-Re10+NauLTMCudc7T5WLFLAwDhQ0JWdrMK+9B2M8zR5hRExKmsRDCBA7/aV/pNJFltmBFO5BAMlQFi/vq3nKOg== + +tar@^6.1.11, tar@^6.1.2: + version "6.2.1" + resolved "https://registry.yarnpkg.com/tar/-/tar-6.2.1.tgz#717549c541bc3c2af15751bea94b1dd068d4b03a" + integrity sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A== + dependencies: + chownr "^2.0.0" + fs-minipass "^2.0.0" + minipass "^5.0.0" + minizlib "^2.1.1" + mkdirp "^1.0.3" + yallist "^4.0.0" + +terminal-link@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" + integrity sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ== + dependencies: + ansi-escapes "^4.2.1" + supports-hyperlinks "^2.0.0" + +terser-webpack-plugin@^5.1.3: + version "5.3.14" + resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz#9031d48e57ab27567f02ace85c7d690db66c3e06" + integrity sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw== + dependencies: + "@jridgewell/trace-mapping" "^0.3.25" + jest-worker "^27.4.5" + schema-utils "^4.3.0" + serialize-javascript "^6.0.2" + terser "^5.31.1" + +terser@5.14.2: + version "5.14.2" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.14.2.tgz#9ac9f22b06994d736174f4091aa368db896f1c10" + integrity sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA== + dependencies: + "@jridgewell/source-map" "^0.3.2" + acorn "^8.5.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +terser@^5.31.1: + version "5.43.1" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.43.1.tgz#88387f4f9794ff1a29e7ad61fb2932e25b4fdb6d" + integrity sha512-+6erLbBm0+LROX2sPXlUYx/ux5PyE9K/a92Wrt6oA+WDAoFTdpHE5tCYCI5PNzq2y8df4rA+QgHLJuR4jNymsg== + dependencies: + "@jridgewell/source-map" "^0.3.3" + acorn "^8.14.0" + commander "^2.20.0" + source-map-support "~0.5.20" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +text-table@0.2.0, text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== + +through@X.X.X, through@^2.3.6: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg== + +thunky@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/thunky/-/thunky-1.1.0.tgz#5abaf714a9405db0504732bbccd2cedd9ef9537d" + integrity sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA== + +tmp@0.0.30: + version "0.0.30" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.30.tgz#72419d4a8be7d6ce75148fd8b324e593a711c2ed" + integrity sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w== + dependencies: + os-tmpdir "~1.0.1" + +tmp@0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.1.tgz#8457fc3037dcf4719c251367a1af6500ee1ccf14" + integrity sha512-76SUhtfqR2Ijn+xllcI5P1oyannHNHByD80W1q447gU3mp9G9PSpGdWmjUOHRDPiHYacIk66W7ubDTuPF3BEtQ== + dependencies: + rimraf "^3.0.0" + +tmp@^0.0.33: + version "0.0.33" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" + integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== + dependencies: + os-tmpdir "~1.0.2" + +tmp@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.2.3.tgz#eb783cc22bc1e8bebd0671476d46ea4eb32a79ae" + integrity sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w== + +tmpl@1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.5.tgz#8683e0b902bb9c20c4f726e3c0b69f36518c07cc" + integrity sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw== + +to-regex-range@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4" + integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ== + dependencies: + is-number "^7.0.0" + +toidentifier@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/toidentifier/-/toidentifier-1.0.1.tgz#3be34321a88a820ed1bd80dfaa33e479fbb8dd35" + integrity sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA== + +tough-cookie@^4.0.0: + version "4.1.4" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-4.1.4.tgz#945f1461b45b5a8c76821c33ea49c3ac192c1b36" + integrity sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag== + dependencies: + psl "^1.1.33" + punycode "^2.1.1" + universalify "^0.2.0" + url-parse "^1.5.3" + +tough-cookie@~2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.5.0.tgz#cd9fb2a0aa1d5a12b473bd9fb96fa3dcff65ade2" + integrity sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g== + dependencies: + psl "^1.1.28" + punycode "^2.1.1" + +tr46@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-3.0.0.tgz#555c4e297a950617e8eeddef633c87d4d9d6cbf9" + integrity sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA== + dependencies: + punycode "^2.1.1" + +tree-kill@1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.2.tgz#4ca09a9092c88b73a7cdc5e8a01b507b0790a0cc" + integrity sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A== + +ts-jest@^28.0.0: + version "28.0.8" + resolved "https://registry.yarnpkg.com/ts-jest/-/ts-jest-28.0.8.tgz#cd204b8e7a2f78da32cf6c95c9a6165c5b99cc73" + integrity sha512-5FaG0lXmRPzApix8oFG8RKjAz4ehtm8yMKOTy5HX3fY6W8kmvOrmcY0hKDElW52FJov+clhUbrKAqofnj4mXTg== + dependencies: + bs-logger "0.x" + fast-json-stable-stringify "2.x" + jest-util "^28.0.0" + json5 "^2.2.1" + lodash.memoize "4.x" + make-error "1.x" + semver "7.x" + yargs-parser "^21.0.1" + +ts-node@10.9.1: + version "10.9.1" + resolved "https://registry.yarnpkg.com/ts-node/-/ts-node-10.9.1.tgz#e73de9102958af9e1f0b168a6ff320e25adcff4b" + integrity sha512-NtVysVPkxxrwFGUUxGYhfux8k78pQB3JqYBXlLRZgdGUqTO5wU/UyHop5p70iEbGhB7q5KmiZiU0Y3KlJrScEw== + dependencies: + "@cspotcode/source-map-support" "^0.8.0" + "@tsconfig/node10" "^1.0.7" + "@tsconfig/node12" "^1.0.7" + "@tsconfig/node14" "^1.0.0" + "@tsconfig/node16" "^1.0.2" + acorn "^8.4.1" + acorn-walk "^8.1.1" + arg "^4.1.0" + create-require "^1.1.0" + diff "^4.0.1" + make-error "^1.1.1" + v8-compile-cache-lib "^3.0.1" + yn "3.1.1" + +tsconfig-paths@^3.15.0: + version "3.15.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz#5299ec605e55b1abb23ec939ef15edaf483070d4" + integrity sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.2" + minimist "^1.2.6" + strip-bom "^3.0.0" + +tslib@2.4.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.0.tgz#7cecaa7f073ce680a05847aa77be941098f36dc3" + integrity sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ== + +tslib@^1.10.0, tslib@^1.8.1, tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== + +tslib@^2.0.0, tslib@^2.1.0, tslib@^2.3.0: + version "2.8.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f" + integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w== + +tslib@~2.4.1: + version "2.4.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.4.1.tgz#0d0bfbaac2880b91e22df0768e55be9753a5b17e" + integrity sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA== + +tsutils@^3.21.0: + version "3.21.0" + resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.21.0.tgz#b48717d394cea6c1e096983eed58e9d61715b623" + integrity sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA== + dependencies: + tslib "^1.8.1" + +tunnel-agent@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" + integrity sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w== + dependencies: + safe-buffer "^5.0.1" + +tweetnacl@^0.14.3, tweetnacl@~0.14.0: + version "0.14.5" + resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" + integrity sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA== + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/type-detect/-/type-detect-4.0.8.tgz#7646fb5f18871cfbb7749e69bd39a6388eb7450c" + integrity sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g== + +type-fest@^0.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type-fest@^0.21.3: + version "0.21.3" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.21.3.tgz#d260a24b0198436e133fa26a524a6d65fa3b2e37" + integrity sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w== + +type-is@~1.6.18: + version "1.6.18" + resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" + integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== + dependencies: + media-typer "0.3.0" + mime-types "~2.1.24" + +type@^2.7.2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/type/-/type-2.7.3.tgz#436981652129285cc3ba94f392886c2637ea0486" + integrity sha512-8j+1QmAbPvLZow5Qpi6NCaN8FB60p/6x8/vfNqOk/hC+HuvFZhL4+WfekuhQLiqFZXOgQdrs3B+XxEmCc6b3FQ== + +typed-array-buffer@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536" + integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw== + dependencies: + call-bound "^1.0.3" + es-errors "^1.3.0" + is-typed-array "^1.1.14" + +typed-array-byte-length@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce" + integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg== + dependencies: + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.14" + +typed-array-byte-offset@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355" + integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + for-each "^0.3.3" + gopd "^1.2.0" + has-proto "^1.2.0" + is-typed-array "^1.1.15" + reflect.getprototypeof "^1.0.9" + +typed-array-length@^1.0.7: + version "1.0.7" + resolved "https://registry.yarnpkg.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d" + integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg== + dependencies: + call-bind "^1.0.7" + for-each "^0.3.3" + gopd "^1.0.1" + is-typed-array "^1.1.13" + possible-typed-array-names "^1.0.0" + reflect.getprototypeof "^1.0.6" + +typed-assert@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/typed-assert/-/typed-assert-1.0.9.tgz#8af9d4f93432c4970ec717e3006f33f135b06213" + integrity sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg== + +typedarray-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +typescript@4.6.4: + version "4.6.4" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.6.4.tgz#caa78bbc3a59e6a5c510d35703f6a09877ce45e9" + integrity sha512-9ia/jWHIEbo49HfjrLGfKbZSuWo9iTMwXO+Ca3pRsSpbsMbc7/IU8NKdCZVRRBafVPGnoJeFL76ZOAA84I9fEg== + +typescript@^4.5.4: + version "4.9.5" + resolved "https://registry.yarnpkg.com/typescript/-/typescript-4.9.5.tgz#095979f9bcc0d09da324d58d03ce8f8374cbe65a" + integrity sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g== + +ua-parser-js@^0.7.30: + version "0.7.40" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.40.tgz#c87d83b7bb25822ecfa6397a0da5903934ea1562" + integrity sha512-us1E3K+3jJppDBa3Tl0L3MOJiGhe1C6P0+nIvQAFYbxlMAx0h81eOwLmU57xgqToduDDPx3y5QsdjPfDu+FgOQ== + +unbox-primitive@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2" + integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw== + dependencies: + call-bound "^1.0.3" + has-bigints "^1.0.2" + has-symbols "^1.1.0" + which-boxed-primitive "^1.1.1" + +undici-types@~7.8.0: + version "7.8.0" + resolved "https://registry.yarnpkg.com/undici-types/-/undici-types-7.8.0.tgz#de00b85b710c54122e44fbfd911f8d70174cd294" + integrity sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw== + +unicode-canonical-property-names-ecmascript@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.1.tgz#cb3173fe47ca743e228216e4a3ddc4c84d628cc2" + integrity sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg== + +unicode-match-property-ecmascript@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz#54fd16e0ecb167cf04cf1f756bdcc92eba7976c3" + integrity sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q== + dependencies: + unicode-canonical-property-names-ecmascript "^2.0.0" + unicode-property-aliases-ecmascript "^2.0.0" + +unicode-match-property-value-ecmascript@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.2.0.tgz#a0401aee72714598f739b68b104e4fe3a0cb3c71" + integrity sha512-4IehN3V/+kkr5YeSSDDQG8QLqO26XpL2XP3GQtqwlT/QYSECAwFztxVHjlbh0+gjJ3XmNLS0zDsbgs9jWKExLg== + +unicode-property-aliases-ecmascript@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz#43d41e3be698bd493ef911077c9b131f827e8ccd" + integrity sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w== + +unique-filename@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" + integrity sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ== + dependencies: + unique-slug "^2.0.0" + +unique-filename@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-2.0.1.tgz#e785f8675a9a7589e0ac77e0b5c34d2eaeac6da2" + integrity sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A== + dependencies: + unique-slug "^3.0.0" + +unique-slug@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-2.0.2.tgz#baabce91083fc64e945b0f3ad613e264f7cd4e6c" + integrity sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w== + dependencies: + imurmurhash "^0.1.4" + +unique-slug@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/unique-slug/-/unique-slug-3.0.0.tgz#6d347cf57c8a7a7a6044aabd0e2d74e4d76dc7c9" + integrity sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w== + dependencies: + imurmurhash "^0.1.4" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +universalify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.2.0.tgz#6451760566fa857534745ab1dde952d1b1761be0" + integrity sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg== + +unpipe@1.0.0, unpipe@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" + integrity sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ== + +update-browserslist-db@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz#348377dd245216f9e7060ff50b15a1b740b75420" + integrity sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw== + dependencies: + escalade "^3.2.0" + picocolors "^1.1.1" + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +url-parse@^1.5.10, url-parse@^1.5.3: + version "1.5.10" + resolved "https://registry.yarnpkg.com/url-parse/-/url-parse-1.5.10.tgz#9d3c2f736c1d75dd3bd2be507dcc111f1e2ea9c1" + integrity sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ== + dependencies: + querystringify "^2.1.1" + requires-port "^1.0.0" + +utf-8-validate@^5.0.2: + version "5.0.10" + resolved "https://registry.yarnpkg.com/utf-8-validate/-/utf-8-validate-5.0.10.tgz#d7d10ea39318171ca982718b6b96a8d2442571a2" + integrity sha512-Z6czzLq4u8fPOyx7TU6X3dvUZVvoJmxSQ+IcrlmagKhilxlhZgxPK6C5Jqbkw1IDUmFTM+cz9QDnnLTwDz/2gQ== + dependencies: + node-gyp-build "^4.3.0" + +util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utils-merge@1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA== + +uuid@8.3.2, uuid@^8.3.2: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +uuid@^3.3.2: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +v8-compile-cache-lib@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz#6336e8d71965cb3d35a1bbb7868445a7c05264bf" + integrity sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg== + +v8-to-istanbul@^9.0.1: + version "9.3.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz#b9572abfa62bd556c16d75fdebc1a411d5ff3175" + integrity sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA== + dependencies: + "@jridgewell/trace-mapping" "^0.3.12" + "@types/istanbul-lib-coverage" "^2.0.1" + convert-source-map "^2.0.0" + +validate-npm-package-license@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-4.0.0.tgz#fe8f1c50ac20afdb86f177da85b3600f0ac0d747" + integrity sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q== + dependencies: + builtins "^5.0.0" + +vary@^1, vary@~1.1.2: + version "1.1.2" + resolved "https://registry.yarnpkg.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc" + integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg== + +verror@1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" + integrity sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw== + dependencies: + assert-plus "^1.0.0" + core-util-is "1.0.2" + extsprintf "^1.2.0" + +void-elements@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/void-elements/-/void-elements-2.0.1.tgz#c066afb582bb1cb4128d60ea92392e94d5e9dbec" + integrity sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung== + +vue-eslint-parser@^8.0.1: + version "8.3.0" + resolved "https://registry.yarnpkg.com/vue-eslint-parser/-/vue-eslint-parser-8.3.0.tgz#5d31129a1b3dd89c0069ca0a1c88f970c360bd0d" + integrity sha512-dzHGG3+sYwSf6zFBa0Gi9ZDshD7+ad14DGOdTLjruRVgZXe2J+DcZ9iUhyR48z5g1PqRa20yt3Njna/veLJL/g== + dependencies: + debug "^4.3.2" + eslint-scope "^7.0.0" + eslint-visitor-keys "^3.1.0" + espree "^9.0.0" + esquery "^1.4.0" + lodash "^4.17.21" + semver "^7.3.5" + +w3c-hr-time@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" + integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== + dependencies: + browser-process-hrtime "^1.0.0" + +w3c-xmlserializer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-3.0.0.tgz#06cdc3eefb7e4d0b20a560a5a3aeb0d2d9a65923" + integrity sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg== + dependencies: + xml-name-validator "^4.0.0" + +walker@^1.0.8: + version "1.0.8" + resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.8.tgz#bd498db477afe573dc04185f011d3ab8a8d7653f" + integrity sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ== + dependencies: + makeerror "1.0.12" + +watchpack@^2.4.0: + version "2.4.4" + resolved "https://registry.yarnpkg.com/watchpack/-/watchpack-2.4.4.tgz#473bda72f0850453da6425081ea46fc0d7602947" + integrity sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA== + dependencies: + glob-to-regexp "^0.4.1" + graceful-fs "^4.1.2" + +wbuf@^1.1.0, wbuf@^1.7.3: + version "1.7.3" + resolved "https://registry.yarnpkg.com/wbuf/-/wbuf-1.7.3.tgz#c1d8d149316d3ea852848895cb6a0bfe887b87df" + integrity sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA== + dependencies: + minimalistic-assert "^1.0.0" + +wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg== + dependencies: + defaults "^1.0.3" + +webdriver-js-extender@2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz#57d7a93c00db4cc8d556e4d3db4b5db0a80c3bb7" + integrity sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ== + dependencies: + "@types/selenium-webdriver" "^3.0.0" + selenium-webdriver "^3.0.1" + +webdriver-manager@^12.1.7: + version "12.1.9" + resolved "https://registry.yarnpkg.com/webdriver-manager/-/webdriver-manager-12.1.9.tgz#8d83543b92711b7217b39fef4cda958a4703d2df" + integrity sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ== + dependencies: + adm-zip "^0.5.2" + chalk "^1.1.1" + del "^2.2.0" + glob "^7.0.3" + ini "^1.3.4" + minimist "^1.2.0" + q "^1.4.1" + request "^2.87.0" + rimraf "^2.5.2" + semver "^5.3.0" + xml2js "^0.4.17" + +webidl-conversions@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-7.0.0.tgz#256b4e1882be7debbf01d05f0aa2039778ea080a" + integrity sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g== + +webpack-dev-middleware@5.3.3: + version "5.3.3" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.3.tgz#efae67c2793908e7311f1d9b06f2a08dcc97e51f" + integrity sha512-hj5CYrY0bZLB+eTO+x/j67Pkrquiy7kWepMHmUMoPsmcUaeEnQJqFzHJOyxgWlq746/wUuA64p9ta34Kyb01pA== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-middleware@^5.3.1: + version "5.3.4" + resolved "https://registry.yarnpkg.com/webpack-dev-middleware/-/webpack-dev-middleware-5.3.4.tgz#eb7b39281cbce10e104eb2b8bf2b63fce49a3517" + integrity sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q== + dependencies: + colorette "^2.0.10" + memfs "^3.4.3" + mime-types "^2.1.31" + range-parser "^1.2.1" + schema-utils "^4.0.0" + +webpack-dev-server@4.11.0: + version "4.11.0" + resolved "https://registry.yarnpkg.com/webpack-dev-server/-/webpack-dev-server-4.11.0.tgz#290ee594765cd8260adfe83b2d18115ea04484e7" + integrity sha512-L5S4Q2zT57SK7tazgzjMiSMBdsw+rGYIX27MgPgx7LDhWO0lViPrHKoLS7jo5In06PWYAhlYu3PbyoC6yAThbw== + 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/serve-static" "^1.13.10" + "@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 "^2.0.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" + rimraf "^3.0.2" + schema-utils "^4.0.0" + selfsigned "^2.0.1" + serve-index "^1.9.1" + sockjs "^0.3.24" + spdy "^4.0.2" + webpack-dev-middleware "^5.3.1" + ws "^8.4.2" + +webpack-merge@5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/webpack-merge/-/webpack-merge-5.8.0.tgz#2b39dbf22af87776ad744c390223731d30a68f61" + integrity sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q== + dependencies: + clone-deep "^4.0.1" + wildcard "^2.0.0" + +webpack-sources@^3.0.0, webpack-sources@^3.2.3: + version "3.3.3" + resolved "https://registry.yarnpkg.com/webpack-sources/-/webpack-sources-3.3.3.tgz#d4bf7f9909675d7a070ff14d0ef2a4f3c982c723" + integrity sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg== + +webpack-subresource-integrity@5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz#8b7606b033c6ccac14e684267cb7fb1f5c2a132a" + integrity sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q== + dependencies: + typed-assert "^1.0.8" + +webpack@5.74.0: + version "5.74.0" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.74.0.tgz#02a5dac19a17e0bb47093f2be67c695102a55980" + integrity sha512-A2InDwnhhGN4LYctJj6M1JEaGL7Luj6LOmyBHjcI8529cm5p6VXiTIW2sn6ffvEAKmveLzvu4jrihwXtPojlAA== + 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.7.1" + acorn-import-assertions "^1.7.6" + browserslist "^4.14.5" + chrome-trace-event "^1.0.2" + enhanced-resolve "^5.10.0" + 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-even-better-errors "^2.3.1" + 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.4.0" + webpack-sources "^3.2.3" + +websocket-driver@>=0.5.1, websocket-driver@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/websocket-driver/-/websocket-driver-0.7.4.tgz#89ad5295bbf64b480abcba31e4953aca706f5760" + integrity sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg== + dependencies: + http-parser-js ">=0.5.1" + safe-buffer ">=5.1.0" + websocket-extensions ">=0.1.1" + +websocket-extensions@>=0.1.1: + version "0.1.4" + resolved "https://registry.yarnpkg.com/websocket-extensions/-/websocket-extensions-0.1.4.tgz#7f8473bc839dfd87608adb95d7eb075211578a42" + integrity sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg== + +websocket@^1.0.24, websocket@latest: + version "1.0.35" + resolved "https://registry.yarnpkg.com/websocket/-/websocket-1.0.35.tgz#374197207d7d4cc4c36cbf8a1bb886ee52a07885" + integrity sha512-/REy6amwPZl44DDzvRCkaI1q1bIiQB0mEFQLUrhz3z2EK91cp3n72rAjUlrTP0zV22HJIUOVHQGPxhFRjxjt+Q== + dependencies: + bufferutil "^4.0.1" + debug "^2.2.0" + es5-ext "^0.10.63" + typedarray-to-buffer "^3.1.5" + utf-8-validate "^5.0.2" + yaeti "^0.0.6" + +whatwg-encoding@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-2.0.0.tgz#e7635f597fd87020858626805a2729fa7698ac53" + integrity sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg== + dependencies: + iconv-lite "0.6.3" + +whatwg-mimetype@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-3.0.0.tgz#5fa1a7623867ff1af6ca3dc72ad6b8a4208beba7" + integrity sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q== + +whatwg-url@^10.0.0: + version "10.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-10.0.0.tgz#37264f720b575b4a311bd4094ed8c760caaa05da" + integrity sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +whatwg-url@^11.0.0: + version "11.0.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-11.0.0.tgz#0a849eebb5faf2119b901bb76fd795c2848d4018" + integrity sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ== + dependencies: + tr46 "^3.0.0" + webidl-conversions "^7.0.0" + +which-boxed-primitive@^1.0.2, which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e" + integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA== + dependencies: + is-bigint "^1.1.0" + is-boolean-object "^1.2.1" + is-number-object "^1.1.1" + is-string "^1.1.1" + is-symbol "^1.1.1" + +which-builtin-type@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e" + integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q== + dependencies: + call-bound "^1.0.2" + function.prototype.name "^1.1.6" + has-tostringtag "^1.0.2" + is-async-function "^2.0.0" + is-date-object "^1.1.0" + is-finalizationregistry "^1.1.0" + is-generator-function "^1.0.10" + is-regex "^1.2.1" + is-weakref "^1.0.2" + isarray "^2.0.5" + which-boxed-primitive "^1.1.0" + which-collection "^1.0.2" + which-typed-array "^1.1.16" + +which-collection@^1.0.1, which-collection@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0" + integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw== + dependencies: + is-map "^2.0.3" + is-set "^2.0.3" + is-weakmap "^2.0.2" + is-weakset "^2.0.3" + +which-module@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.1.tgz#776b1fe35d90aebe99e8ac15eb24093389a4a409" + integrity sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ== + +which-typed-array@^1.1.13, which-typed-array@^1.1.16, which-typed-array@^1.1.19: + version "1.1.19" + resolved "https://registry.yarnpkg.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956" + integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw== + dependencies: + available-typed-arrays "^1.0.7" + call-bind "^1.0.8" + call-bound "^1.0.4" + for-each "^0.3.5" + get-proto "^1.0.1" + gopd "^1.2.0" + has-tostringtag "^1.0.2" + +which@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +which@^2.0.1, which@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.5: + version "1.1.5" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.5.tgz#df1d4c206854369ecf3c9a4898f1b23fbd9d15d3" + integrity sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg== + dependencies: + string-width "^1.0.2 || 2 || 3 || 4" + +wildcard@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/wildcard/-/wildcard-2.0.1.tgz#5ab10d02487198954836b6349f74fff961e10f67" + integrity sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ== + +word-wrap@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.5.tgz#d2c45c6dd4fbce621a66f136cbe328afd0410b34" + integrity sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA== + +wrap-ansi@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== + +write-file-atomic@^4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-4.0.2.tgz#a9df01ae5b77858a027fd2e80768ee433555fcfd" + integrity sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg== + dependencies: + imurmurhash "^0.1.4" + signal-exit "^3.0.7" + +ws@^8.2.3, ws@^8.4.2: + version "8.18.3" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.18.3.tgz#b56b88abffde62791c639170400c93dcb0c95472" + integrity sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg== + +ws@~8.17.1: + version "8.17.1" + resolved "https://registry.yarnpkg.com/ws/-/ws-8.17.1.tgz#9293da530bb548febc95371d90f9c878727d919b" + integrity sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ== + +xhr2@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.2.1.tgz#4e73adc4f9cfec9cbd2157f73efdce3a5f108a93" + integrity sha512-sID0rrVCqkVNUn8t6xuv9+6FViXjUVXq8H5rWOH2rz9fDNQEd4g0EA2XlcEdJXRz5BMEn4O1pJFdT+z4YHhoWw== + +xml-name-validator@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-4.0.0.tgz#79a006e2e63149a8600f15430f0a4725d1524835" + integrity sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw== + +xml2js@^0.4.17: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xmlchars@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" + integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== + +y18n@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yaeti@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/yaeti/-/yaeti-0.0.6.tgz#f26f484d72684cf42bedfb76970aa1608fbf9577" + integrity sha512-MvQa//+KcZCUkBTIC9blM+CU9J2GzuTytsOUwf2lidtvkx/6gnEp1QvJv34t9vdjhFmha/mUiNDbN0D0mJWdug== + +yallist@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.1.1.tgz#dbb7daf9bfd8bac9ab45ebf602b8cbad0d5d08fd" + integrity sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yaml@^1.10.0: + version "1.10.2" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.2.tgz#2301c5ffbf12b467de8da2333a459e29e7920e4b" + integrity sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^21.0.0, yargs-parser@^21.0.1, yargs-parser@^21.1.1: + version "21.1.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-21.1.1.tgz#9096bceebf990d21bb31fa9516e0ede294a77d35" + integrity sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw== + +yargs@17.5.1: + version "17.5.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.5.1.tgz#e109900cab6fcb7fd44b1d8249166feb0b36e58e" + integrity sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA== + 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" + +yargs@^15.3.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.2" + +yargs@^16.1.1: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^17.2.1, yargs@^17.3.1: + version "17.7.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-17.7.2.tgz#991df39aca675a192b816e1e0363f9d75d2aa269" + integrity sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w== + dependencies: + cliui "^8.0.1" + 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.1.1" + +yn@3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/yn/-/yn-3.1.1.tgz#1e87401a09d767c1d5eab26a6e4c185182d2eb50" + integrity sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q== + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== + +zone.js@~0.10.3: + version "0.10.3" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.10.3.tgz#3e5e4da03c607c9dcd92e37dd35687a14a140c16" + integrity sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg== + +zone.js@~0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/zone.js/-/zone.js-0.12.0.tgz#a4a6e5fab6d34bd37d89c77e89ac2e6f4a3d2c30" + integrity sha512-XtC+I5dXU14HrzidAKBNMqneIVUykLEAA1x+v4KVrd6AUPWlwYORF8KgsVqvgdHiKZ4BkxxjvYi/ksEixTPR0Q== + dependencies: + tslib "^2.3.0" diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.editorconfig b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.editorconfig similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.editorconfig rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.editorconfig diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.gitignore b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.gitignore similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.gitignore rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.gitignore diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.jar diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/.mvn/wrapper/maven-wrapper.properties diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/README.md b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/README.md similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/README.md rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/README.md diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/lombok.config b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/lombok.config similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/lombok.config rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/lombok.config diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/mvnw similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/mvnw diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw.cmd b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/mvnw.cmd similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/mvnw.cmd rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/mvnw.cmd diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/OpenAPIConfigConsts.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/config/QuartzManagerPaths.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/properties/QuartzModuleProperties.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtils.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/main/java/it/fabioformosa/quartzmanager/api/common/utils/Try.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/DateUtilsTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-common/src/test/java/it/fabioformosa/quartzmanager/api/common/utils/TryTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/.gitignore diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/ConversionConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/OpenApiConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzDefaultPropertiesConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/QuartzManagerApiConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/configuration/WebsocketConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/JobController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/TriggerController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/WebsocketController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/controllers/advices/ExceptionHandlingController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobDetailDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/JobKeyToJobKeyDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTrigger.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerKeyToTriggerKeyDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/converters/TriggerToTriggerDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobDetailDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/JobKeyDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/MisfireInstruction.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SchedulerDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerCommandDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/SimpleTriggerInputDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerCommandDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerKeyDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerPeriodDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/dto/TriggerRepetitionDTO.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/enums/SchedulerStatus.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ExceptionResponse.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/ResourceConflictException.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/exceptions/TriggerNotFoundException.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/AbstractQuartzManagerJob.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/jobs/entities/LogRecord.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/scheduler/AutowiringSpringBeanJobFactory.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/AbstractSchedulerService.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/JobService.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SchedulerService.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerService.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/services/TriggerService.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidator.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriod.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerPeriodValidator.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/validators/ValidTriggerRepetition.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketLogsNotifier.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebSocketProgressNotifier.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/java/it/fabioformosa/quartzmanager/api/websockets/WebhookSender.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/main/resources/META-INF/spring.factories diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/QuartManagerApplicationTests.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigDefaultAppPropertiesTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/configuration/SchedulerConfigTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/JobControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/ResourceConflictControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SchedulerControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/SimpleTriggerControllerValidationTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TestController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/TriggerControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/InvalidSimpleTriggerCommandDTOProvider.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TestUtils.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/controllers/utils/TriggerUtils.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SchedulerToSchedulerDTOTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerCommandDTOToSimpleTriggerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/converters/SimpleTriggerToSimpleTriggerDTOTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/dto/TriggerFiredBundleDTOTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJob.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/jobs/SampleJobTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/JobServiceTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceIntegrationTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SchedulerServiceTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceIntegrationTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/SimpleTriggerServiceTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/services/TriggerServiceTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/quartzmanager/api/validators/ValidRepetitionValidatorTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/java/it/fabioformosa/samplepackage/SampleExtraJob.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/application.yml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/managed-quartz.properties diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-api/src/test/resources/mockito-extensions/org.mockito.plugins.MockMaker diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/PersistenceConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/java/it/fabioformosa/quartzmanager/api/persistence/QuartzPersistencePropConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/META-INF/spring.factories diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/liquibase-changelog-master.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/db/quartz-scheduler/migrations/V202102190034_quartz_tables_postgresql.sql diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-persistence/src/main/resources/quartz-persistence.properties diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/QuartzManagerSecurityConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/config/SecurityOpenApiConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/controllers/UserController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/LoginConfigurer.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AnonAuthentication.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationFailureHandler.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/AuthenticationSuccessHandler.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/FormLoginConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationFilter.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandler.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtAuthenticationSuccessHandlerImpl.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenAuthenticationFilter.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenBasedAuthentication.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtTokenHelper.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/JwtUsernamePasswordFiterLoginConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/LogoutSuccess.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/QuartzManagerHttpSecurity.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/helpers/impl/RestAuthenticationEntryPoint.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/models/UserTokenState.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryAccountProperties.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityProperties.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/main/resources/META-INF/spring.factories diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/AbstractSecurityLoginTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaCookieTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaDefaultStrategyTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderAndLoginFilterTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SecurityLoginViaHeaderTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/SpringApplicationTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/TestController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/controllers/UserControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/AbstractPropertyValidatorTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/InMemoryUsersValidationControllerTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-security/src/test/java/it/fabioformosa/quartzmanager/api/security/properties/JwtSecurityPropertiesTest.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-starter-ui/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/.gitignore diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/docker-compose.yml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/docker/quartzmanager/init-db.sh diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/pom.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/QuartzManagerDemoApplication.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/ServletInitializer.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/WebShowcaseOpenApiConfig.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/HealthCheckController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/controllers/SessionController.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/myjobs/SampleJob.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJob.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/application.yml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/banner.txt diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/logback.xml diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/managed-quartz.properties diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-2-screenshot_800.PNG diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-screenshot.png diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/main/resources/quartz-manager-4-swagger.png diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/QuartManagerApplicationTests.java diff --git a/jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java b/jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java similarity index 100% rename from jdk_11_maven/cs/rest/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java rename to jdk_11_maven/cs/rest-gui/quartz-manager/quartz-manager-parent/quartz-manager-web-showcase/src/test/java/it/fabioformosa/quartzmanager/jobs/tests/MisfireTestJobTest.java