From 45998f9d7f0bbb70bd7ad18d627db6855e73a1bd Mon Sep 17 00:00:00 2001 From: Brian Melton-Grace Date: Fri, 17 May 2024 09:52:15 -0700 Subject: [PATCH] Archive repo --- .../AppCreationScripts/AppCreationScripts.md | 138 - .../1-sign-in/AppCreationScripts/Cleanup.ps1 | 152 - .../AppCreationScripts/Configure.ps1 | 252 - .../1-sign-in/AppCreationScripts/sample.json | 42 - .../1-sign-in/README-incremental.md | 361 - 1-Authentication/1-sign-in/README.md | 379 - .../1-sign-in/ReadmeFiles/screenshot.png | Bin 31735 -> 0 bytes .../1-sign-in/ReadmeFiles/topology.png | Bin 34562 -> 0 bytes .../1-sign-in/SPA/.browserslistrc | 17 - 1-Authentication/1-sign-in/SPA/.editorconfig | 16 - 1-Authentication/1-sign-in/SPA/.gitignore | 46 - 1-Authentication/1-sign-in/SPA/CHANGELOG.md | 13 - .../1-sign-in/SPA/CONTRIBUTING.md | 76 - 1-Authentication/1-sign-in/SPA/LICENSE.md | 21 - 1-Authentication/1-sign-in/SPA/angular.json | 130 - 1-Authentication/1-sign-in/SPA/karma.conf.js | 41 - .../1-sign-in/SPA/package-lock.json | 14059 ----------- 1-Authentication/1-sign-in/SPA/package.json | 50 - .../SPA/src/app/app-routing.module.ts | 51 - .../1-sign-in/SPA/src/app/app.component.css | 13 - .../1-sign-in/SPA/src/app/app.component.html | 21 - .../1-sign-in/SPA/src/app/app.component.ts | 76 - .../1-sign-in/SPA/src/app/app.module.ts | 73 - .../1-sign-in/SPA/src/app/auth-config.ts | 47 - .../SPA/src/app/guarded/guarded.component.css | 0 .../src/app/guarded/guarded.component.html | 1 - .../SPA/src/app/guarded/guarded.component.ts | 15 - .../SPA/src/app/home/home.component.css | 9 - .../SPA/src/app/home/home.component.html | 23 - .../SPA/src/app/home/home.component.ts | 76 - .../1-sign-in/SPA/src/app/sample.spec.ts | 114 - .../1-sign-in/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../1-sign-in/SPA/src/favicon.svg | 23 - 1-Authentication/1-sign-in/SPA/src/index.html | 16 - 1-Authentication/1-sign-in/SPA/src/main.ts | 12 - .../1-sign-in/SPA/src/polyfills.ts | 64 - 1-Authentication/1-sign-in/SPA/src/styles.css | 6 - 1-Authentication/1-sign-in/SPA/src/test.ts | 25 - .../1-sign-in/SPA/tsconfig.app.json | 15 - 1-Authentication/1-sign-in/SPA/tsconfig.json | 29 - .../1-sign-in/SPA/tsconfig.spec.json | 18 - 1-Authentication/1-sign-in/SPA/tslint.json | 152 - .../AppCreationScripts/sample.json | 50 - .../2-sign-in-b2c/README-incremental.md | 340 - 1-Authentication/2-sign-in-b2c/README.md | 401 - .../2-sign-in-b2c/ReadmeFiles/screenshot.png | Bin 13981 -> 0 bytes .../2-sign-in-b2c/ReadmeFiles/topology.png | Bin 13938 -> 0 bytes .../2-sign-in-b2c/SPA/.browserslistrc | 16 - .../2-sign-in-b2c/SPA/.editorconfig | 16 - 1-Authentication/2-sign-in-b2c/SPA/README.md | 27 - .../2-sign-in-b2c/SPA/angular.json | 103 - .../2-sign-in-b2c/SPA/karma.conf.js | 50 - .../2-sign-in-b2c/SPA/package-lock.json | 8527 ------- .../2-sign-in-b2c/SPA/package.json | 42 - .../SPA/src/app/app-routing.module.ts | 39 - .../SPA/src/app/app.component.css | 22 - .../SPA/src/app/app.component.html | 25 - .../SPA/src/app/app.component.ts | 203 - .../2-sign-in-b2c/SPA/src/app/app.module.ts | 79 - .../2-sign-in-b2c/SPA/src/app/auth-config.ts | 89 - .../2-sign-in-b2c/SPA/src/app/claim-utils.ts | 189 - .../SPA/src/app/guarded/guarded.component.css | 0 .../src/app/guarded/guarded.component.html | 1 - .../SPA/src/app/guarded/guarded.component.ts | 15 - .../SPA/src/app/home/home.component.css | 25 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 51 - .../2-sign-in-b2c/SPA/src/app/sample.spec.ts | 109 - .../2-sign-in-b2c/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../2-sign-in-b2c/SPA/src/favicon.svg | 23 - .../2-sign-in-b2c/SPA/src/index.html | 17 - .../2-sign-in-b2c/SPA/src/main.ts | 12 - .../2-sign-in-b2c/SPA/src/polyfills.ts | 53 - .../2-sign-in-b2c/SPA/src/styles.css | 4 - .../2-sign-in-b2c/SPA/src/test.ts | 26 - .../2-sign-in-b2c/SPA/tsconfig.app.json | 15 - .../2-sign-in-b2c/SPA/tsconfig.json | 32 - .../2-sign-in-b2c/SPA/tsconfig.spec.json | 18 - .../AppCreationScripts/AppCreationScripts.md | 138 - .../AppCreationScripts/Cleanup.ps1 | 152 - .../AppCreationScripts/Configure.ps1 | 354 - .../AppCreationScripts/sample.json | 52 - 2-Authorization-I/1-call-graph/README.md | 436 - .../1-call-graph/Readme-incremental.md | 359 - .../1-call-graph/ReadmeFiles/screenshot.png | Bin 56650 -> 0 bytes .../1-call-graph/ReadmeFiles/topology.png | Bin 43661 -> 0 bytes .../1-call-graph/SPA/.browserslistrc | 16 - .../1-call-graph/SPA/.editorconfig | 16 - 2-Authorization-I/1-call-graph/SPA/.gitignore | 42 - .../1-call-graph/SPA/angular.json | 106 - .../1-call-graph/SPA/karma.conf.js | 50 - .../1-call-graph/SPA/package-lock.json | 8530 ------- .../1-call-graph/SPA/package.json | 43 - .../account-switch.component.css | 13 - .../account-switch.component.html | 21 - .../account-switch.component.ts | 64 - .../SPA/src/app/app-routing.module.ts | 49 - .../SPA/src/app/app.component.css | 13 - .../SPA/src/app/app.component.html | 40 - .../1-call-graph/SPA/src/app/app.component.ts | 169 - .../1-call-graph/SPA/src/app/app.module.ts | 149 - .../1-call-graph/SPA/src/app/auth-config.ts | 70 - .../1-call-graph/SPA/src/app/contacts.ts | 34 - .../src/app/contacts/contacts.component.css | 9 - .../src/app/contacts/contacts.component.html | 16 - .../src/app/contacts/contacts.component.ts | 61 - .../1-call-graph/SPA/src/app/graph.service.ts | 184 - .../SPA/src/app/home/home.component.css | 27 - .../SPA/src/app/home/home.component.html | 41 - .../SPA/src/app/home/home.component.ts | 56 - .../1-call-graph/SPA/src/app/profile.ts | 13 - .../SPA/src/app/profile/profile.component.css | 9 - .../src/app/profile/profile.component.html | 27 - .../SPA/src/app/profile/profile.component.ts | 59 - .../1-call-graph/SPA/src/app/sample.spec.ts | 114 - .../SPA/src/app/utils/claim-utils.ts | 212 - .../SPA/src/app/utils/storage-utils.ts | 44 - .../1-call-graph/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../1-call-graph/SPA/src/favicon.ico | Bin 948 -> 0 bytes .../1-call-graph/SPA/src/index.html | 17 - .../1-call-graph/SPA/src/main.ts | 12 - .../1-call-graph/SPA/src/polyfills.ts | 53 - .../1-call-graph/SPA/src/styles.css | 6 - .../1-call-graph/SPA/src/test.ts | 26 - .../1-call-graph/SPA/tsconfig.app.json | 15 - .../1-call-graph/SPA/tsconfig.json | 32 - .../1-call-graph/SPA/tsconfig.spec.json | 18 - .../TodoListAPI.Tests/ConfigurationTests.cs | 45 - .../TodoListAPI.Tests.csproj | 30 - .../1-call-api/API/TodoListAPI.sln | 31 - .../Controllers/TodoListController.cs | 206 - .../API/TodoListAPI/Models/TodoContext.cs | 15 - .../API/TodoListAPI/Models/TodoItem.cs | 18 - .../1-call-api/API/TodoListAPI/Program.cs | 21 - .../Properties/launchSettings.json | 30 - .../1-call-api/API/TodoListAPI/Startup.cs | 104 - .../API/TodoListAPI/TodoListAPI.csproj | 22 - .../TodoListAPI/appsettings.Development.json | 9 - .../API/TodoListAPI/appsettings.json | 25 - .../AppCreationScripts/AppCreationScripts.md | 138 - .../1-call-api/AppCreationScripts/Cleanup.ps1 | 189 - .../AppCreationScripts/Configure.ps1 | 495 - .../1-call-api/AppCreationScripts/sample.json | 104 - .../1-call-api/README-incremental.md | 364 - 3-Authorization-II/1-call-api/README.md | 417 - .../1-call-api/ReadmeFiles/screenshot.png | Bin 22291 -> 0 bytes .../1-call-api/ReadmeFiles/topology.png | Bin 26517 -> 0 bytes .../1-call-api/SPA/angular.json | 103 - .../1-call-api/SPA/karma.conf.js | 50 - .../1-call-api/SPA/package-lock.json | 9477 ------- .../1-call-api/SPA/package.json | 42 - .../SPA/src/app/app-routing.module.ts | 47 - .../1-call-api/SPA/src/app/app.component.css | 22 - .../1-call-api/SPA/src/app/app.component.html | 24 - .../1-call-api/SPA/src/app/app.component.ts | 118 - .../1-call-api/SPA/src/app/app.module.ts | 133 - .../1-call-api/SPA/src/app/auth-config.ts | 66 - .../SPA/src/app/home/home.component.css | 26 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 52 - .../1-call-api/SPA/src/app/sample.spec.ts | 114 - .../src/app/todo-edit/todo-edit.component.css | 14 - .../app/todo-edit/todo-edit.component.html | 14 - .../src/app/todo-edit/todo-edit.component.ts | 38 - .../src/app/todo-view/todo-view.component.css | 26 - .../app/todo-view/todo-view.component.html | 45 - .../src/app/todo-view/todo-view.component.ts | 49 - .../1-call-api/SPA/src/app/todo.service.ts | 34 - .../1-call-api/SPA/src/app/todo.ts | 5 - .../SPA/src/app/utils/claim-utils.ts | 189 - .../1-call-api/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../1-call-api/SPA/src/favicon.svg | 23 - .../1-call-api/SPA/src/index.html | 17 - 3-Authorization-II/1-call-api/SPA/src/main.ts | 12 - .../1-call-api/SPA/src/polyfills.ts | 53 - .../1-call-api/SPA/src/styles.css | 4 - 3-Authorization-II/1-call-api/SPA/src/test.ts | 26 - .../1-call-api/SPA/tsconfig.app.json | 15 - .../1-call-api/SPA/tsconfig.json | 32 - .../1-call-api/SPA/tsconfig.spec.json | 18 - .../TodoListAPI.Tests/ConfigurationTests.cs | 44 - .../TodoListAPI.Tests.csproj | 30 - .../2-call-api-b2c/API/TodoListAPI.sln | 31 - .../Controllers/TodoListController.cs | 206 - .../API/TodoListAPI/Models/TodoContext.cs | 15 - .../API/TodoListAPI/Models/TodoItem.cs | 18 - .../2-call-api-b2c/API/TodoListAPI/Program.cs | 21 - .../Properties/launchSettings.json | 30 - .../2-call-api-b2c/API/TodoListAPI/Startup.cs | 104 - .../API/TodoListAPI/TodoListAPI.csproj | 22 - .../TodoListAPI/appsettings.Development.json | 9 - .../API/TodoListAPI/appsettings.json | 21 - .../AppCreationScripts/sample.json | 92 - .../2-call-api-b2c/README-incremental.md | 284 - 3-Authorization-II/2-call-api-b2c/README.md | 337 - .../2-call-api-b2c/ReadmeFiles/screenshot.png | Bin 26001 -> 0 bytes .../2-call-api-b2c/ReadmeFiles/topology.png | Bin 33273 -> 0 bytes .../2-call-api-b2c/SPA/.browserslistrc | 16 - .../2-call-api-b2c/SPA/.editorconfig | 16 - .../2-call-api-b2c/SPA/README.md | 27 - .../2-call-api-b2c/SPA/angular.json | 103 - .../2-call-api-b2c/SPA/karma.conf.js | 50 - .../2-call-api-b2c/SPA/package-lock.json | 21060 --------------- .../2-call-api-b2c/SPA/package.json | 42 - .../SPA/src/app/app-routing.module.ts | 47 - .../SPA/src/app/app.component.css | 22 - .../SPA/src/app/app.component.html | 25 - .../SPA/src/app/app.component.ts | 215 - .../2-call-api-b2c/SPA/src/app/app.module.ts | 133 - .../2-call-api-b2c/SPA/src/app/auth-config.ts | 91 - .../2-call-api-b2c/SPA/src/app/claim-utils.ts | 189 - .../SPA/src/app/home/home.component.css | 25 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 51 - .../2-call-api-b2c/SPA/src/app/sample.spec.ts | 111 - .../src/app/todo-edit/todo-edit.component.css | 14 - .../app/todo-edit/todo-edit.component.html | 14 - .../src/app/todo-edit/todo-edit.component.ts | 38 - .../src/app/todo-view/todo-view.component.css | 26 - .../app/todo-view/todo-view.component.html | 45 - .../src/app/todo-view/todo-view.component.ts | 48 - .../SPA/src/app/todo.service.ts | 39 - .../2-call-api-b2c/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../2-call-api-b2c/SPA/src/favicon.svg | 23 - .../2-call-api-b2c/SPA/src/index.html | 17 - .../2-call-api-b2c/SPA/src/main.ts | 12 - .../2-call-api-b2c/SPA/src/polyfills.ts | 53 - .../2-call-api-b2c/SPA/src/styles.css | 4 - .../2-call-api-b2c/SPA/src/test.ts | 26 - .../2-call-api-b2c/SPA/tsconfig.app.json | 15 - .../2-call-api-b2c/SPA/tsconfig.json | 32 - .../2-call-api-b2c/SPA/tsconfig.spec.json | 18 - 4-Deployment/README-incremental.md | 174 - 4-Deployment/README.md | 213 - 4-Deployment/ReadmeFiles/screenshot.png | Bin 22291 -> 0 bytes 4-Deployment/ReadmeFiles/topology.png | Bin 18492 -> 0 bytes .../TodoListAPI.Tests/ConfigurationTests.cs | 45 - .../TodoListAPI.Tests.csproj | 30 - .../1-call-api-roles/API/TodoListAPI.sln | 31 - .../Controllers/TodoListController.cs | 144 - .../Infrastructure/AuthorizationPolicies.cs | 16 - .../API/TodoListAPI/Models/TodoContext.cs | 15 - .../API/TodoListAPI/Models/TodoItem.cs | 18 - .../API/TodoListAPI/Program.cs | 21 - .../Properties/launchSettings.json | 30 - .../API/TodoListAPI/Startup.cs | 127 - .../API/TodoListAPI/TodoListAPI.csproj | 22 - .../TodoListAPI/appsettings.Development.json | 9 - .../API/TodoListAPI/appsettings.json | 21 - .../AppCreationScripts/AppCreationScripts.md | 138 - .../AppCreationScripts/Cleanup.ps1 | 152 - .../CleanupUsersAndAssignRoles.ps1 | 120 - .../AppCreationScripts/Configure.ps1 | 452 - .../CreateUsersAndAssignRoles.ps1 | 198 - .../AppCreationScripts/sample.json | 101 - 5-AccessControl/1-call-api-roles/README.md | 477 - .../ReadmeFiles/ch1_dashboard.png | Bin 18926 -> 0 bytes .../ReadmeFiles/ch1_error.png | Bin 33872 -> 0 bytes .../ReadmeFiles/ch1_login.png | Bin 30069 -> 0 bytes .../ReadmeFiles/ch1_todolist.png | Bin 18292 -> 0 bytes .../1-call-api-roles/ReadmeFiles/topology.png | Bin 26517 -> 0 bytes .../1-call-api-roles/SPA/angular.json | 103 - .../1-call-api-roles/SPA/karma.conf.js | 50 - .../1-call-api-roles/SPA/package-lock.json | 9477 ------- .../1-call-api-roles/SPA/package.json | 42 - .../SPA/src/app/app-routing.module.ts | 67 - .../SPA/src/app/app.component.css | 22 - .../SPA/src/app/app.component.html | 25 - .../SPA/src/app/app.component.ts | 119 - .../SPA/src/app/app.module.ts | 119 - .../SPA/src/app/auth-config.ts | 68 - .../SPA/src/app/base.guard.ts | 221 - .../src/app/dashboard/dashboard.component.css | 4 - .../app/dashboard/dashboard.component.html | 6 - .../src/app/dashboard/dashboard.component.ts | 38 - .../SPA/src/app/home/home.component.css | 25 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 51 - .../SPA/src/app/role.guard.ts | 51 - .../SPA/src/app/sample.spec.ts | 114 - .../src/app/todo-edit/todo-edit.component.css | 14 - .../app/todo-edit/todo-edit.component.html | 14 - .../src/app/todo-edit/todo-edit.component.ts | 38 - .../src/app/todo-view/todo-view.component.css | 26 - .../app/todo-view/todo-view.component.html | 45 - .../src/app/todo-view/todo-view.component.ts | 49 - .../SPA/src/app/todo.service.ts | 38 - .../1-call-api-roles/SPA/src/app/todo.ts | 6 - .../SPA/src/app/utils/claim-utils.ts | 189 - .../1-call-api-roles/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../1-call-api-roles/SPA/src/favicon.svg | 23 - .../1-call-api-roles/SPA/src/index.html | 17 - .../1-call-api-roles/SPA/src/main.ts | 12 - .../1-call-api-roles/SPA/src/polyfills.ts | 53 - .../1-call-api-roles/SPA/src/styles.css | 4 - .../1-call-api-roles/SPA/src/test.ts | 26 - .../1-call-api-roles/SPA/tsconfig.app.json | 15 - .../1-call-api-roles/SPA/tsconfig.json | 32 - .../1-call-api-roles/SPA/tsconfig.spec.json | 18 - .../TodoListAPI.Tests/ConfigurationTests.cs | 45 - .../TodoListAPI.Tests.csproj | 30 - .../2-call-api-groups/API/TodoListAPI.sln | 31 - .../Controllers/TodoListController.cs | 203 - .../Infrastructure/AuthorizationPolicies.cs | 16 - .../Infrastructure/CacheSettings.cs | 11 - .../API/TodoListAPI/Models/TodoContext.cs | 15 - .../API/TodoListAPI/Models/TodoItem.cs | 18 - .../API/TodoListAPI/Program.cs | 22 - .../Properties/launchSettings.json | 30 - .../API/TodoListAPI/Services/GraphHelper.cs | 277 - .../API/TodoListAPI/Startup.cs | 163 - .../API/TodoListAPI/TodoListAPI.csproj | 31 - .../TodoListAPI/appsettings.Development.json | 9 - .../API/TodoListAPI/appsettings.json | 30 - .../AppCreationScripts/AppCreationScripts.md | 138 - .../AppCreationScripts/BulkCreateGroups.ps1 | 208 - .../AppCreationScripts/BulkRemoveGroups.ps1 | 153 - .../AppCreationScripts/Cleanup.ps1 | 244 - .../AppCreationScripts/Configure.ps1 | 601 - .../AppCreationScripts/sample.json | 127 - 5-AccessControl/2-call-api-groups/README.md | 611 - .../ReadmeFiles/ch1_dashboard.png | Bin 18926 -> 0 bytes .../ReadmeFiles/ch1_error.png | Bin 33872 -> 0 bytes .../ReadmeFiles/ch1_login.png | Bin 30069 -> 0 bytes .../ReadmeFiles/ch1_todolist.png | Bin 18292 -> 0 bytes .../ReadmeFiles/topology.png | Bin 26517 -> 0 bytes .../2-call-api-groups/SPA/angular.json | 103 - .../2-call-api-groups/SPA/karma.conf.js | 50 - .../2-call-api-groups/SPA/package-lock.json | 9506 ------- .../2-call-api-groups/SPA/package.json | 44 - .../SPA/src/app/app-routing.module.ts | 76 - .../SPA/src/app/app.component.css | 22 - .../SPA/src/app/app.component.html | 25 - .../SPA/src/app/app.component.ts | 121 - .../SPA/src/app/app.module.ts | 123 - .../SPA/src/app/auth-config.ts | 79 - .../SPA/src/app/base.guard.ts | 221 - .../src/app/dashboard/dashboard.component.css | 4 - .../app/dashboard/dashboard.component.html | 6 - .../src/app/dashboard/dashboard.component.ts | 38 - .../SPA/src/app/graph.service.ts | 75 - .../SPA/src/app/group.guard.ts | 77 - .../SPA/src/app/home/home.component.css | 25 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 51 - .../SPA/src/app/overage/overage.component.css | 4 - .../src/app/overage/overage.component.html | 14 - .../SPA/src/app/overage/overage.component.ts | 37 - .../SPA/src/app/sample.spec.ts | 114 - .../src/app/todo-edit/todo-edit.component.css | 14 - .../app/todo-edit/todo-edit.component.html | 14 - .../src/app/todo-edit/todo-edit.component.ts | 38 - .../src/app/todo-view/todo-view.component.css | 26 - .../app/todo-view/todo-view.component.html | 45 - .../src/app/todo-view/todo-view.component.ts | 48 - .../SPA/src/app/todo.service.ts | 44 - .../SPA/src/app/utils/claim-utils.ts | 198 - .../SPA/src/app/utils/storage-utils.ts | 73 - .../2-call-api-groups/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../2-call-api-groups/SPA/src/favicon.svg | 23 - .../2-call-api-groups/SPA/src/index.html | 17 - .../2-call-api-groups/SPA/src/main.ts | 12 - .../2-call-api-groups/SPA/src/polyfills.ts | 53 - .../2-call-api-groups/SPA/src/styles.css | 4 - .../2-call-api-groups/SPA/src/test.ts | 26 - .../2-call-api-groups/SPA/tsconfig.app.json | 15 - .../2-call-api-groups/SPA/tsconfig.json | 32 - .../2-call-api-groups/SPA/tsconfig.spec.json | 18 - .../ProfileAPI.Tests/ConfigurationTests.cs | 45 - .../ProfileAPI.Tests/ProfileAPI.Tests.csproj | 31 - .../1-call-api-obo/API/ProfileAPI.sln | 31 - .../Controllers/ProfileController.cs | 170 - .../API/ProfileAPI/Models/ProfileContext.cs | 14 - .../API/ProfileAPI/Models/ProfileItem.cs | 20 - .../API/ProfileAPI/ProfileAPI.csproj | 24 - .../1-call-api-obo/API/ProfileAPI/Program.cs | 23 - .../ProfileAPI/Properties/launchSettings.json | 30 - .../1-call-api-obo/API/ProfileAPI/Startup.cs | 126 - .../ProfileAPI/appsettings.Development.json | 9 - .../API/ProfileAPI/appsettings.json | 23 - .../AppCreationScripts/AppCreationScripts.md | 138 - .../AppCreationScripts/Cleanup.ps1 | 189 - .../AppCreationScripts/Configure.ps1 | 539 - .../README-use-certificate.md | 175 - .../AppCreationScripts/sample.json | 106 - 6-AdvancedScenarios/1-call-api-obo/README.md | 491 - .../1-call-api-obo/ReadmeFiles/screenshot.png | Bin 24778 -> 0 bytes .../1-call-api-obo/ReadmeFiles/topology.png | Bin 48242 -> 0 bytes .../1-call-api-obo/SPA/angular.json | 103 - .../1-call-api-obo/SPA/karma.conf.js | 50 - .../1-call-api-obo/SPA/package-lock.json | 21066 ---------------- .../1-call-api-obo/SPA/package.json | 43 - .../SPA/src/app/app-routing.module.ts | 47 - .../SPA/src/app/app.component.css | 22 - .../SPA/src/app/app.component.html | 24 - .../SPA/src/app/app.component.ts | 122 - .../1-call-api-obo/SPA/src/app/app.module.ts | 139 - .../1-call-api-obo/SPA/src/app/auth-config.ts | 63 - .../1-call-api-obo/SPA/src/app/claim-utils.ts | 207 - .../SPA/src/app/home/home.component.css | 26 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 52 - .../profile-edit/profile-edit.component.css | 14 - .../profile-edit/profile-edit.component.html | 49 - .../profile-edit/profile-edit.component.ts | 38 - .../profile-view/profile-view.component.css | 17 - .../profile-view/profile-view.component.html | 28 - .../profile-view/profile-view.component.ts | 59 - .../SPA/src/app/profile.service.ts | 74 - .../1-call-api-obo/SPA/src/app/profile.ts | 5 - .../1-call-api-obo/SPA/src/app/sample.spec.ts | 114 - .../SPA/src/app/storage-utils.ts | 41 - .../1-call-api-obo/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../1-call-api-obo/SPA/src/favicon.svg | 23 - .../1-call-api-obo/SPA/src/index.html | 17 - .../1-call-api-obo/SPA/src/main.ts | 12 - .../1-call-api-obo/SPA/src/polyfills.ts | 53 - .../1-call-api-obo/SPA/src/styles.css | 4 - .../1-call-api-obo/SPA/src/test.ts | 26 - .../1-call-api-obo/SPA/tsconfig.app.json | 15 - .../1-call-api-obo/SPA/tsconfig.json | 32 - .../1-call-api-obo/SPA/tsconfig.spec.json | 18 - .../TodoListAPI.Tests/ConfigurationTests.cs | 45 - .../TodoListAPI.Tests.csproj | 30 - .../2-call-api-mt/API/TodoListAPI.sln | 31 - .../Controllers/TodoListController.cs | 206 - .../API/TodoListAPI/Models/TodoContext.cs | 15 - .../API/TodoListAPI/Models/TodoItem.cs | 20 - .../2-call-api-mt/API/TodoListAPI/Program.cs | 21 - .../Properties/launchSettings.json | 30 - .../2-call-api-mt/API/TodoListAPI/Startup.cs | 104 - .../API/TodoListAPI/TodoListAPI.csproj | 22 - .../TodoListAPI/appsettings.Development.json | 9 - .../API/TodoListAPI/appsettings.json | 24 - .../AppCreationScripts/AppCreationScripts.md | 138 - .../AppCreationScripts/Cleanup.ps1 | 189 - .../AppCreationScripts/Configure.ps1 | 547 - .../AppCreationScripts/sample.json | 111 - 6-AdvancedScenarios/2-call-api-mt/README.md | 529 - .../ReadmeFiles/ch1_admin_consent.png | Bin 35498 -> 0 bytes .../ch1_admin_consent_endpoint.png | Bin 14528 -> 0 bytes .../ReadmeFiles/ch1_admin_redirect.png | Bin 391072 -> 0 bytes .../ReadmeFiles/ch1_appreg_vs_enterprise.png | Bin 67333 -> 0 bytes .../ReadmeFiles/ch1_consent_onbehalf.png | Bin 35224 -> 0 bytes .../ReadmeFiles/ch1_enterprise.png | Bin 65828 -> 0 bytes .../ch1_grant_admin_permission.png | Bin 56611 -> 0 bytes .../ReadmeFiles/ch1_login_screen.png | Bin 36435 -> 0 bytes .../ReadmeFiles/ch1_need_admin_approval.png | Bin 24490 -> 0 bytes .../ReadmeFiles/ch1_service_principal1.png | Bin 93805 -> 0 bytes .../ReadmeFiles/ch1_service_principal2.png | Bin 63610 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch1_success.png | Bin 80240 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch2_admin.png | Bin 24680 -> 0 bytes .../ReadmeFiles/ch2_admin_prompt.png | Bin 59065 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch2_consent.png | Bin 52940 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch2_error.png | Bin 35405 -> 0 bytes .../ReadmeFiles/ch2_error_screen.png | Bin 118339 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch2_login.png | Bin 35175 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch2_success.png | Bin 22161 -> 0 bytes .../ReadmeFiles/ch2_topology.png | Bin 26517 -> 0 bytes .../ReadmeFiles/ch2_user_list.png | Bin 28961 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch3_auth.png | Bin 59688 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch3_auth2.png | Bin 29774 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch3_config.png | Bin 71414 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch3_cors.png | Bin 54909 -> 0 bytes .../ReadmeFiles/ch3_deploy_static.png | Bin 43204 -> 0 bytes .../2-call-api-mt/ReadmeFiles/ch3_publish.png | Bin 19224 -> 0 bytes .../ReadmeFiles/ch3_storage_account.png | Bin 132417 -> 0 bytes .../ReadmeFiles/consent_flow.svg | 380 - .../2-call-api-mt/ReadmeFiles/topology.png | Bin 26517 -> 0 bytes .../2-call-api-mt/SPA/angular.json | 103 - .../2-call-api-mt/SPA/karma.conf.js | 50 - .../2-call-api-mt/SPA/package-lock.json | 21060 --------------- .../2-call-api-mt/SPA/package.json | 42 - .../SPA/src/app/app-routing.module.ts | 59 - .../SPA/src/app/app.component.css | 22 - .../SPA/src/app/app.component.html | 23 - .../SPA/src/app/app.component.ts | 134 - .../2-call-api-mt/SPA/src/app/app.module.ts | 159 - .../2-call-api-mt/SPA/src/app/auth-config.ts | 66 - .../2-call-api-mt/SPA/src/app/claim-utils.ts | 191 - .../SPA/src/app/home/home.component.css | 26 - .../SPA/src/app/home/home.component.html | 39 - .../SPA/src/app/home/home.component.ts | 52 - .../SPA/src/app/onboard/onboard.component.css | 4 - .../src/app/onboard/onboard.component.html | 8 - .../SPA/src/app/onboard/onboard.component.ts | 65 - .../2-call-api-mt/SPA/src/app/sample.spec.ts | 114 - .../SPA/src/app/storage-utils.ts | 39 - .../src/app/todo-edit/todo-edit.component.css | 14 - .../app/todo-edit/todo-edit.component.html | 20 - .../src/app/todo-edit/todo-edit.component.ts | 49 - .../src/app/todo-view/todo-view.component.css | 26 - .../app/todo-view/todo-view.component.html | 59 - .../src/app/todo-view/todo-view.component.ts | 68 - .../2-call-api-mt/SPA/src/app/todo.service.ts | 32 - .../2-call-api-mt/SPA/src/app/todo.ts | 6 - .../2-call-api-mt/SPA/src/assets/.gitkeep | 0 .../SPA/src/environments/environment.prod.ts | 3 - .../SPA/src/environments/environment.ts | 16 - .../2-call-api-mt/SPA/src/favicon.svg | 23 - .../2-call-api-mt/SPA/src/index.html | 17 - .../2-call-api-mt/SPA/src/main.ts | 12 - .../2-call-api-mt/SPA/src/polyfills.ts | 53 - .../2-call-api-mt/SPA/src/styles.css | 4 - .../2-call-api-mt/SPA/src/test.ts | 26 - .../2-call-api-mt/SPA/tsconfig.app.json | 15 - .../2-call-api-mt/SPA/tsconfig.json | 32 - .../2-call-api-mt/SPA/tsconfig.spec.json | 18 - README.md | 146 +- 525 files changed, 5 insertions(+), 155137 deletions(-) delete mode 100644 1-Authentication/1-sign-in/AppCreationScripts/AppCreationScripts.md delete mode 100644 1-Authentication/1-sign-in/AppCreationScripts/Cleanup.ps1 delete mode 100644 1-Authentication/1-sign-in/AppCreationScripts/Configure.ps1 delete mode 100644 1-Authentication/1-sign-in/AppCreationScripts/sample.json delete mode 100644 1-Authentication/1-sign-in/README-incremental.md delete mode 100644 1-Authentication/1-sign-in/README.md delete mode 100644 1-Authentication/1-sign-in/ReadmeFiles/screenshot.png delete mode 100644 1-Authentication/1-sign-in/ReadmeFiles/topology.png delete mode 100644 1-Authentication/1-sign-in/SPA/.browserslistrc delete mode 100644 1-Authentication/1-sign-in/SPA/.editorconfig delete mode 100644 1-Authentication/1-sign-in/SPA/.gitignore delete mode 100644 1-Authentication/1-sign-in/SPA/CHANGELOG.md delete mode 100644 1-Authentication/1-sign-in/SPA/CONTRIBUTING.md delete mode 100644 1-Authentication/1-sign-in/SPA/LICENSE.md delete mode 100644 1-Authentication/1-sign-in/SPA/angular.json delete mode 100644 1-Authentication/1-sign-in/SPA/karma.conf.js delete mode 100644 1-Authentication/1-sign-in/SPA/package-lock.json delete mode 100644 1-Authentication/1-sign-in/SPA/package.json delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/app-routing.module.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/app.component.css delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/app.component.html delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/app.component.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/app.module.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/auth-config.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.css delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.html delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/home/home.component.css delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/home/home.component.html delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/home/home.component.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/app/sample.spec.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/assets/.gitkeep delete mode 100644 1-Authentication/1-sign-in/SPA/src/environments/environment.prod.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/environments/environment.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/favicon.svg delete mode 100644 1-Authentication/1-sign-in/SPA/src/index.html delete mode 100644 1-Authentication/1-sign-in/SPA/src/main.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/polyfills.ts delete mode 100644 1-Authentication/1-sign-in/SPA/src/styles.css delete mode 100644 1-Authentication/1-sign-in/SPA/src/test.ts delete mode 100644 1-Authentication/1-sign-in/SPA/tsconfig.app.json delete mode 100644 1-Authentication/1-sign-in/SPA/tsconfig.json delete mode 100644 1-Authentication/1-sign-in/SPA/tsconfig.spec.json delete mode 100644 1-Authentication/1-sign-in/SPA/tslint.json delete mode 100644 1-Authentication/2-sign-in-b2c/AppCreationScripts/sample.json delete mode 100644 1-Authentication/2-sign-in-b2c/README-incremental.md delete mode 100644 1-Authentication/2-sign-in-b2c/README.md delete mode 100644 1-Authentication/2-sign-in-b2c/ReadmeFiles/screenshot.png delete mode 100644 1-Authentication/2-sign-in-b2c/ReadmeFiles/topology.png delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/.browserslistrc delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/.editorconfig delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/README.md delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/angular.json delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/karma.conf.js delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/package-lock.json delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/package.json delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/app-routing.module.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.css delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.html delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/app.module.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/auth-config.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/claim-utils.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.css delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.html delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.css delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.html delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/app/sample.spec.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/assets/.gitkeep delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.prod.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/favicon.svg delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/index.html delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/main.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/polyfills.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/styles.css delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/src/test.ts delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/tsconfig.app.json delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/tsconfig.json delete mode 100644 1-Authentication/2-sign-in-b2c/SPA/tsconfig.spec.json delete mode 100644 2-Authorization-I/1-call-graph/AppCreationScripts/AppCreationScripts.md delete mode 100644 2-Authorization-I/1-call-graph/AppCreationScripts/Cleanup.ps1 delete mode 100644 2-Authorization-I/1-call-graph/AppCreationScripts/Configure.ps1 delete mode 100644 2-Authorization-I/1-call-graph/AppCreationScripts/sample.json delete mode 100644 2-Authorization-I/1-call-graph/README.md delete mode 100644 2-Authorization-I/1-call-graph/Readme-incremental.md delete mode 100644 2-Authorization-I/1-call-graph/ReadmeFiles/screenshot.png delete mode 100644 2-Authorization-I/1-call-graph/ReadmeFiles/topology.png delete mode 100644 2-Authorization-I/1-call-graph/SPA/.browserslistrc delete mode 100644 2-Authorization-I/1-call-graph/SPA/.editorconfig delete mode 100644 2-Authorization-I/1-call-graph/SPA/.gitignore delete mode 100644 2-Authorization-I/1-call-graph/SPA/angular.json delete mode 100644 2-Authorization-I/1-call-graph/SPA/karma.conf.js delete mode 100644 2-Authorization-I/1-call-graph/SPA/package-lock.json delete mode 100644 2-Authorization-I/1-call-graph/SPA/package.json delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.css delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.html delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/app-routing.module.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/app.component.css delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/app.component.html delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/app.component.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/app.module.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/auth-config.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/contacts.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.css delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.html delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/graph.service.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.css delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.html delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/profile.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.css delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.html delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/sample.spec.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/utils/claim-utils.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/app/utils/storage-utils.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/assets/.gitkeep delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/environments/environment.prod.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/environments/environment.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/favicon.ico delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/index.html delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/main.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/polyfills.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/styles.css delete mode 100644 2-Authorization-I/1-call-graph/SPA/src/test.ts delete mode 100644 2-Authorization-I/1-call-graph/SPA/tsconfig.app.json delete mode 100644 2-Authorization-I/1-call-graph/SPA/tsconfig.json delete mode 100644 2-Authorization-I/1-call-graph/SPA/tsconfig.spec.json delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI.Tests/ConfigurationTests.cs delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI.sln delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/Controllers/TodoListController.cs delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoContext.cs delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoItem.cs delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/Program.cs delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/Properties/launchSettings.json delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/Startup.cs delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/TodoListAPI.csproj delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.Development.json delete mode 100644 3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.json delete mode 100644 3-Authorization-II/1-call-api/AppCreationScripts/AppCreationScripts.md delete mode 100644 3-Authorization-II/1-call-api/AppCreationScripts/Cleanup.ps1 delete mode 100644 3-Authorization-II/1-call-api/AppCreationScripts/Configure.ps1 delete mode 100644 3-Authorization-II/1-call-api/AppCreationScripts/sample.json delete mode 100644 3-Authorization-II/1-call-api/README-incremental.md delete mode 100644 3-Authorization-II/1-call-api/README.md delete mode 100644 3-Authorization-II/1-call-api/ReadmeFiles/screenshot.png delete mode 100644 3-Authorization-II/1-call-api/ReadmeFiles/topology.png delete mode 100644 3-Authorization-II/1-call-api/SPA/angular.json delete mode 100644 3-Authorization-II/1-call-api/SPA/karma.conf.js delete mode 100644 3-Authorization-II/1-call-api/SPA/package-lock.json delete mode 100644 3-Authorization-II/1-call-api/SPA/package.json delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/app-routing.module.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/app.component.css delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/app.component.html delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/app.component.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/app.module.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/auth-config.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/home/home.component.css delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/home/home.component.html delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/home/home.component.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/sample.spec.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.css delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.html delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.css delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.html delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo.service.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/todo.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/app/utils/claim-utils.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/assets/.gitkeep delete mode 100644 3-Authorization-II/1-call-api/SPA/src/environments/environment.prod.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/environments/environment.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/favicon.svg delete mode 100644 3-Authorization-II/1-call-api/SPA/src/index.html delete mode 100644 3-Authorization-II/1-call-api/SPA/src/main.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/polyfills.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/src/styles.css delete mode 100644 3-Authorization-II/1-call-api/SPA/src/test.ts delete mode 100644 3-Authorization-II/1-call-api/SPA/tsconfig.app.json delete mode 100644 3-Authorization-II/1-call-api/SPA/tsconfig.json delete mode 100644 3-Authorization-II/1-call-api/SPA/tsconfig.spec.json delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/ConfigurationTests.cs delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI.sln delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Controllers/TodoListController.cs delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoContext.cs delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoItem.cs delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Program.cs delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Properties/launchSettings.json delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Startup.cs delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/TodoListAPI.csproj delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.Development.json delete mode 100644 3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.json delete mode 100644 3-Authorization-II/2-call-api-b2c/AppCreationScripts/sample.json delete mode 100644 3-Authorization-II/2-call-api-b2c/README-incremental.md delete mode 100644 3-Authorization-II/2-call-api-b2c/README.md delete mode 100644 3-Authorization-II/2-call-api-b2c/ReadmeFiles/screenshot.png delete mode 100644 3-Authorization-II/2-call-api-b2c/ReadmeFiles/topology.png delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/.browserslistrc delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/.editorconfig delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/README.md delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/angular.json delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/karma.conf.js delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/package-lock.json delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/package.json delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/app-routing.module.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.css delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.html delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/app.module.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/auth-config.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/claim-utils.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.css delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.html delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/sample.spec.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.css delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.html delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.css delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.html delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/app/todo.service.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/assets/.gitkeep delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.prod.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/favicon.svg delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/index.html delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/main.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/polyfills.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/styles.css delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/src/test.ts delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/tsconfig.app.json delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/tsconfig.json delete mode 100644 3-Authorization-II/2-call-api-b2c/SPA/tsconfig.spec.json delete mode 100644 4-Deployment/README-incremental.md delete mode 100644 4-Deployment/README.md delete mode 100644 4-Deployment/ReadmeFiles/screenshot.png delete mode 100644 4-Deployment/ReadmeFiles/topology.png delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI.Tests/ConfigurationTests.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI.sln delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Controllers/TodoListController.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoContext.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoItem.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Program.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Properties/launchSettings.json delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/Startup.cs delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/TodoListAPI.csproj delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.Development.json delete mode 100644 5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.json delete mode 100644 5-AccessControl/1-call-api-roles/AppCreationScripts/AppCreationScripts.md delete mode 100644 5-AccessControl/1-call-api-roles/AppCreationScripts/Cleanup.ps1 delete mode 100644 5-AccessControl/1-call-api-roles/AppCreationScripts/CleanupUsersAndAssignRoles.ps1 delete mode 100644 5-AccessControl/1-call-api-roles/AppCreationScripts/Configure.ps1 delete mode 100644 5-AccessControl/1-call-api-roles/AppCreationScripts/CreateUsersAndAssignRoles.ps1 delete mode 100644 5-AccessControl/1-call-api-roles/AppCreationScripts/sample.json delete mode 100644 5-AccessControl/1-call-api-roles/README.md delete mode 100644 5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_dashboard.png delete mode 100644 5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_error.png delete mode 100644 5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_login.png delete mode 100644 5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_todolist.png delete mode 100644 5-AccessControl/1-call-api-roles/ReadmeFiles/topology.png delete mode 100644 5-AccessControl/1-call-api-roles/SPA/angular.json delete mode 100644 5-AccessControl/1-call-api-roles/SPA/karma.conf.js delete mode 100644 5-AccessControl/1-call-api-roles/SPA/package-lock.json delete mode 100644 5-AccessControl/1-call-api-roles/SPA/package.json delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/app-routing.module.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/app.component.css delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/app.component.html delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/app.component.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/app.module.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/auth-config.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/base.guard.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.css delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.html delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.css delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.html delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/role.guard.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/sample.spec.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.css delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.html delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.css delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.html delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo.service.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/todo.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/app/utils/claim-utils.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/assets/.gitkeep delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/environments/environment.prod.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/environments/environment.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/favicon.svg delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/index.html delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/main.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/polyfills.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/styles.css delete mode 100644 5-AccessControl/1-call-api-roles/SPA/src/test.ts delete mode 100644 5-AccessControl/1-call-api-roles/SPA/tsconfig.app.json delete mode 100644 5-AccessControl/1-call-api-roles/SPA/tsconfig.json delete mode 100644 5-AccessControl/1-call-api-roles/SPA/tsconfig.spec.json delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/ConfigurationTests.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI.sln delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Controllers/TodoListController.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/CacheSettings.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoContext.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoItem.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Program.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Properties/launchSettings.json delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Services/GraphHelper.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/Startup.cs delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/TodoListAPI.csproj delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.Development.json delete mode 100644 5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.json delete mode 100644 5-AccessControl/2-call-api-groups/AppCreationScripts/AppCreationScripts.md delete mode 100644 5-AccessControl/2-call-api-groups/AppCreationScripts/BulkCreateGroups.ps1 delete mode 100644 5-AccessControl/2-call-api-groups/AppCreationScripts/BulkRemoveGroups.ps1 delete mode 100644 5-AccessControl/2-call-api-groups/AppCreationScripts/Cleanup.ps1 delete mode 100644 5-AccessControl/2-call-api-groups/AppCreationScripts/Configure.ps1 delete mode 100644 5-AccessControl/2-call-api-groups/AppCreationScripts/sample.json delete mode 100644 5-AccessControl/2-call-api-groups/README.md delete mode 100644 5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_dashboard.png delete mode 100644 5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_error.png delete mode 100644 5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_login.png delete mode 100644 5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_todolist.png delete mode 100644 5-AccessControl/2-call-api-groups/ReadmeFiles/topology.png delete mode 100644 5-AccessControl/2-call-api-groups/SPA/angular.json delete mode 100644 5-AccessControl/2-call-api-groups/SPA/karma.conf.js delete mode 100644 5-AccessControl/2-call-api-groups/SPA/package-lock.json delete mode 100644 5-AccessControl/2-call-api-groups/SPA/package.json delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/app-routing.module.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/app.component.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/app.component.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/app.component.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/app.module.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/auth-config.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/base.guard.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/graph.service.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/group.guard.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/sample.spec.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/todo.service.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/utils/claim-utils.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/app/utils/storage-utils.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/assets/.gitkeep delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/environments/environment.prod.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/environments/environment.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/favicon.svg delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/index.html delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/main.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/polyfills.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/styles.css delete mode 100644 5-AccessControl/2-call-api-groups/SPA/src/test.ts delete mode 100644 5-AccessControl/2-call-api-groups/SPA/tsconfig.app.json delete mode 100644 5-AccessControl/2-call-api-groups/SPA/tsconfig.json delete mode 100644 5-AccessControl/2-call-api-groups/SPA/tsconfig.spec.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ConfigurationTests.cs delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ProfileAPI.Tests.csproj delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.sln delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Controllers/ProfileController.cs delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileContext.cs delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileItem.cs delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/ProfileAPI.csproj delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Program.cs delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Properties/launchSettings.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Startup.cs delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.Development.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/AppCreationScripts.md delete mode 100644 6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Cleanup.ps1 delete mode 100644 6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Configure.ps1 delete mode 100644 6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/README-use-certificate.md delete mode 100644 6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/sample.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/README.md delete mode 100644 6-AdvancedScenarios/1-call-api-obo/ReadmeFiles/screenshot.png delete mode 100644 6-AdvancedScenarios/1-call-api-obo/ReadmeFiles/topology.png delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/angular.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/karma.conf.js delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/package-lock.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/package.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app-routing.module.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.css delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.html delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.module.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/auth-config.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/claim-utils.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.css delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.html delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.css delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.html delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.css delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.html delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.service.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/sample.spec.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/app/storage-utils.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/assets/.gitkeep delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.prod.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/favicon.svg delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/index.html delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/main.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/polyfills.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/styles.css delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/src/test.ts delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.app.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.json delete mode 100644 6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.spec.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/ConfigurationTests.cs delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.sln delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Controllers/TodoListController.cs delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoContext.cs delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoItem.cs delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Program.cs delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Properties/launchSettings.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Startup.cs delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/TodoListAPI.csproj delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.Development.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/AppCreationScripts.md delete mode 100644 6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Cleanup.ps1 delete mode 100644 6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Configure.ps1 delete mode 100644 6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/sample.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/README.md delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_consent.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_consent_endpoint.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_redirect.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_appreg_vs_enterprise.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_consent_onbehalf.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_enterprise.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_grant_admin_permission.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_login_screen.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_need_admin_approval.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_service_principal1.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_service_principal2.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_success.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_admin.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_admin_prompt.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_consent.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_error.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_error_screen.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_login.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_success.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_topology.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_user_list.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_auth.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_auth2.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_config.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_cors.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_deploy_static.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_publish.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_storage_account.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/consent_flow.svg delete mode 100644 6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/topology.png delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/angular.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/karma.conf.js delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/package-lock.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/package.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app-routing.module.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.css delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.html delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.module.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/auth-config.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/claim-utils.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.css delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.html delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.css delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.html delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/sample.spec.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/storage-utils.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.css delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.html delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.css delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.html delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.service.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/assets/.gitkeep delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.prod.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/favicon.svg delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/index.html delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/main.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/polyfills.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/styles.css delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/src/test.ts delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.app.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.json delete mode 100644 6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.spec.json diff --git a/1-Authentication/1-sign-in/AppCreationScripts/AppCreationScripts.md b/1-Authentication/1-sign-in/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/1-Authentication/1-sign-in/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/1-Authentication/1-sign-in/AppCreationScripts/Cleanup.ps1 b/1-Authentication/1-sign-in/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index 8f2eda48..00000000 --- a/1-Authentication/1-sign-in/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,152 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'spa' (msal-angular-spa) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-angular-spa'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-angular-spa'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-angular-spa) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-angular-spa'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-angular-spa.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-angular-spa'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-angular-spa'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/1-Authentication/1-sign-in/AppCreationScripts/Configure.ps1 b/1-Authentication/1-sign-in/AppCreationScripts/Configure.ps1 deleted file mode 100644 index 83c1a11e..00000000 --- a/1-Authentication/1-sign-in/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,252 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the spa AAD application - Write-Host "Creating the AAD application (msal-angular-spa)" - # create the application - $spaAadApplication = New-MgApplication -DisplayName "msal-angular-spa" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200"; ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - $currentAppId = $spaAadApplication.AppId - $currentAppObjectId = $spaAadApplication.Id - - $tenantName = (Get-MgApplication -ApplicationId $currentAppObjectId).PublisherDomain - #Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @("https://$tenantName/msal-angular-spa") - - # create the service principal of the newly created application - $spaServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($spaServicePrincipal.DisplayName)'" - } - Write-Host "Done creating the spa application (msal-angular-spa)" - - # URL of the AAD application in the Azure portal - # Future? $spaPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $spaPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "spa$currentAppIdmsal-angular-spa" -Path createdApps.html - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-angular-spa' at `n $spaPortalUrl" -ForegroundColor Green - - # Update config file for 'spa' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $spaAadApplication.AppId;"Enter_the_Tenant_Info_Here" = $tenantId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host "- App spa - created at $spaPortalUrl" - - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/1-Authentication/1-sign-in/AppCreationScripts/sample.json b/1-Authentication/1-sign-in/AppCreationScripts/sample.json deleted file mode 100644 index 7b87f3c3..00000000 --- a/1-Authentication/1-sign-in/AppCreationScripts/sample.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "Sample": { - "Title": "Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory", - "Level": 100, - "Client": "Angular SPA", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Languages": ["typescript"], - "Products": ["azure-active-directory", "msal-angular"], - "Description": "Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory", - "Platform": "Javascript" - }, - "AADApps": [ - { - "Id": "spa", - "Name": "msal-angular-spa", - "Kind": "SinglePageApplication", - "Audience": "AzureADMyOrg", - "SDK": "MsalAngular", - "HomePage": "http://localhost:4200", - "ReplyUrls": "http://localhost:4200", - "SampleSubPath": "1-Authentication\\1-sign-in\\SPA" - } - ], - "CodeConfiguration": [ - { - "App": "spa", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantId" - } - ] - } - ] -} diff --git a/1-Authentication/1-sign-in/README-incremental.md b/1-Authentication/1-sign-in/README-incremental.md deleted file mode 100644 index 0cc9a4e1..00000000 --- a/1-Authentication/1-sign-in/README-incremental.md +++ /dev/null @@ -1,361 +0,0 @@ -# Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory - - 1. [Overview](#overview) - 1. [Scenario](#scenario) - 1. [Contents](#contents) - 1. [Prerequisites](#prerequisites) - 1. [Setup](#setup) - 1. [Registration](#registration) - 1. [Running the sample](#running-the-sample) - 1. [Explore the sample](#explore-the-sample) - 1. [About the code](#about-the-code) - 1. [More information](#more-information) - 1. [Community Help and Support](#community-help-and-support) - 1. [Contributing](#contributing) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with Azure Active Directory (Azure AD) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). - -Here you'll learn about [ID Tokens](https://docs.microsoft.com/azure/active-directory/develop/id-tokens), [OIDC scopes](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes), [single-sign on](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso), **silent requests** and more. - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to obtain an ID Token from **Azure AD**. -2. The **ID Token** proves that the user has successfully authenticated against **Azure AD**. - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|---------------------------------|-----------------------------------------------------------| -| `src/app/auth-config.ts` | Authentication parameters reside here. | -| `src/app/app.module.ts` | MSAL Angular configuration parameters reside here. | -| `src/app/app-routing.module.ts` | Configure your MSAL-Guard here. | - -## Prerequisites - -- An **Azure AD** tenant. For more information see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/quickstart-create-new-tenant) -- A user account in your **Azure AD** tenant. This sample will not work with a **personal Microsoft account**. Therefore, if you signed in to the [Azure portal](https://portal.azure.com) with a personal account and have never created a user account in your directory before, you need to do that now. - -## Setup - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository .zip file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2: Install project dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 1-Authentication/1-sign-in/SPA - npm install -``` - -## Registration - -There is one project in this sample. To register it, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
- Expand this section if you want to use this automation: - -> :warning: If you have never used **Azure AD Powershell** before, we recommend you go through the [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - -1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory -1. If you have never used Azure AD Powershell before, we recommend you go through the [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. -1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. -1. In PowerShell run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 - ``` - - > Other ways of running the scripts are described in [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) - > The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
- -### Choose the Azure AD tenant where you want to create your applications - -As a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -### Register the app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure AD** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - - In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - - Under **Supported account types**, select **Accounts in this organizational directory only**. - - In the **Redirect URI** section, select **Single-page application** in the combo-box and enter the following redirect URI: `http://localhost:4200`. -1. Select **Register** to create the application. -1. In the app's registration screen, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. Select **Save** to save your changes. - -#### Configure the app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with the tenant ID of `msal-angular-spa` app copied from the Azure portal. - -## Running the sample - -```console - cd 1-Authentication/1-sign-in/SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Select the **Sign-in** button on the top right corner. Once you sign-in, you will see some of the important claims in your ID token. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## About the code - -MSAL Angular is a wrapper around MSAL.js (i.e. *msal-browser*). As such, many of MSAL.js's public APIs are also available to use with MSAL Angular, while MSAL Angular itself offers additional [public APIs](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/public-apis.md). - -### Configuration - -You can initialize your application in several ways, for instance, by loading the configuration parameters from another server. See [Configuration options](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md) for more information. - -In the sample, authentication parameters reside in [auth-config.ts](./SPA/src/app/auth-config.ts). These parameters then are used for initializing MSAL Angular configuration options in [app.module.ts](./SPA/src/app/app.module.ts). - -### Sign-in - -**MSAL Angular** exposes 3 login APIs: `loginPopup()`, `loginRedirect()` and `ssoSilent()`. First, setup your default interaction type in [app.module.ts](./SPA/src/app/app.module.ts): - -```typescript -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; -} -``` - -Then, define a login method in [app.component.ts](./SPA/src/app/app.component.ts) as follows: - -```typescript -export class AppComponent implements OnInit { - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) {} - - ngOnInit(): void { - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } -} -``` - -If you already have a session that exists with the authentication server, you can use the `ssoSilent()` API to make a request for tokens without interaction. You will need to pass a [loginHint](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso#automatically-select-account-on-azure-ad) in the request object in order to successfully obtain a token silently. - -```typescript -export class AppComponent implements OnInit { - - constructor( - private authService: MsalService, - ) {} - - ngOnInit(): void { - const silentRequest: SsoSilentRequest = { - scopes: ["User.Read"], - loginHint: "user@contoso.com" - } - - this.authService.ssoSilent(silentRequest) - .subscribe({ - next: (result: AuthenticationResult) => { - console.log("SsoSilent succeeded!"); - }, - error: (error) => { - this.authService.loginRedirect(); - } - }); - } -} -``` - -### Sign-in audience and account types - -This sample is meant to work with accounts in your organization (aka *single-tenant*). If you would like to allow sign-ins from other organizations and/or with other types of accounts, you have to configure your `authority` string in `authConfig.js` accordingly. For example: - -```typescript -const msalConfig = { - auth: { - clientId: "", - authority: "https://login.microsoftonline.com/common", // allows sign-ins with any type of account - redirectUri: "", - }, -``` - -For more information about audiences and account types, please see: [Validation differences by supported account types (signInAudience)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation) - -> :warning: Be aware that making an application multi-tenant entails more than just modifying the `authority` string. For more information, please see [How to: Sign in any Azure Active Directory user using the multi-tenant application pattern](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant). - -### ID Token Validation - -When you receive an [ID token](https://docs.microsoft.com/azure/active-directory/develop/id-tokens) directly from the IdP on a secure channel (e.g. HTTPS), such is the case with SPAs, there’s no need to validate it. If you were to do it, you would validate it by asking the same server that gave you the ID token to give you the keys needed to validate it, which renders it pointless, as if one is compromised so is the other. - -### Sign-out - -The application redirects the user to the **Microsoft identity platform** logout endpoint to sign out. This endpoint clears the user's session from the browser. If your app did not go to the logout endpoint, the user may re-authenticate to your app without entering their credentials again, because they would have a valid single sign-in session with the **Microsoft identity platform** endpoint. For more information, see: [Send a sign-out request](https://docs.microsoft.com/azure/active-directory/develop/v2-protocols-oidc#send-a-sign-out-request). - -### Securing Routes - -You can add authentication to secure specific routes in your application by just adding `canActivate: [MsalGuard]` to your route definition. It can be added at the parent or child routes. This ensures that the user must be signed-in to access the secured route. - -```typescript - const routes: Routes = [ - { - path: 'guarded', - component: GuardedComponent, - canActivate: [ - MsalGuard - ] - } - ] -``` - -### Events API - -Using the event API, you can register an event callback that will do something when an event is emitted. When registering an event callback in an Angular component you will need to make sure you do 2 things. - -1. The callback is registered only once -2. The callback is unregistered before the component unmounts. - -```typescript -export class HomeComponent implements OnInit { - - private readonly _destroying$ = new Subject(); - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // do something with the result, such as accessing ID token - }); - } - - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} -``` - -For more information, see: [Events in MSAL Angular v2](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md). - -### Authentication with National Clouds - -**National Clouds** (aka Sovereign Clouds) are physically isolated instances of Azure. These regions of Azure are designed to make sure that data residency, sovereignty, and compliance requirements are honored within geographical boundaries. Enabling your application for sovereign clouds requires you to: - -- register your application in a specific portal, depending on the cloud. -- use a specific authority, depending on the cloud in the configuration file for your application. -- in case you want to call the graph, this requires a specific Graph endpoint URL, depending on the cloud. - -For instance, to configure this sample for **Azure AD Germany** National Cloud: - -1. Open the `src\app\auth-config.ts` file. -1. Find the app key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of the `ms-identity-javascript-angular-signin` application copied from the Azure portal. -1. Find the app key `https://login.microsoftonline.com/Enter_the_Tenant_Info_Here` and replace the existing value with `https://portal.microsoftazure.de/`. - -See [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) for more information. - -## Next Tutorial - -Continue with the next tutorial: [Call the Microsoft Graph API](../../2-Authorization-I/1-call-graph/README-incremental.md). - -## More information - -- [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -- [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -- [Quickstart: Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -- [Quickstart: Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -- [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -- [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -- [Single sign-on with MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso) -- [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -- [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -- [Pass custom state in authentication requests using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-pass-custom-state-authentication-request) -- [Prompt behavior in MSAL.js interactive requests](https://docs.microsoft.com/azure/active-directory/develop/msal-js-prompt-behavior) -- [Use MSAL.js to work with Azure AD B2C](https://docs.microsoft.com/azure/active-directory/develop/msal-b2c-overview) - -For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. \ No newline at end of file diff --git a/1-Authentication/1-sign-in/README.md b/1-Authentication/1-sign-in/README.md deleted file mode 100644 index b06829c7..00000000 --- a/1-Authentication/1-sign-in/README.md +++ /dev/null @@ -1,379 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with Azure Active Directory (Azure AD) using the Microsoft Authentication Library for Angular (MSAL Angular). -languages: - - javascript - - typescript -products: - - azure-active-directory-b2c - - msal-js - - msal-angular - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-aad -extensions: - services: ms-identity - platform: JavaScript - endpoint: AAD v2.0 - level: 100 - client: Angular SPA - service: ---- - -# Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory - - 1. [Overview](#overview) - 1. [Scenario](#scenario) - 1. [Contents](#contents) - 1. [Prerequisites](#prerequisites) - 1. [Setup](#setup) - 1. [Registration](#registration) - 1. [Running the sample](#running-the-sample) - 1. [Explore the sample](#explore-the-sample) - 1. [About the code](#about-the-code) - 1. [More information](#more-information) - 1. [Community Help and Support](#community-help-and-support) - 1. [Contributing](#contributing) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with Azure Active Directory (Azure AD) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). - -Here you'll learn about [ID Tokens](https://docs.microsoft.com/azure/active-directory/develop/id-tokens), [OIDC scopes](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes), [single-sign on](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso), **silent requests** and more. - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to obtain an ID Token from **Azure AD**. -2. The **ID Token** proves that the user has successfully authenticated against **Azure AD**. - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|---------------------------------|-----------------------------------------------------------| -| `src/app/auth-config.ts` | Authentication parameters reside here. | -| `src/app/app.module.ts` | MSAL Angular configuration parameters reside here. | -| `src/app/app-routing.module.ts` | Configure your MSAL-Guard here. | - -## Prerequisites - -- An **Azure AD** tenant. For more information see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/quickstart-create-new-tenant) -- A user account in your **Azure AD** tenant. This sample will not work with a **personal Microsoft account**. Therefore, if you signed in to the [Azure portal](https://portal.azure.com) with a personal account and have never created a user account in your directory before, you need to do that now. - -## Setup - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository .zip file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2: Install project dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 1-Authentication/1-sign-in/SPA - npm install -``` - -## Registration - -There is one project in this sample. To register it, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
- Expand this section if you want to use this automation: - -> :warning: If you have never used **Azure AD Powershell** before, we recommend you go through the [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - -1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory -1. If you have never used Azure AD Powershell before, we recommend you go through the [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. -1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. -1. In PowerShell run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 - ``` - - > Other ways of running the scripts are described in [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) - > The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
- -### Choose the Azure AD tenant where you want to create your applications - -As a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -### Register the app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure AD** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - - In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - - Under **Supported account types**, select **Accounts in this organizational directory only**. - - In the **Redirect URI** section, select **Single-page application** in the combo-box and enter the following redirect URI: `http://localhost:4200`. -1. Select **Register** to create the application. -1. In the app's registration screen, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. Select **Save** to save your changes. - -#### Configure the app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with the tenant ID of `msal-angular-spa` app copied from the Azure portal. - -## Running the sample - -```console - cd 1-Authentication/1-sign-in/SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Select the **Sign-in** button on the top right corner. Once you sign-in, you will see some of the important claims in your ID token. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## About the code - -MSAL Angular is a wrapper around MSAL.js (i.e. *msal-browser*). As such, many of MSAL.js's public APIs are also available to use with MSAL Angular, while MSAL Angular itself offers additional [public APIs](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/public-apis.md). - -### Configuration - -You can initialize your application in several ways, for instance, by loading the configuration parameters from another server. See [Configuration options](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md) for more information. - -In the sample, authentication parameters reside in [auth-config.ts](./SPA/src/app/auth-config.ts). These parameters then are used for initializing MSAL Angular configuration options in [app.module.ts](./SPA/src/app/app.module.ts). - -### Sign-in - -**MSAL Angular** exposes 3 login methods: `loginPopup()`, `loginRedirect()` and `ssoSilent()`. First, setup your default interaction type in [app.module.ts](./SPA/src/app/app.module.ts): - -```typescript -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; -} -``` - -Then, define a login method in [app.component.ts](./SPA/src/app/app.component.ts) as follows: - -```typescript -export class AppComponent implements OnInit { - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) {} - - ngOnInit(): void { - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } -} -``` - -If you already have a session that exists with the authentication server, you can use the `ssoSilent()` API to make a request for tokens without interaction. You will need to pass a [loginHint](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso#automatically-select-account-on-azure-ad) in the request object in order to successfully obtain a token silently. - -```typescript -export class AppComponent implements OnInit { - - constructor( - private authService: MsalService, - ) {} - - ngOnInit(): void { - const silentRequest: SsoSilentRequest = { - scopes: ["User.Read"], - loginHint: "user@contoso.com" - } - - this.authService.ssoSilent(silentRequest) - .subscribe({ - next: (result: AuthenticationResult) => { - console.log("SsoSilent succeeded!"); - }, - error: (error) => { - this.authService.loginRedirect(); - } - }); - } -} -``` - -### Sign-in audience and account types - -This sample is meant to work with accounts in your organization (aka *single-tenant*). If you would like to allow sign-ins from other organizations and/or with other types of accounts, you have to configure your `authority` string in `authConfig.js` accordingly. For example: - -```typescript -const msalConfig = { - auth: { - clientId: "", - authority: "https://login.microsoftonline.com/common", // allows sign-ins with any type of account - redirectUri: "", - }, -``` - -For more information about audiences and account types, please see: [Validation differences by supported account types (signInAudience)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation) - -> :warning: Be aware that making an application multi-tenant entails more than just modifying the `authority` string. For more information, please see [How to: Sign in any Azure Active Directory user using the multi-tenant application pattern](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant). - -### ID Token Validation - -When you receive an [ID token](https://docs.microsoft.com/azure/active-directory/develop/id-tokens) directly from the IdP on a secure channel (e.g. HTTPS), such is the case with SPAs, there’s no need to validate it. If you were to do it, you would validate it by asking the same server that gave you the ID token to give you the keys needed to validate it, which renders it pointless, as if one is compromised so is the other. - -### Sign-out - -The application redirects the user to the **Microsoft identity platform** logout endpoint to sign out. This endpoint clears the user's session from the browser. If your app did not go to the logout endpoint, the user may re-authenticate to your app without entering their credentials again, because they would have a valid single sign-in session with the **Microsoft identity platform** endpoint. For more information, see: [Send a sign-out request](https://docs.microsoft.com/azure/active-directory/develop/v2-protocols-oidc#send-a-sign-out-request). - -### Securing Routes - -You can add authentication to secure specific routes in your application by just adding `canActivate: [MsalGuard]` to your route definition. It can be added at the parent or child routes. This ensures that the user must be signed-in to access the secured route. - -```typescript - const routes: Routes = [ - { - path: 'guarded', - component: GuardedComponent, - canActivate: [ - MsalGuard - ] - } - ] -``` - -### Events API - -Using the event API, you can register an event callback that will do something when an event is emitted. When registering an event callback in an Angular component you will need to make sure you do 2 things. - -1. The callback is registered only once -2. The callback is unregistered before the component unmounts. - -```typescript -export class HomeComponent implements OnInit { - - private readonly _destroying$ = new Subject(); - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // do something with the result, such as accessing ID token - }); - } - - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} -``` - -For more information, see: [Events in MSAL Angular v2](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md). - -### Authentication with National Clouds - -**National Clouds** (aka Sovereign Clouds) are physically isolated instances of Azure. These regions of Azure are designed to make sure that data residency, sovereignty, and compliance requirements are honored within geographical boundaries. Enabling your application for sovereign clouds requires you to: - -- register your application in a specific portal, depending on the cloud. -- use a specific authority, depending on the cloud in the configuration file for your application. -- in case you want to call the graph, this requires a specific Graph endpoint URL, depending on the cloud. - -For instance, to configure this sample for **Azure AD Germany** National Cloud: - -1. Open the `src\app\auth-config.ts` file. -1. Find the app key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of the `ms-identity-javascript-angular-signin` application copied from the Azure portal. -1. Find the app key `https://login.microsoftonline.com/Enter_the_Tenant_Info_Here` and replace the existing value with `https://portal.microsoftazure.de/`. - -See [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) for more information. - -## More information - -- [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -- [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -- [Quickstart: Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -- [Quickstart: Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -- [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -- [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -- [Single sign-on with MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso) -- [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -- [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -- [Pass custom state in authentication requests using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-pass-custom-state-authentication-request) -- [Prompt behavior in MSAL.js interactive requests](https://docs.microsoft.com/azure/active-directory/develop/msal-js-prompt-behavior) -- [Use MSAL.js to work with Azure AD B2C](https://docs.microsoft.com/azure/active-directory/develop/msal-b2c-overview) - -For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/1-Authentication/1-sign-in/ReadmeFiles/screenshot.png b/1-Authentication/1-sign-in/ReadmeFiles/screenshot.png deleted file mode 100644 index 27add1e25def9119a0fe504eb588eaf1709fcb0f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31735 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 diff --git a/1-Authentication/1-sign-in/SPA/.browserslistrc b/1-Authentication/1-sign-in/SPA/.browserslistrc deleted file mode 100644 index ff704229..00000000 --- a/1-Authentication/1-sign-in/SPA/.browserslistrc +++ /dev/null @@ -1,17 +0,0 @@ -# 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 - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR -IE 11 # Angular supports IE 11 only as an opt-in. To opt-in, remove the 'not' prefix on this line. diff --git a/1-Authentication/1-sign-in/SPA/.editorconfig b/1-Authentication/1-sign-in/SPA/.editorconfig deleted file mode 100644 index 59d9a3a3..00000000 --- a/1-Authentication/1-sign-in/SPA/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/1-Authentication/1-sign-in/SPA/.gitignore b/1-Authentication/1-sign-in/SPA/.gitignore deleted file mode 100644 index 86d943a9..00000000 --- a/1-Authentication/1-sign-in/SPA/.gitignore +++ /dev/null @@ -1,46 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# compiled output -/dist -/tmp -/out-tsc -# Only exists if Bazel was run -/bazel-out - -# dependencies -/node_modules - -# profiling files -chrome-profiler-events*.json -speed-measure-plugin*.json - -# 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 -.history/* - -# misc -/.sass-cache -/connect.lock -/coverage -/libpeerconnection.log -npm-debug.log -yarn-error.log -testem.log -/typings - -# System Files -.DS_Store -Thumbs.db diff --git a/1-Authentication/1-sign-in/SPA/CHANGELOG.md b/1-Authentication/1-sign-in/SPA/CHANGELOG.md deleted file mode 100644 index 98247527..00000000 --- a/1-Authentication/1-sign-in/SPA/CHANGELOG.md +++ /dev/null @@ -1,13 +0,0 @@ -## [project-title] Changelog - - -# x.y.z (yyyy-mm-dd) - -*Features* -* ... - -*Bug Fixes* -* ... - -*Breaking Changes* -* ... diff --git a/1-Authentication/1-sign-in/SPA/CONTRIBUTING.md b/1-Authentication/1-sign-in/SPA/CONTRIBUTING.md deleted file mode 100644 index a9115cf5..00000000 --- a/1-Authentication/1-sign-in/SPA/CONTRIBUTING.md +++ /dev/null @@ -1,76 +0,0 @@ -# Contributing to [project-title] - -This project welcomes contributions and suggestions. Most contributions require you to agree to a -Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us -the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. - -When you submit a pull request, a CLA bot will automatically determine whether you need to provide -a CLA and decorate the PR appropriately (e.g., status check, comment). Simply follow the instructions -provided by the bot. You will only need to do this once across all repos using our CLA. - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or -contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - - - [Code of Conduct](#coc) - - [Issues and Bugs](#issue) - - [Feature Requests](#feature) - - [Submission Guidelines](#submit) - -## Code of Conduct -Help us keep this project open and inclusive. Please read and follow our [Code of Conduct](https://opensource.microsoft.com/codeofconduct/). - -## Found an Issue? -If you find a bug in the source code or a mistake in the documentation, you can help us by -[submitting an issue](#submit-issue) to the GitHub Repository. Even better, you can -[submit a Pull Request](#submit-pr) with a fix. - -## Want a Feature? -You can *request* a new feature by [submitting an issue](#submit-issue) to the GitHub -Repository. If you would like to *implement* a new feature, please submit an issue with -a proposal for your work first, to be sure that we can use it. - -* **Small Features** can be crafted and directly [submitted as a Pull Request](#submit-pr). - -## Submission Guidelines - -### Submitting an Issue -Before you submit an issue, search the archive, maybe your question was already answered. - -If your issue appears to be a bug, and hasn't been reported, open a new issue. -Help us to maximize the effort we can spend fixing issues and adding new -features, by not reporting duplicate issues. Providing the following information will increase the -chances of your issue being dealt with quickly: - -* **Overview of the Issue** - if an error is being thrown a non-minified stack trace helps -* **Version** - what version is affected (e.g. 0.1.2) -* **Motivation for or Use Case** - explain what are you trying to do and why the current behavior is a bug for you -* **Browsers and Operating System** - is this a problem with all browsers? -* **Reproduce the Error** - provide a live example or a unambiguous set of steps -* **Related Issues** - has a similar issue been reported before? -* **Suggest a Fix** - if you can't fix the bug yourself, perhaps you can point to what might be - causing the problem (line of code or commit) - -You can file new issues by providing the above information at the corresponding repository's issues link: https://github.com/[organization-name]/[repository-name]/issues/new]. - -### Submitting a Pull Request (PR) -Before you submit your Pull Request (PR) consider the following guidelines: - -* Search the repository (https://github.com/[organization-name]/[repository-name]/pulls) for an open or closed PR - that relates to your submission. You don't want to duplicate effort. - -* Make your changes in a new git fork: - -* Commit your changes using a descriptive commit message -* Push your fork to GitHub: -* In GitHub, create a pull request -* If we suggest changes then: - * Make the required updates. - * Rebase your fork and force push to your GitHub repository (this will update your Pull Request): - - ```shell - git rebase master -i - git push -f - ``` - -That's it! Thank you for your contribution! diff --git a/1-Authentication/1-sign-in/SPA/LICENSE.md b/1-Authentication/1-sign-in/SPA/LICENSE.md deleted file mode 100644 index 79656060..00000000 --- a/1-Authentication/1-sign-in/SPA/LICENSE.md +++ /dev/null @@ -1,21 +0,0 @@ - MIT License - - Copyright (c) Microsoft Corporation. - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in all - copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - SOFTWARE \ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/angular.json b/1-Authentication/1-sign-in/SPA/angular.json deleted file mode 100644 index 7c533a77..00000000 --- a/1-Authentication/1-sign-in/SPA/angular.json +++ /dev/null @@ -1,130 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "angular11-sample-app": { - "projectType": "application", - "schematics": { - "@schematics/angular:application": { - "strict": true - } - }, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/angular11-sample-app", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "aot": true, - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "optimization": true, - "outputHashing": "all", - "sourceMap": false, - "namedChunks": false, - "extractLicenses": true, - "vendorChunk": false, - "buildOptimizer": true, - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ] - } - } - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "browserTarget": "angular11-sample-app:build" - }, - "configurations": { - "production": { - "browserTarget": "angular11-sample-app:build:production" - } - } - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "angular11-sample-app:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/deeppurple-amber.css", - "src/styles.css" - ], - "scripts": [] - } - }, - "lint": { - "builder": "@angular-devkit/build-angular:tslint", - "options": { - "tsConfig": [ - "tsconfig.app.json", - "tsconfig.spec.json", - "e2e/tsconfig.json" - ], - "exclude": [ - "**/node_modules/**" - ] - } - }, - "e2e": { - "builder": "@angular-devkit/build-angular:protractor", - "options": { - "protractorConfig": "e2e/protractor.conf.js", - "devServerTarget": "angular11-sample-app:serve" - }, - "configurations": { - "production": { - "devServerTarget": "angular11-sample-app:serve:production" - } - } - } - } - } - }, - "defaultProject": "angular11-sample-app" -} diff --git a/1-Authentication/1-sign-in/SPA/karma.conf.js b/1-Authentication/1-sign-in/SPA/karma.conf.js deleted file mode 100644 index f9863022..00000000 --- a/1-Authentication/1-sign-in/SPA/karma.conf.js +++ /dev/null @@ -1,41 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/angular11-sample-app'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/1-Authentication/1-sign-in/SPA/package-lock.json b/1-Authentication/1-sign-in/SPA/package-lock.json deleted file mode 100644 index d5bd9aad..00000000 --- a/1-Authentication/1-sign-in/SPA/package-lock.json +++ /dev/null @@ -1,14059 +0,0 @@ -{ - "name": "ms-identity-angular-c1s1", - "version": "1.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1100.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1100.7.tgz", - "integrity": "sha512-b2zv2yiRbdhJ7hJfZsAvGYcqgh2DVtc7gRIPo1eDPvOAKrenmZ4zo/v0PRYScrTsPzqmoCokNA5nIwufwUEnuA==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.0.7", - "rxjs": "6.6.3" - }, - "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "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": "0.1100.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-0.1100.7.tgz", - "integrity": "sha512-erc+AtSU46ZIX7A5dmeZ0/G/SQIbqMAGbTKZbf11GePyhT0JAAnfMQtOHMb6AaX85n4yQTg1uMo9f5+8V3lfKA==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1100.7", - "@angular-devkit/build-optimizer": "0.1100.7", - "@angular-devkit/build-webpack": "0.1100.7", - "@angular-devkit/core": "11.0.7", - "@babel/core": "7.12.3", - "@babel/generator": "7.12.1", - "@babel/plugin-transform-runtime": "7.12.1", - "@babel/preset-env": "7.12.1", - "@babel/runtime": "7.12.1", - "@babel/template": "7.10.4", - "@jsdevtools/coverage-istanbul-loader": "3.0.5", - "@ngtools/webpack": "11.0.7", - "ansi-colors": "4.1.1", - "autoprefixer": "9.8.6", - "babel-loader": "8.1.0", - "browserslist": "^4.9.1", - "cacache": "15.0.5", - "caniuse-lite": "^1.0.30001032", - "circular-dependency-plugin": "5.2.0", - "copy-webpack-plugin": "6.2.1", - "core-js": "3.6.5", - "css-loader": "4.3.0", - "cssnano": "4.1.10", - "file-loader": "6.1.1", - "find-cache-dir": "3.3.1", - "glob": "7.1.6", - "inquirer": "7.3.3", - "jest-worker": "26.5.0", - "karma-source-map-support": "1.4.0", - "less": "3.12.2", - "less-loader": "7.0.2", - "license-webpack-plugin": "2.3.1", - "loader-utils": "2.0.0", - "mini-css-extract-plugin": "1.2.1", - "minimatch": "3.0.4", - "open": "7.3.0", - "ora": "5.1.0", - "parse5-html-rewriting-stream": "6.0.1", - "pnp-webpack-plugin": "1.6.4", - "postcss": "7.0.32", - "postcss-import": "12.0.1", - "postcss-loader": "4.0.4", - "raw-loader": "4.0.2", - "regenerator-runtime": "0.13.7", - "resolve-url-loader": "3.1.2", - "rimraf": "3.0.2", - "rollup": "2.32.1", - "rxjs": "6.6.3", - "sass": "1.27.0", - "sass-loader": "10.0.5", - "semver": "7.3.2", - "source-map": "0.7.3", - "source-map-loader": "1.1.2", - "source-map-support": "0.5.19", - "speed-measure-webpack-plugin": "1.3.3", - "style-loader": "2.0.0", - "stylus": "0.54.8", - "stylus-loader": "4.3.1", - "terser": "5.3.7", - "terser-webpack-plugin": "4.2.3", - "text-table": "0.2.0", - "tree-kill": "1.2.2", - "webpack": "4.44.2", - "webpack-dev-middleware": "3.7.2", - "webpack-dev-server": "3.11.0", - "webpack-merge": "5.2.0", - "webpack-sources": "2.0.1", - "webpack-subresource-integrity": "1.5.1", - "worker-plugin": "5.0.0" - }, - "dependencies": { - "core-js": { - "version": "3.6.5", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.6.5.tgz", - "integrity": "sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA==", - "dev": true - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "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 - } - } - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.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-optimizer": { - "version": "0.1100.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.1100.7.tgz", - "integrity": "sha512-bHIIub0d1trVAmAX/EaNR6Zo4b7hkscewK394qYYp/w8VKQkLSAPMUbt2YTWN+erR9yyHnJ2y7tBabIui75Wdw==", - "dev": true, - "requires": { - "loader-utils": "2.0.0", - "source-map": "0.7.3", - "tslib": "2.0.3", - "typescript": "4.0.5", - "webpack-sources": "2.0.1" - }, - "dependencies": { - "tslib": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.3.tgz", - "integrity": "sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ==", - "dev": true - }, - "typescript": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.5.tgz", - "integrity": "sha512-ywmr/VrTVCmNTJ6iV2LwIrfG1P+lv6luD8sUJs+2eI9NLGigaN+nUQc13iHqisq7bra9lnmUSYqbJvegraBOPQ==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1100.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1100.7.tgz", - "integrity": "sha512-/6Hudd1hs/GMHX4C/Qk7jueIMNg8NKFJWDEbvMPMgDzTqUIa680PTD6SNSCcY5Cz9mEpdpYCZo5N31JB7dlpOg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1100.7", - "@angular-devkit/core": "11.0.7", - "rxjs": "6.6.3" - }, - "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "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": "11.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.0.7.tgz", - "integrity": "sha512-1GKnIT++YSUHpzzRx9QC0+8yOw4wy+ZpiJVDlroPSeK4FGrTCJqJKenkfRjVFRFOSrzTiJds+IU6kI4+bFbw9g==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - }, - "dependencies": { - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "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/schematics": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-11.2.19.tgz", - "integrity": "sha512-jefsjIlaznKxn5+dHSMwvXTO+QKCKtahu/iZoRcdb25JWGXrkj8/quCuj4VeMFY48g/EPjX+9WhDtRl8TjYBiA==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.19", - "ora": "5.3.0", - "rxjs": "6.6.3" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.19.tgz", - "integrity": "sha512-kvS0QXDYDatLyf0NYv2sahPYD7kya4g5GpQAV1ddjjLmEVeZssHt+Xfk2tzrkzYzqRMiyspx3HPPrrOnMUAFhQ==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, - "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 - }, - "ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.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" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular/animations": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-11.0.9.tgz", - "integrity": "sha512-/KsMBUbRTqp29CNLbRIe4/8IxWxhnbUUZWqULaySnRDDW/p2m4miPcFVSp4zjrDZPqdXSibDiCyTiWmQ5PTuKA==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/cdk": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-11.2.3.tgz", - "integrity": "sha512-QehBMt36nNfXZ8nBGJLLUQlexzQv6rohQmEYXULHarAC3Ily8DnB9wDGJ4emlKyGz1MIVYR0tZP39RmQp0hH+g==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.0.0" - } - }, - "@angular/cli": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-11.2.19.tgz", - "integrity": "sha512-B7ZRmcleBF/D6ojt+LOfHE/2Cs3jpHWK/Khho0c2i1jrqLjCTFlgGfK0NKztbFr0lmbhL6Z7Oj4ge3X6dMcSuQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1102.19", - "@angular-devkit/core": "11.2.19", - "@angular-devkit/schematics": "11.2.19", - "@schematics/angular": "11.2.19", - "@schematics/update": "0.1102.19", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.1", - "ini": "2.0.0", - "inquirer": "7.3.3", - "jsonc-parser": "3.0.0", - "npm-package-arg": "8.1.0", - "npm-pick-manifest": "6.1.0", - "open": "7.4.0", - "ora": "5.3.0", - "pacote": "11.2.4", - "resolve": "1.19.0", - "rimraf": "3.0.2", - "semver": "7.3.4", - "symbol-observable": "3.0.0", - "universal-analytics": "0.4.23", - "uuid": "8.3.2" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1102.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1102.19.tgz", - "integrity": "sha512-5Opv6H+XyCkuQvQ1jsxw416YqMDPX3dVonMarFGBPLBe8YEXLRTJ60dvmuLsLpWk6ccTd3XiNT7WEJy4ctDc2Q==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.19", - "rxjs": "6.6.3" - } - }, - "@angular-devkit/core": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.19.tgz", - "integrity": "sha512-kvS0QXDYDatLyf0NYv2sahPYD7kya4g5GpQAV1ddjjLmEVeZssHt+Xfk2tzrkzYzqRMiyspx3HPPrrOnMUAFhQ==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, - "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 - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "open": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.0.tgz", - "integrity": "sha512-PGoBCX/lclIWlpS/R2PQuIR4NJoXh6X5AwVzE7WXnWRGvHg7+4TBCgsujUgiPpm0K1y4qvQeWnCWVTpTKZBtvA==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "ora": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.3.0.tgz", - "integrity": "sha512-zAKMgGXUim0Jyd6CXK9lraBnD3H5yPGBPPOkC23a2BG6hsm4Zu6OQSjQuEtV0BHDf4aKHcUFvJiGRrFuW3MG8g==", - "dev": true, - "requires": { - "bl": "^4.0.3", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" - } - }, - "resolve": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.19.0.tgz", - "integrity": "sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==", - "dev": true, - "requires": { - "is-core-module": "^2.1.0", - "path-parse": "^1.0.6" - } - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.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" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - } - } - }, - "@angular/common": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-11.0.9.tgz", - "integrity": "sha512-QYJx+Y7Bmqdwtyk8TZDqF6io7gPaiZnUPrS/JbV/qB1QA8Q0OVaJSRRy/d0ahsc385+OiUhT7gVnbEh92oWXmQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/compiler": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-11.0.9.tgz", - "integrity": "sha512-H2IfS6ciPWN0kmKhbwDuvS8ry5GcRFKfoyA/HGk+nQwCE2nAHC8VNwldbtoisO7XfRWr/uaTrh6z/vdfxsAiHw==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/compiler-cli": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-11.0.9.tgz", - "integrity": "sha512-ctqT4k5FJpFDUmH05WVVvzcDEHi2ZAgxbdrPtirQXHvjZ7s16WDBsdOQPlrSnsi3HmBD3rqxFf7c305boEI9Rw==", - "dev": true, - "requires": { - "@babel/core": "^7.8.6", - "@babel/types": "^7.8.6", - "canonical-path": "1.0.0", - "chokidar": "^3.0.0", - "convert-source-map": "^1.5.1", - "dependency-graph": "^0.7.2", - "fs-extra": "4.0.2", - "magic-string": "^0.25.0", - "minimist": "^1.2.0", - "reflect-metadata": "^0.1.2", - "semver": "^6.3.0", - "source-map": "^0.6.1", - "sourcemap-codec": "^1.4.8", - "tslib": "^2.0.0", - "yargs": "^16.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" - } - }, - "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" - } - }, - "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 - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.5.tgz", - "integrity": "sha512-hsRUr4FFrvhhRH12wOdfs38Gy7k2FFzB9qgN9v3aLykRq0dRcdcpz5C9FxdS2NuhOrI/628b/KSTJ3rwHysYSg==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.6", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.6.tgz", - "integrity": "sha512-AP1+fQIWSM/sMiET8fyayjx/J+JmTPt2Mr0FkrgqB4todtfa53sOsrSAcIrJRD5XS20bKUwaDIuMkWKCEiQLKA==", - "dev": true - } - } - }, - "@angular/core": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-11.0.9.tgz", - "integrity": "sha512-J0ff3UK2Cw7Z0eNLtUXrpMFvmmkvPPZWLYIwimyc1pZys7qsIVT6cy2ybGEOhbJgC6qt3fo0DoJV3pGXTalb8A==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/forms": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-11.0.9.tgz", - "integrity": "sha512-DHi4puesP5iSBToT4FZVqLYZZpZDlAy2wgBe+OhCq7GCIqi8OLejB3bp9BnUd/WnNAHJd3zEjytexih6EPE0Xg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/material": { - "version": "11.2.3", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-11.2.3.tgz", - "integrity": "sha512-esIDzEmShc+fhkbgLn4kYcmc855NShR2YuqyPHs7fxRXOlKkK9c2PHKjhk+Vd8Hf7gtilJwuCB4kReKMl0psWQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/platform-browser": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-11.0.9.tgz", - "integrity": "sha512-snuq8SaIRuVDYJLy80kYCEuVITZZbtG3PvxamATvzpgYpAzBskToc4/7LKJk0IEVSMvKzi8eSBCDaK2f2ZJB3A==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-11.0.9.tgz", - "integrity": "sha512-OCbXCXxPvpPu7vh3Ra1X+FfqA27TP2NcL/AlWhPTSGB+ggrEUgfdUjBSsULpMVPsD6pG/runGdM9CQjEK7g+DQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@angular/router": { - "version": "11.0.9", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-11.0.9.tgz", - "integrity": "sha512-WopMMhOw4YT8cplDXxxnTS7ByaGop3+frLOkVirY9MKcpcqLwXPblVq4rNKn395XgBVjNK6hmU91RScBnAuVLQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-angular": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.0.2.tgz", - "integrity": "sha512-uvAj5dlrO2TIig1ryE55gX46gMh7C5RwRtCGGTo2arfu4nDtAJypcs6miHHfGIPHqGKiQyB2SmCUCCYIOh00sg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.16.0.tgz", - "integrity": "sha512-Q8Ala9cdA1cq5qEjFCezcwPfAlaTgdKkKx7vS7IJAJUlMnygtcbaBPMOeSostrve5sjLprouFaXCziZKYerr+Q==", - "requires": { - "@azure/msal-common": "^4.5.0" - } - }, - "@azure/msal-common": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-4.5.0.tgz", - "integrity": "sha512-eXI3GamyjU29Mttn+5mWU47Su4DtgAZF6xmIrnIq271dz6VKJDBmU1dEbUUYqZeVSzxdcraX7BR85kKof11Tig==", - "requires": { - "debug": "^4.1.1" - } - }, - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/compat-data": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.8.tgz", - "integrity": "sha512-EaI33z19T4qN3xLXsGf48M2cDqa6ei9tPZlfLdb2HC+e/cFtREiRd8hdSqDbwdLB0/+gLwqJmCYASH0z2bUdog==", - "dev": true - }, - "@babel/core": { - "version": "7.12.3", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.12.3.tgz", - "integrity": "sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/generator": "^7.12.1", - "@babel/helper-module-transforms": "^7.12.1", - "@babel/helpers": "^7.12.1", - "@babel/parser": "^7.12.3", - "@babel/template": "^7.10.4", - "@babel/traverse": "^7.12.1", - "@babel/types": "^7.12.1", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.1", - "json5": "^2.1.2", - "lodash": "^4.17.19", - "resolve": "^1.3.2", - "semver": "^5.4.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", - "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.1", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-annotate-as-pure": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.12.13.tgz", - "integrity": "sha512-7YXfX5wQ5aYM/BOlbSccHDbuXXFPxeoUmfWtz8le2yTkTZc+BxsiEnENFoi2SlmA8ewDkG2LgIMIVzzn2h8kfw==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.12.13.tgz", - "integrity": "sha512-CZOv9tGphhDRlVjVkAgm8Nhklm9RzSmWpX2my+t7Ua/KT616pEzXsQCjinzvkRvHWJ9itO4f296efroX23XCMA==", - "dev": true, - "requires": { - "@babel/helper-explode-assignable-expression": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-compilation-targets": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.8.tgz", - "integrity": "sha512-pBljUGC1y3xKLn1nrx2eAhurLMA8OqBtBP/JwG4U8skN7kf8/aqwwxpV1N6T0e7r6+7uNitIa/fUxPFagSXp3A==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.13.8.tgz", - "integrity": "sha512-qioaRrKHQbn4hkRKDHbnuQ6kAxmmOF+kzKGnIfxPK4j2rckSJCpKzr/SSTlohSCiE3uAQpNDJ9FIh4baeE8W+w==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz", - "integrity": "sha512-p2VGmBu9oefLZ2nQpgnEnG0ZlRPvL8gAGvPUMQwUdaE8k49rOMuZpOwdQoy5qJf6K8jL3bcAMhVUlHAjIgJHUg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "regexpu-core": "^4.7.1" - } - }, - "@babel/helper-explode-assignable-expression": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.13.0.tgz", - "integrity": "sha512-qS0peLTDP8kOisG1blKbaoBg/o9OSa1qoumMjTK5pM+KDTtpxpsiubnCGP34vK8BXGcb2M9eigwgvoJryrzwWA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - }, - "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.13.0.tgz", - "integrity": "sha512-0kBzvXiIKfsCA0y6cFEIJf4OdzfpRuNk4+YTeHZpGGc666SATFKTz6sRncwFnQk7/ugJ4dSrCj6iJuvW4Qwr2g==", - "dev": true, - "requires": { - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.0.tgz", - "integrity": "sha512-yvRf8Ivk62JwisqV1rFRMxiSMDGnN6KH1/mDMmIrij4jztpQNRoHqqMG3U6apYbGRPJpgPalhva9Yd06HlUxJQ==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-module-imports": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.12.13.tgz", - "integrity": "sha512-NGmfvRp9Rqxy0uHSSVP+SRIW1q31a7Ji10cLBcqSDUngGentY4FRiHOFZFE1CLU5eiL0oE8reH7Tg1y99TDM/g==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-module-transforms": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.0.tgz", - "integrity": "sha512-Ls8/VBwH577+pw7Ku1QkUWIyRRNHpYlts7+qSqBBFCW3I8QteB9DxfcZ5YJpOwH6Ihe/wn8ch7fMGOP1OhEIvw==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true - }, - "@babel/helper-remap-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.13.0.tgz", - "integrity": "sha512-pUQpFBE9JvC9lrQbpX0TmeNIy5s7GnZjna2lhhcHC7DzgBs6fWn722Y5cfwgrtrqc7NAJwMvOa0mKhq6XaE4jg==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-wrap-function": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-replace-supers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.0.tgz", - "integrity": "sha512-Segd5me1+Pz+rmN/NFBOplMbZG3SqRJOBlY+mA0SxAv6rjj7zJqr1AVr3SfzUVTLCv7ZLU5FycOM/SBGuLPbZw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.0", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - } - }, - "@babel/helper-simple-access": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.12.13.tgz", - "integrity": "sha512-0ski5dyYIHEfwpWGx5GPWhH35j342JaflmCeQmsPWcrOQDtCN6C1zKAVRFVbK53lPW2c9TsuLLSUDf0tIGJ5hA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz", - "integrity": "sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.1" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.13.0.tgz", - "integrity": "sha512-1UX9F7K3BS42fI6qd2A4BjKzgGjToscyZTdp1DjknHLCIvpgne6918io+aL5LXFcER/8QWiwpoY902pVEqgTXA==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } - } - }, - "@babel/helpers": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.0.tgz", - "integrity": "sha512-aan1MeFPxFacZeSz6Ld7YZo5aPuqnKlD7+HZY75xQsueczFccP9A7V05+oe0XpLwHK3oLorPe9eaAUljL7WEaQ==", - "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.0" - }, - "dependencies": { - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - } - } - }, - "@babel/highlight": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.8.tgz", - "integrity": "sha512-4vrIhfJyfNf+lCtXC2ck1rKSzDwciqF7IWFhXXrSOUC2O5DrVp+w4c6ed4AllTxhTkUP5x2tYj41VaxdVMMRDw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.9.tgz", - "integrity": "sha512-nEUfRiARCcaVo3ny3ZQjURjHQZUo/JkEw7rLlSZy/psWGnvwXFtPcr6jb7Yb41DVW5LTe6KRq9LGleRNsg1Frw==", - "dev": true - }, - "@babel/plugin-proposal-async-generator-functions": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.13.8.tgz", - "integrity": "sha512-rPBnhj+WgoSmgq+4gQUtXx/vOcU+UYtjy1AA/aeD61Hwj410fwYyqfUcRP3lR8ucgliVJL/G7sXcNUecC75IXA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0", - "@babel/plugin-syntax-async-generators": "^7.8.4" - } - }, - "@babel/plugin-proposal-class-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.13.0.tgz", - "integrity": "sha512-KnTDjFNC1g+45ka0myZNvSBFLhNCLN+GeGYLDEA8Oq7MZ6yMgfLoIRh86GRT0FjtJhZw8JyUskP9uvj5pHM9Zg==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-dynamic-import": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz", - "integrity": "sha512-ONWKj0H6+wIRCkZi9zSbZtE/r73uOhMVHh256ys0UzfM7I3d4n+spZNWjOnJv2gzopumP2Wxi186vI8N0Y2JyQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-dynamic-import": "^7.8.3" - } - }, - "@babel/plugin-proposal-export-namespace-from": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.12.13.tgz", - "integrity": "sha512-INAgtFo4OnLN3Y/j0VwAgw3HDXcDtX+C/erMvWzuV9v71r7urb6iyMXu7eM9IgLr1ElLlOkaHjJ0SbCmdOQ3Iw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3" - } - }, - "@babel/plugin-proposal-json-strings": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.13.8.tgz", - "integrity": "sha512-w4zOPKUFPX1mgvTmL/fcEqy34hrQ1CRcGxdphBc6snDnnqJ47EZDIyop6IwXzAC8G916hsIuXB2ZMBCExC5k7Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-json-strings": "^7.8.3" - } - }, - "@babel/plugin-proposal-logical-assignment-operators": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.13.8.tgz", - "integrity": "sha512-aul6znYB4N4HGweImqKn59Su9RS8lbUIqxtXTOcAGtNIDczoEFv+l1EhmX8rUBp3G1jMjKJm8m0jXVp63ZpS4A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" - } - }, - "@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.13.8.tgz", - "integrity": "sha512-iePlDPBn//UhxExyS9KyeYU7RM9WScAG+D3Hhno0PLJebAEpDZMocbDe64eqynhNAnwz/vZoL/q/QB2T1OH39A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - } - }, - "@babel/plugin-proposal-numeric-separator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.12.13.tgz", - "integrity": "sha512-O1jFia9R8BUCl3ZGB7eitaAPu62TXJRHn7rh+ojNERCFyqRwJMTmhz+tJ+k0CwI6CLjX/ee4qW74FSqlq9I35w==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/plugin-syntax-numeric-separator": "^7.10.4" - } - }, - "@babel/plugin-proposal-object-rest-spread": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.13.8.tgz", - "integrity": "sha512-DhB2EuB1Ih7S3/IRX5AFVgZ16k3EzfRbq97CxAVI1KSYcW+lexV8VZb7G7L8zuPVSdQMRn0kiBpf/Yzu9ZKH0g==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.8", - "@babel/helper-compilation-targets": "^7.13.8", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.13.0" - } - }, - "@babel/plugin-proposal-optional-catch-binding": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.13.8.tgz", - "integrity": "sha512-0wS/4DUF1CuTmGo+NiaHfHcVSeSLj5S3e6RivPTg/2k3wOv3jO35tZ6/ZWsQhQMvdgI7CwphjQa/ccarLymHVA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - } - }, - "@babel/plugin-proposal-optional-chaining": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.13.8.tgz", - "integrity": "sha512-hpbBwbTgd7Cz1QryvwJZRo1U0k1q8uyBmeXOSQUjdg/A2TASkhR/rz7AyqZ/kS8kbpsNA80rOYbxySBJAqmhhQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - } - }, - "@babel/plugin-proposal-private-methods": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.13.0.tgz", - "integrity": "sha512-MXyyKQd9inhx1kDYPkFRVOBXQ20ES8Pto3T7UZ92xj2mY0EVD8oAVzeyYuVfy/mxAdTSIayOvg+aVzcHV2bn6Q==", - "dev": true, - "requires": { - "@babel/helper-create-class-features-plugin": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-proposal-unicode-property-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz", - "integrity": "sha512-XyJmZidNfofEkqFV5VC/bLabGmO5QzenPO/YOfGuEbgU+2sSwMmio3YLb4WtBgcmmdwZHyVyv8on77IUjQ5Gvg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.13.0.tgz", - "integrity": "sha512-96lgJagobeVmazXFaDrbmCLQxBysKu7U6Do3mLsx27gf5Dk85ezysrs2BZUpXD703U/Su1xTBDxxar2oa4jAGg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-async-to-generator": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.13.0.tgz", - "integrity": "sha512-3j6E004Dx0K3eGmhxVJxwwI89CTJrce7lg3UrtFuDAVQ/2+SJ/h/aSFOeE6/n0WB1GsOffsJp6MnPQNQ8nmwhg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-remap-async-to-generator": "^7.13.0" - } - }, - "@babel/plugin-transform-block-scoped-functions": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.13.tgz", - "integrity": "sha512-zNyFqbc3kI/fVpqwfqkg6RvBgFpC4J18aKKMmv7KdQ/1GgREapSJAykLMVNwfRGO3BtHj3YQZl8kxCXPcVMVeg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-block-scoping": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz", - "integrity": "sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.13.0.tgz", - "integrity": "sha512-9BtHCPUARyVH1oXGcSJD3YpsqRLROJx5ZNP6tN5vnk17N0SVf9WCtf8Nuh1CFmgByKKAIMstitKduoCmsaDK5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.12.13", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-replace-supers": "^7.13.0", - "@babel/helper-split-export-declaration": "^7.12.13", - "globals": "^11.1.0" - } - }, - "@babel/plugin-transform-computed-properties": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.13.0.tgz", - "integrity": "sha512-RRqTYTeZkZAz8WbieLTvKUEUxZlUTdmL5KGMyZj7FnMfLNKV4+r5549aORG/mgojRmFlQMJDUupwAMiF2Q7OUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-destructuring": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz", - "integrity": "sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-dotall-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.12.13.tgz", - "integrity": "sha512-foDrozE65ZFdUC2OfgeOCrEPTxdB3yjqxpXh8CH+ipd9CHd4s/iq81kcUpyH8ACGNEPdFqbtzfgzbT/ZGlbDeQ==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-duplicate-keys": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.12.13.tgz", - "integrity": "sha512-NfADJiiHdhLBW3pulJlJI2NB0t4cci4WTZ8FtdIuNc2+8pslXdPtRRAEWqUY+m9kNOk2eRYbTAOipAxlrOcwwQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-exponentiation-operator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.12.13.tgz", - "integrity": "sha512-fbUelkM1apvqez/yYx1/oICVnGo2KM5s63mhGylrmXUxK/IAXSIf87QIxVfZldWf4QsOafY6vV3bX8aMHSvNrA==", - "dev": true, - "requires": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-for-of": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.13.0.tgz", - "integrity": "sha512-IHKT00mwUVYE0zzbkDgNRP6SRzvfGCYsOxIRz8KsiaaHCcT9BWIkO+H9QRJseHBLOGBZkHUdHiqj6r0POsdytg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.13.tgz", - "integrity": "sha512-6K7gZycG0cmIwwF7uMK/ZqeCikCGVBdyP2J5SKNCXO5EOHcqi+z7Jwf8AmyDNcBgxET8DrEtCt/mPKPyAzXyqQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.13.tgz", - "integrity": "sha512-FW+WPjSR7hiUxMcKqyNjP05tQ2kmBCdpEpZHY1ARm96tGQCCBvXKnpjILtDplUnJ/eHZ0lALLM+d2lMFSpYJrQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-member-expression-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.13.tgz", - "integrity": "sha512-kxLkOsg8yir4YeEPHLuO2tXP9R/gTjpuTOjshqSpELUN3ZAg2jfDnKUvzzJxObun38sw3wm4Uu69sX/zA7iRvg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-modules-amd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz", - "integrity": "sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz", - "integrity": "sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-simple-access": "^7.12.13", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.13.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.13.8.tgz", - "integrity": "sha512-hwqctPYjhM6cWvVIlOIe27jCIBgHCsdH2xCJVAYQm7V5yTMoilbVMi9f6wKg0rpQAOn6ZG4AOyvCqFF/hUh6+A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.13.0", - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-validator-identifier": "^7.12.11", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-umd": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz", - "integrity": "sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.13.0", - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-named-capturing-groups-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.12.13.tgz", - "integrity": "sha512-Xsm8P2hr5hAxyYblrfACXpQKdQbx4m2df9/ZZSQ8MAhsadw06+jW7s9zsSw6he+mJZXRlVMyEnVktJo4zjk1WA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13" - } - }, - "@babel/plugin-transform-new-target": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.12.13.tgz", - "integrity": "sha512-/KY2hbLxrG5GTQ9zzZSc3xWiOy379pIETEhbtzwZcw9rvuaVV4Fqy7BYGYOWZnaoXIQYbbJ0ziXLa/sKcGCYEQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-object-super": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.13.tgz", - "integrity": "sha512-JzYIcj3XtYspZDV8j9ulnoMPZZnF/Cj0LUxPOjR89BdBVx+zYJI9MdMIlUZjbXDX+6YVeS6I3e8op+qQ3BYBoQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13", - "@babel/helper-replace-supers": "^7.12.13" - } - }, - "@babel/plugin-transform-parameters": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.13.0.tgz", - "integrity": "sha512-Jt8k/h/mIwE2JFEOb3lURoY5C85ETcYPnbuAJ96zRBzh1XHtQZfs62ChZ6EP22QlC8c7Xqr9q+e1SU5qttwwjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-property-literals": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.13.tgz", - "integrity": "sha512-nqVigwVan+lR+g8Fj8Exl0UQX2kymtjcWfMOYM1vTYEKujeyv2SkMgazf2qNcK7l4SDiKyTA/nHCPqL4e2zo1A==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-regenerator": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.12.13.tgz", - "integrity": "sha512-lxb2ZAvSLyJ2PEe47hoGWPmW22v7CtSl9jW8mingV4H2sEX/JOcrAj2nPuGWi56ERUm2bUpjKzONAuT6HCn2EA==", - "dev": true, - "requires": { - "regenerator-transform": "^0.14.2" - } - }, - "@babel/plugin-transform-reserved-words": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.12.13.tgz", - "integrity": "sha512-xhUPzDXxZN1QfiOy/I5tyye+TRz6lA7z6xaT4CLOjPRMVg1ldRf0LHw0TDBpYL4vG78556WuHdyO9oi5UmzZBg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-runtime": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.12.1.tgz", - "integrity": "sha512-Ac/H6G9FEIkS2tXsZjL4RAdS3L3WHxci0usAnz7laPWUmFiGtj7tIASChqKZMHTSQTQY6xDbOq+V1/vIq3QrWg==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "resolve": "^1.8.1", - "semver": "^5.5.1" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "@babel/plugin-transform-shorthand-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.13.tgz", - "integrity": "sha512-xpL49pqPnLtf0tVluuqvzWIgLEhuPpZzvs2yabUHSKRNlN7ScYU7aMlmavOeyXJZKgZKQRBlh8rHbKiJDraTSw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-spread": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.13.0.tgz", - "integrity": "sha512-V6vkiXijjzYeFmQTr3dBxPtZYLPcUfY34DebOU27jIl2M/Y8Egm52Hw82CSjjPqd54GTlJs5x+CR7HeNr24ckg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.12.1" - } - }, - "@babel/plugin-transform-sticky-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.12.13.tgz", - "integrity": "sha512-Jc3JSaaWT8+fr7GRvQP02fKDsYk4K/lYwWq38r/UGfaxo89ajud321NH28KRQ7xy1Ybc0VUE5Pz8psjNNDUglg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-template-literals": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.13.0.tgz", - "integrity": "sha512-d67umW6nlfmr1iehCcBv69eSUSySk1EsIS8aTDX4Xo9qajAh6mYtcl4kJrBkGXuxZPEgVr7RVfAvNW6YQkd4Mw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.13.0" - } - }, - "@babel/plugin-transform-typeof-symbol": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.12.13.tgz", - "integrity": "sha512-eKv/LmUJpMnu4npgfvs3LiHhJua5fo/CysENxa45YCQXZwKnGCQKAg87bvoqSW1fFT+HA32l03Qxsm8ouTY3ZQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-escapes": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.12.13.tgz", - "integrity": "sha512-0bHEkdwJ/sN/ikBHfSmOXPypN/beiGqjo+o4/5K+vxEFNPRPdImhviPakMKG4x96l85emoa0Z6cDflsdBusZbw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-transform-unicode-regex": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.12.13.tgz", - "integrity": "sha512-mDRzSNY7/zopwisPZ5kM9XKCfhchqIYwAKRERtEnhYscZB79VRekuRSoYbN0+KVe3y8+q1h6A4svXtP7N+UoCA==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.12.13", - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/preset-env": { - "version": "7.12.1", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.12.1.tgz", - "integrity": "sha512-H8kxXmtPaAGT7TyBvSSkoSTUK6RHh61So05SyEbpmr0MCZrsNYn7mGMzzeYoOUCdHzww61k8XBft2TaES+xPLg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.12.1", - "@babel/helper-compilation-targets": "^7.12.1", - "@babel/helper-module-imports": "^7.12.1", - "@babel/helper-plugin-utils": "^7.10.4", - "@babel/helper-validator-option": "^7.12.1", - "@babel/plugin-proposal-async-generator-functions": "^7.12.1", - "@babel/plugin-proposal-class-properties": "^7.12.1", - "@babel/plugin-proposal-dynamic-import": "^7.12.1", - "@babel/plugin-proposal-export-namespace-from": "^7.12.1", - "@babel/plugin-proposal-json-strings": "^7.12.1", - "@babel/plugin-proposal-logical-assignment-operators": "^7.12.1", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.12.1", - "@babel/plugin-proposal-numeric-separator": "^7.12.1", - "@babel/plugin-proposal-object-rest-spread": "^7.12.1", - "@babel/plugin-proposal-optional-catch-binding": "^7.12.1", - "@babel/plugin-proposal-optional-chaining": "^7.12.1", - "@babel/plugin-proposal-private-methods": "^7.12.1", - "@babel/plugin-proposal-unicode-property-regex": "^7.12.1", - "@babel/plugin-syntax-async-generators": "^7.8.0", - "@babel/plugin-syntax-class-properties": "^7.12.1", - "@babel/plugin-syntax-dynamic-import": "^7.8.0", - "@babel/plugin-syntax-export-namespace-from": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.0", - "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.0", - "@babel/plugin-syntax-numeric-separator": "^7.10.4", - "@babel/plugin-syntax-object-rest-spread": "^7.8.0", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.0", - "@babel/plugin-syntax-top-level-await": "^7.12.1", - "@babel/plugin-transform-arrow-functions": "^7.12.1", - "@babel/plugin-transform-async-to-generator": "^7.12.1", - "@babel/plugin-transform-block-scoped-functions": "^7.12.1", - "@babel/plugin-transform-block-scoping": "^7.12.1", - "@babel/plugin-transform-classes": "^7.12.1", - "@babel/plugin-transform-computed-properties": "^7.12.1", - "@babel/plugin-transform-destructuring": "^7.12.1", - "@babel/plugin-transform-dotall-regex": "^7.12.1", - "@babel/plugin-transform-duplicate-keys": "^7.12.1", - "@babel/plugin-transform-exponentiation-operator": "^7.12.1", - "@babel/plugin-transform-for-of": "^7.12.1", - "@babel/plugin-transform-function-name": "^7.12.1", - "@babel/plugin-transform-literals": "^7.12.1", - "@babel/plugin-transform-member-expression-literals": "^7.12.1", - "@babel/plugin-transform-modules-amd": "^7.12.1", - "@babel/plugin-transform-modules-commonjs": "^7.12.1", - "@babel/plugin-transform-modules-systemjs": "^7.12.1", - "@babel/plugin-transform-modules-umd": "^7.12.1", - "@babel/plugin-transform-named-capturing-groups-regex": "^7.12.1", - "@babel/plugin-transform-new-target": "^7.12.1", - "@babel/plugin-transform-object-super": "^7.12.1", - "@babel/plugin-transform-parameters": "^7.12.1", - "@babel/plugin-transform-property-literals": "^7.12.1", - "@babel/plugin-transform-regenerator": "^7.12.1", - "@babel/plugin-transform-reserved-words": "^7.12.1", - "@babel/plugin-transform-shorthand-properties": "^7.12.1", - "@babel/plugin-transform-spread": "^7.12.1", - "@babel/plugin-transform-sticky-regex": "^7.12.1", - "@babel/plugin-transform-template-literals": "^7.12.1", - "@babel/plugin-transform-typeof-symbol": "^7.12.1", - "@babel/plugin-transform-unicode-escapes": "^7.12.1", - "@babel/plugin-transform-unicode-regex": "^7.12.1", - "@babel/preset-modules": "^0.1.3", - "@babel/types": "^7.12.1", - "core-js-compat": "^3.6.2", - "semver": "^5.5.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "@babel/preset-modules": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.4.tgz", - "integrity": "sha512-J36NhwnfdzpmH41M1DrnkkgAqhZaqr/NBdPfQ677mLzlaXo+oDiv1deyCDtgAhz8p328otdob0Du7+xgHGZbKg==", - "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.12.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.12.1.tgz", - "integrity": "sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", - "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.10.4", - "@babel/parser": "^7.10.4", - "@babel/types": "^7.10.4" - } - }, - "@babel/traverse": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.0.tgz", - "integrity": "sha512-xys5xi5JEhzC3RzEmSGrs/b3pJW/o87SypZ+G/PhaE7uqVQNv/jlmVIBXuoh5atqQ434LfXV+sf23Oxj0bchJQ==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.0", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.0", - "@babel/types": "^7.13.0", - "debug": "^4.1.0", - "globals": "^11.1.0", - "lodash": "^4.17.19" - }, - "dependencies": { - "@babel/generator": { - "version": "7.13.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.9.tgz", - "integrity": "sha512-mHOOmY0Axl/JCTkxTU6Lf5sWOg/v8nUa+Xkt4zMTftX0wqmb6Sh7J8gvcehBw7q0AhrhAR+FDacKjCZ2X8K+Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.0", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - } - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.0.tgz", - "integrity": "sha512-hE+HE8rnG1Z6Wzo+MhaKE5lM5eMx71T4EHJgku2E3xIfaULhDcxiiRxUYgwX8qwP1BBSlag+TdGOt6JAidIZTA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "lodash": "^4.17.19", - "to-fast-properties": "^2.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jsdevtools/coverage-istanbul-loader": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@jsdevtools/coverage-istanbul-loader/-/coverage-istanbul-loader-3.0.5.tgz", - "integrity": "sha512-EUCPEkaRPvmHjWAAZkWMT7JDzpw7FKB00WTISaiXsbNOd5hCHg77XLA8sLYLFDo1zepYLo2w7GstN8YBqRXZfA==", - "dev": true, - "requires": { - "convert-source-map": "^1.7.0", - "istanbul-lib-instrument": "^4.0.3", - "loader-utils": "^2.0.0", - "merge-source-map": "^1.1.0", - "schema-utils": "^2.7.0" - } - }, - "@ngtools/webpack": { - "version": "11.0.7", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-11.0.7.tgz", - "integrity": "sha512-OWGiiDc7s4T53BBCY8tLkLUjgw44HrixW8Wh8e4thFH1eIUM0NHe087s/B5hDNu72W/GqK4IoBbhNQ2wiCR7qQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.0.7", - "enhanced-resolve": "5.3.1", - "webpack-sources": "2.0.1" - } - }, - "@nodelib/fs.scandir": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.4.tgz", - "integrity": "sha512-33g3pMJk3bg5nXbL/+CY6I2eJDzZAni49PfJnL5fghPTggPvBd/pFNSgJsdAgWptuFu7qq/ERvOYFlhvsLTCKA==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "2.0.4", - "run-parallel": "^1.1.9" - } - }, - "@nodelib/fs.stat": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.4.tgz", - "integrity": "sha512-IYlHJA0clt2+Vg7bccq+TzRdJvv19c2INqBSsoOLp1je7xjtr7J26+WXR72MCdvU9q1qTzIWDfhMf+DRvQJK4Q==", - "dev": true - }, - "@nodelib/fs.walk": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.6.tgz", - "integrity": "sha512-8Broas6vTtW4GIXTAHDoE32hnN2M5ykgCpWGbuXHQ15vEMqr23pB76e/GZcYsZCHALv50ktd24qhEyKr6wBtow==", - "dev": true, - "requires": { - "@nodelib/fs.scandir": "2.1.4", - "fastq": "^1.6.0" - } - }, - "@npmcli/ci-detect": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@npmcli/ci-detect/-/ci-detect-1.4.0.tgz", - "integrity": "sha512-3BGrt6FLjqM6br5AhWRKTr3u5GIVkjRYeAFrMp3HjnfICrg4xOrVRwFavKT6tsp++bq5dluL5t8ME/Nha/6c1Q==", - "dev": true - }, - "@npmcli/git": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-2.1.0.tgz", - "integrity": "sha512-/hBFX/QG1b+N7PZBFs0bi+evgRZcK9nWBxQKZkGoXUT5hJSwl5c4d7y8/hm+NQZRPhQ67RzFaj5UM9YeyKoryw==", - "dev": true, - "requires": { - "@npmcli/promise-spawn": "^1.3.2", - "lru-cache": "^6.0.0", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^6.1.1", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" - }, - "dependencies": { - "hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "npm-package-arg": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.5.tgz", - "integrity": "sha512-LhgZrg0n0VgvzVdSm1oiZworPbTxYHUJCgtsJW8mGvlDpxTM1vSJc3m5QZeUkhAHIzbz3VCHd/R4osi1L1Tg/Q==", - "dev": true, - "requires": { - "hosted-git-info": "^4.0.1", - "semver": "^7.3.4", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-pick-manifest": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.1.tgz", - "integrity": "sha512-dBsdBtORT84S8V8UTad1WlUyKIY9iMsAmqxHbLdeEeBNMLQDlDWWra3wYUx9EBEIiG/YwAy0XyNHDd2goAsfuA==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-normalize-package-bin": "^1.0.1", - "npm-package-arg": "^8.1.2", - "semver": "^7.3.4" - } - }, - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "@npmcli/node-gyp": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/node-gyp/-/node-gyp-1.0.3.tgz", - "integrity": "sha512-fnkhw+fmX65kiLqk6E3BFLXNC26rUhK90zVwe2yncPliVT/Qos3xjhTLE59Df8KnPlcwIERXKVlU1bXoUQ+liA==", - "dev": true - }, - "@npmcli/promise-spawn": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@npmcli/promise-spawn/-/promise-spawn-1.3.2.tgz", - "integrity": "sha512-QyAGYo/Fbj4MXeGdJcFzZ+FkDkomfRBrPM+9QYJSg+PxgAUL+LU3FneQk37rKR2/zjqkCV1BLHccX98wRXG3Sg==", - "dev": true, - "requires": { - "infer-owner": "^1.0.4" - } - }, - "@npmcli/run-script": { - "version": "1.8.6", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-1.8.6.tgz", - "integrity": "sha512-e42bVZnC6VluBZBAFEr3YrdqSspG3bgilyg4nSLBJ7TRGNCzxHa92XAHxQBLYg0BmgwO4b2mf3h/l5EkEWRn3g==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^1.0.2", - "@npmcli/promise-spawn": "^1.3.2", - "node-gyp": "^7.1.0", - "read-package-json-fast": "^2.0.1" - }, - "dependencies": { - "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" - } - } - } - }, - "@schematics/angular": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-11.2.19.tgz", - "integrity": "sha512-cZys7nRo/CI81EtPu4VJiAyv53gPfIfLteykhrTQpAp9AZK9UuRHauiJq7BhHRAUEc3z148xjSQgMvEu7/vAuA==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.19", - "@angular-devkit/schematics": "11.2.19", - "jsonc-parser": "3.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.19.tgz", - "integrity": "sha512-kvS0QXDYDatLyf0NYv2sahPYD7kya4g5GpQAV1ddjjLmEVeZssHt+Xfk2tzrkzYzqRMiyspx3HPPrrOnMUAFhQ==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "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 - } - } - }, - "@schematics/update": { - "version": "0.1102.19", - "resolved": "https://registry.npmjs.org/@schematics/update/-/update-0.1102.19.tgz", - "integrity": "sha512-NdWzL6n/ZEgnposWdAPo8PTOn+8Baf/J9isjF+QOUUMbpZY/+QfLpej7eDAlcQ2Begiz/selMsnod70r9PYZUg==", - "dev": true, - "requires": { - "@angular-devkit/core": "11.2.19", - "@angular-devkit/schematics": "11.2.19", - "@yarnpkg/lockfile": "1.1.0", - "ini": "2.0.0", - "npm-package-arg": "^8.0.0", - "pacote": "11.2.4", - "semver": "7.3.4", - "semver-intersect": "1.4.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "11.2.19", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-11.2.19.tgz", - "integrity": "sha512-kvS0QXDYDatLyf0NYv2sahPYD7kya4g5GpQAV1ddjjLmEVeZssHt+Xfk2tzrkzYzqRMiyspx3HPPrrOnMUAFhQ==", - "dev": true, - "requires": { - "ajv": "6.12.6", - "fast-json-stable-stringify": "2.1.0", - "magic-string": "0.25.7", - "rxjs": "6.6.3", - "source-map": "0.7.3" - } - }, - "ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "dev": true - }, - "rxjs": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", - "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", - "dev": true, - "requires": { - "tslib": "^1.9.0" - } - }, - "semver": { - "version": "7.3.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.4.tgz", - "integrity": "sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@socket.io/base64-arraybuffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", - "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==", - "dev": true - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@types/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "@types/cookie": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/glob": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", - "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", - "dev": true, - "requires": { - "@types/minimatch": "*", - "@types/node": "*" - } - }, - "@types/jasmine": { - "version": "3.6.4", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-3.6.4.tgz", - "integrity": "sha512-CTdMERA4iGNcxeqzD7pavb4WLIFq6bGnx6nIJD+1D4Knx24GE6QBPrWVhO8UlIy7gf7rbIt3ZD7iIzryRD2TgA==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.7", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.7.tgz", - "integrity": "sha512-cxWFQVseBm6O9Gbw1IWb8r6OS4OhSt3hPZLkFApLjM8TEXROBuQGLAH2i2gZpcXdLBIrpXuTDhH7Vbm1iXmNGA==", - "dev": true - }, - "@types/minimatch": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", - "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", - "dev": true - }, - "@types/node": { - "version": "12.20.4", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.4.tgz", - "integrity": "sha512-xRCgeE0Q4pT5UZ189TJ3SpYuX/QGl6QIAOAIeDSbAVAd2gX1NxSZup4jNVK7cxIeP8KDSbJgcckun495isP1jQ==", - "dev": true - }, - "@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "@types/q": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.5.tgz", - "integrity": "sha512-L28j2FcJfSZOnL1WBjDYp2vUHCeIFlyYI/53EwD/rKUBQ7MtUUfbQWiyKJGpcnv4/WgrhWsFKrcPstcAt/J0tQ==", - "dev": true - }, - "@types/selenium-webdriver": { - "version": "3.0.17", - "resolved": "https://registry.npmjs.org/@types/selenium-webdriver/-/selenium-webdriver-3.0.17.tgz", - "integrity": "sha512-tGomyEuzSC1H28y2zlW6XPCaDaXFaD6soTdb4GNdmte2qfHtrKqhy0ZFs4r/1hpazCfEZqeTSRLvSasmEx89uw==", - "dev": true - }, - "@types/source-list-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@types/source-list-map/-/source-list-map-0.1.2.tgz", - "integrity": "sha512-K5K+yml8LTo9bWJI/rECfIPrGgxdpeNbj+d53lwN4QjW1MCwlkhUms+gtdzigTeUyBr09+u8BwOIY3MXvHdcsA==", - "dev": true - }, - "@types/webpack-sources": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/@types/webpack-sources/-/webpack-sources-0.1.8.tgz", - "integrity": "sha512-JHB2/xZlXOjzjBB6fMOpH1eQAfsrpqVVIbneE0Rok16WXwFaznaI5vfg75U5WgGJm7V9W1c4xeRQDjX/zwvghA==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/source-list-map": "*", - "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 - } - } - }, - "@webassemblyjs/ast": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.9.0.tgz", - "integrity": "sha512-C6wW5L+b7ogSDVqymbkkvuW9kruN//YisMED04xzeBBqjHa2FYnmvOlS6Xj68xWQRgWvI9cIglsjFowH/RJyEA==", - "dev": true, - "requires": { - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.0.tgz", - "integrity": "sha512-TG5qcFsS8QB4g4MhrxK5TqfdNe7Ey/7YL/xN+36rRjl/BlGE/NcBvJcqsRgCP6Z92mRE+7N50pRIi8SmKUbcQA==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.0.tgz", - "integrity": "sha512-NcMLjoFMXpsASZFxJ5h2HZRcEhDkvnNFOAKneP5RbKRzaWJN36NC4jqQHKwStIhGXu5mUWlUUk7ygdtrO8lbmw==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.0.tgz", - "integrity": "sha512-qZol43oqhq6yBPx7YM3m9Bv7WMV9Eevj6kMi6InKOuZxhw+q9hOkvq5e/PpKSiLfyetpaBnogSbNCfBwyB00CA==", - "dev": true - }, - "@webassemblyjs/helper-code-frame": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.0.tgz", - "integrity": "sha512-ERCYdJBkD9Vu4vtjUYe8LZruWuNIToYq/ME22igL+2vj2dQ2OOujIZr3MEFvfEaqKoVqpsFKAGsRdBSBjrIvZA==", - "dev": true, - "requires": { - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/helper-fsm": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.0.tgz", - "integrity": "sha512-OPRowhGbshCb5PxJ8LocpdX9Kl0uB4XsAjl6jH/dWKlk/mzsANvhwbiULsaiqT5GZGT9qinTICdj6PLuM5gslw==", - "dev": true - }, - "@webassemblyjs/helper-module-context": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.0.tgz", - "integrity": "sha512-MJCW8iGC08tMk2enck1aPW+BE5Cw8/7ph/VGZxwyvGbJwjktKkDK7vy7gAmMDx88D7mhDTCNKAW5tED+gZ0W8g==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.0.tgz", - "integrity": "sha512-R7FStIzyNcd7xKxCZH5lE0Bqy+hGTwS3LJjuv1ZVxd9O7eHCedSdrId/hMOd20I+v8wDXEn+bjfKDLzTepoaUw==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.0.tgz", - "integrity": "sha512-XnMB8l3ek4tvrKUUku+IVaXNHz2YsJyOOmz+MMkZvh8h1uSJpSen6vYnw3IoQ7WwEuAhL8Efjms1ZWjqh2agvw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.9.0.tgz", - "integrity": "sha512-dcX8JuYU/gvymzIHc9DgxTzUUTLexWwt8uCTWP3otys596io0L5aW02Gb1RjYpx2+0Jus1h4ZFqjla7umFniTg==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.9.0.tgz", - "integrity": "sha512-ENVzM5VwV1ojs9jam6vPys97B/S65YQtv/aanqnU7D8aSoHFX8GyhGg0CMfyKNIHBuAVjy3tlzd5QMMINa7wpw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.9.0.tgz", - "integrity": "sha512-GZbQlWtopBTP0u7cHrEx+73yZKrQoBMpwkGEIqlacljhXCkVM1kMQge/Mf+csMJAjEdSwhOyLAS0AoR3AG5P8w==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.0.tgz", - "integrity": "sha512-FgHzBm80uwz5M8WKnMTn6j/sVbqilPdQXTWraSjBwFXSYGirpkSWE2R9Qvz9tNiTKQvoKILpCuTjBKzOIm0nxw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/helper-wasm-section": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-opt": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "@webassemblyjs/wast-printer": "1.9.0" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.0.tgz", - "integrity": "sha512-cPE3o44YzOOHvlsb4+E9qSqjc9Qf9Na1OO/BHFy4OI91XDE14MjFN4lTMezzaIWdPqHnsTodGGNP+iRSYfGkjA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.0.tgz", - "integrity": "sha512-Qkjgm6Anhm+OMbIL0iokO7meajkzQD71ioelnfPEj6r4eOFuqm4YC3VBPqXjFyyNwowzbMD+hizmprP/Fwkl2A==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-buffer": "1.9.0", - "@webassemblyjs/wasm-gen": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.0.tgz", - "integrity": "sha512-9+wkMowR2AmdSWQzsPEjFU7njh8HTO5MqO8vjwEHuM+AMHioNqSBONRdr0NQQ3dVQrzp0s8lTcYqzUdb7YgELA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-wasm-bytecode": "1.9.0", - "@webassemblyjs/ieee754": "1.9.0", - "@webassemblyjs/leb128": "1.9.0", - "@webassemblyjs/utf8": "1.9.0" - } - }, - "@webassemblyjs/wast-parser": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-parser/-/wast-parser-1.9.0.tgz", - "integrity": "sha512-qsqSAP3QQ3LyZjNC/0jBJ/ToSxfYJ8kYyuiGvtn/8MK89VrNEfwj7BPQzJVHi0jGTRK2dGdJ5PRqhtjzoww+bw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/floating-point-hex-parser": "1.9.0", - "@webassemblyjs/helper-api-error": "1.9.0", - "@webassemblyjs/helper-code-frame": "1.9.0", - "@webassemblyjs/helper-fsm": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.9.0.tgz", - "integrity": "sha512-2J0nE95rHXHyQ24cWjMKJ1tqB/ds8z/cyeOZxJhcb+rW+SQASVjuznUSmdz5GpVJTzU8JkhYut0D3siFDD6wsA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/wast-parser": "1.9.0", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "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.7", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", - "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", - "dev": true, - "requires": { - "mime-types": "~2.1.24", - "negotiator": "0.6.2" - } - }, - "acorn": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", - "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-3.0.0.tgz", - "integrity": "sha512-YBrGyT2/uVQ/c6Rr+t6ZJXniY03YtHGMJQYal368burRGYKqhx9qGTWqcBU5s1CwYY9E/ri63RYyG1IacMZtqw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - } - }, - "adm-zip": { - "version": "0.4.16", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.4.16.tgz", - "integrity": "sha512-TFi4HBKSGfIKsK5YCkKaaFG2m4PEDyViZmEwof3MTIgzimHLto6muaHVpbrljdIvIrFZzEq/p4nafOeLcYegrg==", - "dev": true - }, - "agent-base": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", - "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", - "dev": true, - "requires": { - "es6-promisify": "^5.0.0" - } - }, - "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" - } - }, - "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": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "dev": true - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "alphanum-sort": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", - "integrity": "sha1-l6ERlkmyEa0zaR2fn0hqjsn74KM=", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", - "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", - "dev": true, - "requires": { - "type-fest": "^0.11.0" - } - }, - "ansi-html": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ansi-html/-/ansi-html-0.0.7.tgz", - "integrity": "sha1-gTWEAhliqenm/QOflA0S9WynhZ4=", - "dev": true - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.1.tgz", - "integrity": "sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "app-root-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/app-root-path/-/app-root-path-3.0.0.tgz", - "integrity": "sha512-qMcx+Gy2UZynHjOHOIXPNvpf+9cjvk3cWrBBK7zg4gH9+clobJRb9NGzcT7mQTcV/6Gm/1WelUtqxVXnNlrwcw==", - "dev": true - }, - "aproba": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", - "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", - "dev": true - }, - "are-we-there-yet": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", - "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^2.0.6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "aria-query": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-3.0.0.tgz", - "integrity": "sha1-ZbP8wcoRVajJrmTW7uKX8V1RM8w=", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7", - "commander": "^2.11.0" - } - }, - "arity-n": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arity-n/-/arity-n-1.0.4.tgz", - "integrity": "sha1-2edrEXM+CFacCEeuezmyhgswt0U=", - "dev": true - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-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-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", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "asn1.js": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", - "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/assert/-/assert-1.5.0.tgz", - "integrity": "sha512-EDsgawzwoun2CZkCgtxJbv392v4nbk9XDD06zI+kQYoBM/3RBWLlEyJARDOmhAAosBjWACEkKL6S+lIZtcAubA==", - "dev": true, - "requires": { - "object-assign": "^4.1.1", - "util": "0.10.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.1.tgz", - "integrity": "sha1-sX0I0ya0Qj5Wjv9xn5GwscvfafE=", - "dev": true - }, - "util": { - "version": "0.10.3", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.3.tgz", - "integrity": "sha1-evsa/lCAUkZInj23/g7TeTNqwPk=", - "dev": true, - "requires": { - "inherits": "2.0.1" - } - } - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "ast-types-flow": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.7.tgz", - "integrity": "sha1-9wtzXGvKGlycItmCw+Oef+ujva0=", - "dev": true - }, - "async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "dev": true, - "requires": { - "lodash": "^4.17.14" - } - }, - "async-each": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.3.tgz", - "integrity": "sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ==", - "dev": true - }, - "async-limiter": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", - "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.6.tgz", - "integrity": "sha512-XrvP4VVHdRBCdX1S3WXVD8+RyG9qeb1D5Sn1DeLiG2xfSpzellk5k54xbUERJ3M5DggQxes39UGOTP8CFrEGbg==", - "dev": true, - "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", - "colorette": "^1.2.1", - "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - } - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "axobject-query": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-2.0.2.tgz", - "integrity": "sha512-MCeek8ZH7hKyO1rWUbKNQBbl4l2eY0ntk7OGi+q0RlafrCnfPxC06WZA+uebCfmYp4mNU9jRBP1AhGyf8+W3ww==", - "dev": true, - "requires": { - "ast-types-flow": "0.0.7" - } - }, - "babel-loader": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.1.0.tgz", - "integrity": "sha512-7q7nC1tYOrqvUrN3LQK4GwSk/TQorZSOlO9C+RZDZpODgyN4ZlCqE5q9cDsyWOliN+aU9B4JX01xK9eJXowJLw==", - "dev": true, - "requires": { - "find-cache-dir": "^2.1.0", - "loader-utils": "^1.4.0", - "mkdirp": "^0.5.3", - "pify": "^4.0.1", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true - }, - "batch": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", - "integrity": "sha1-3DQxT05nkxgJP8dgJyUl+UvyXBY=", - "dev": true - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - }, - "dependencies": { - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "blocking-proxy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/blocking-proxy/-/blocking-proxy-1.0.1.tgz", - "integrity": "sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "bluebird": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", - "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", - "dev": true - }, - "bn.js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.0.tgz", - "integrity": "sha512-D7iWRBvnZE8ecXiLj/9wbxH7Tk79fAh8IHaTNq1RWRixsS02W+5qS+iE9yq6RYl0asXx5tw0bLhmT5pIfbSquw==", - "dev": true - }, - "body-parser": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.19.0.tgz", - "integrity": "sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "~1.1.2", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "on-finished": "~2.3.0", - "qs": "6.7.0", - "raw-body": "2.4.0", - "type-is": "~1.6.17" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - }, - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "bonjour": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/bonjour/-/bonjour-3.5.0.tgz", - "integrity": "sha1-jokKGD2O6aI5OzhExpGkK897yfU=", - "dev": true, - "requires": { - "array-flatten": "^2.1.0", - "deep-equal": "^1.0.1", - "dns-equal": "^1.0.0", - "dns-txt": "^2.0.2", - "multicast-dns": "^6.0.1", - "multicast-dns-service-types": "^1.1.0" - } - }, - "boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha1-aN/1++YMUes3cl6p4+0xDcwed24=", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha1-EsJe/kCkXjwyPrhnWgoM5XsiNx8=", - "dev": true - }, - "browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "dev": true, - "requires": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "browserify-cipher": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", - "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", - "dev": true, - "requires": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "browserify-des": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", - "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "browserify-rsa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", - "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", - "dev": true, - "requires": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "browserify-sign": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", - "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", - "dev": true, - "requires": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "browserify-zlib": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.2.0.tgz", - "integrity": "sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==", - "dev": true, - "requires": { - "pako": "~1.0.5" - } - }, - "browserslist": { - "version": "4.16.6", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.6.tgz", - "integrity": "sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001219", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.723", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - }, - "dependencies": { - "caniuse-lite": { - "version": "1.0.30001248", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001248.tgz", - "integrity": "sha512-NwlQbJkxUFJ8nMErnGtT0QTM2TJ33xgz4KXJSMIrjXIbDVdaYueGyjOrLKRtJC+rTiWfi6j5cnZN1NBiSBJGNw==", - "dev": true - } - } - }, - "browserstack": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/browserstack/-/browserstack-1.6.1.tgz", - "integrity": "sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - } - }, - "buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "dev": true, - "requires": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "buffer-indexof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-indexof/-/buffer-indexof-1.1.1.tgz", - "integrity": "sha512-4/rOEg86jivtPTeOUUT61jJO1Ya1TrR/OkqCSZDyq84WJh3LuuiphBYJN+fm5xufIk4XAFcEwte/8WzC8If/1g==", - "dev": true - }, - "buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha1-JuYe0UIvtw3ULm42cp7VHYVf6Nk=", - "dev": true - }, - "builtin-modules": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-1.1.1.tgz", - "integrity": "sha1-Jw8HbFpywC9bZaR9+Uxf46J4iS8=", - "dev": true - }, - "builtin-status-codes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/builtin-status-codes/-/builtin-status-codes-3.0.0.tgz", - "integrity": "sha1-hZgoeOIbmOHGZCXgPQF0eI9Wnug=", - "dev": true - }, - "builtins": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", - "integrity": "sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==", - "dev": true - }, - "bytes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", - "dev": true - }, - "cacache": { - "version": "15.0.5", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.0.5.tgz", - "integrity": "sha512-lloiL22n7sOjEEXdL8NAjTgv9a1u43xICE9/203qonkZUCj5X1UEWIdf2/Y0d6QcCtMzbKQyhrcDbdvlZTs/+A==", - "dev": true, - "requires": { - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.0", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caller-callsite": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", - "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", - "dev": true, - "requires": { - "callsites": "^2.0.0" - } - }, - "caller-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", - "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", - "dev": true, - "requires": { - "caller-callsite": "^2.0.0" - } - }, - "callsites": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", - "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", - "dev": true - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" - } - }, - "caniuse-lite": { - "version": "1.0.30001196", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001196.tgz", - "integrity": "sha512-CPvObjD3ovWrNBaXlAIGWmg2gQQuJ5YhuciUOjPRox6hIQttu8O+b51dx6VIpIY9ESd2d0Vac1RKpICdG4rGUg==", - "dev": true - }, - "canonical-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/canonical-path/-/canonical-path-1.0.0.tgz", - "integrity": "sha512-feylzsbDxi1gPZ1IjystzIQZagYYLvfKrSuygUCgf7z6x790VEzze5QEkdSV1U58RA7Hi0+v6fv4K54atOzATg==", - "dev": true - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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.1", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.1.tgz", - "integrity": "sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==", - "dev": true, - "requires": { - "anymatch": "~3.1.1", - "braces": "~3.0.2", - "fsevents": "~2.3.1", - "glob-parent": "~5.1.0", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.5.0" - }, - "dependencies": { - "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 - } - } - }, - "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.2", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.2.tgz", - "integrity": "sha512-9e/zx1jw7B4CO+c/RXoCsfg/x1AfUBioy4owYH0bJprEYAx5hRFLRhWBqHAG57D0ZM4H7vxbP7bPe0VwhQRYDQ==", - "dev": true, - "requires": { - "tslib": "^1.9.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 - } - } - }, - "cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "circular-dependency-plugin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.0.tgz", - "integrity": "sha512-7p4Kn/gffhQaavNfyDFg7LS5S/UT1JAjyGd4UqR2+jzoYF02eDkj0Ec3+48TsIa4zghjLY87nQHIh/ecK9qLdw==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true - }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.5.0.tgz", - "integrity": "sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ==", - "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": "5.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", - "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", - "dev": true, - "requires": { - "string-width": "^3.1.0", - "strip-ansi": "^5.2.0", - "wrap-ansi": "^5.1.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "coa": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/coa/-/coa-2.0.2.tgz", - "integrity": "sha512-q5/jG+YQnSy4nRTV4F7lPepBJZ8qBNJJDBuJdoejDyLXgmL7IEo+Le2JDZudFTFt7mrCqIRaSjws4ygRCTCAXA==", - "dev": true, - "requires": { - "@types/q": "^1.5.1", - "chalk": "^2.4.1", - "q": "^1.1.2" - } - }, - "code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "dev": true - }, - "codelyzer": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/codelyzer/-/codelyzer-6.0.1.tgz", - "integrity": "sha512-cOyGQgMdhnRYtW2xrJUNrNYDjEgwQ+BrE2y93Bwz3h4DJ6vJRLfupemU5N3pbYsUlBHJf0u1j1UGk+NLW4d97g==", - "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", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-9.0.0.tgz", - "integrity": "sha512-ctjwuntPfZZT2mNj2NDIVu51t9cvbhl/16epc5xEwyzyDt76pX9UgwvY+MbXrf/C/FWwdtmNtfP698BKI+9leQ==", - "dev": true - }, - "@angular/core": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-9.0.0.tgz", - "integrity": "sha512-6Pxgsrf0qF9iFFqmIcWmjJGkkCaCm6V5QNnxMy2KloO3SDq6QuMVRbN9RtC8Urmo25LP+eZ6ZgYqFYpdD8Hd9w==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "sprintf-js": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.2.tgz", - "integrity": "sha512-VE0SOVEHCk7Qc8ulkWw3ntAzXuqf7S2lvwQaDLRnUeIEaKNQJzV6BwmLKhOqT61aGhfUMrXeaBk+oDGCzvhcug==", - "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 - } - } - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "dev": true, - "requires": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "color-string": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", - "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", - "dev": true, - "requires": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "colors": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.4.0.tgz", - "integrity": "sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs=", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "compose-function": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/compose-function/-/compose-function-3.0.3.tgz", - "integrity": "sha1-ntZ18TzFRQHTCVCkhv9qe6OrGF8=", - "dev": true, - "requires": { - "arity-n": "^1.0.4" - } - }, - "compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "requires": { - "mime-db": ">= 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "connect-history-api-fallback": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", - "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", - "dev": true - }, - "console-browserify": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.2.0.tgz", - "integrity": "sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==", - "dev": true - }, - "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 - }, - "constants-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/constants-browserify/-/constants-browserify-1.0.0.tgz", - "integrity": "sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U=", - "dev": true - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=", - "dev": true - }, - "copy-concurrently": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", - "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "copy-webpack-plugin": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-6.2.1.tgz", - "integrity": "sha512-VH2ZTMIBsx4p++Lmpg77adZ0KUyM5gFR/9cuTrbneNnJlcQXUFvsNariPqq2dq2kV3F2skHiDGPQCyKWy1+U0Q==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "fast-glob": "^3.2.4", - "find-cache-dir": "^3.3.1", - "glob-parent": "^5.1.1", - "globby": "^11.0.1", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "webpack-sources": "^1.4.3" - }, - "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" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "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 - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "core-js": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.9.1.tgz", - "integrity": "sha512-gSjRvzkxQc1zjM/5paAmL4idJBFzuJoo+jDjF1tStYFMV2ERfD02HhahhCGXUyHxQRG4yFKVSdO6g62eoRMcDg==" - }, - "core-js-compat": { - "version": "3.9.1", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.9.1.tgz", - "integrity": "sha512-jXAirMQxrkbiiLsCx9bQPJFA6llDadKMpYrBJQJ3/c4/vsPP/fAf29h24tviRlvwUL6AmY5CHLu2GvjuYviQqA==", - "dev": true, - "requires": { - "browserslist": "^4.16.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", - "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", - "dev": true, - "requires": { - "import-fresh": "^2.0.0", - "is-directory": "^0.3.1", - "js-yaml": "^3.13.1", - "parse-json": "^4.0.0" - } - }, - "create-ecdh": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", - "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "dev": true, - "requires": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "crypto-browserify": { - "version": "3.12.0", - "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", - "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", - "dev": true, - "requires": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - } - }, - "css": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/css/-/css-2.2.4.tgz", - "integrity": "sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "source-map": "^0.6.1", - "source-map-resolve": "^0.5.2", - "urix": "^0.1.0" - }, - "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 - } - } - }, - "css-color-names": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", - "integrity": "sha1-gIrcLnnPhHOAabZGyyDsJ762KeA=", - "dev": true - }, - "css-declaration-sorter": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-4.0.1.tgz", - "integrity": "sha512-BcxQSKTSEEQUftYpBVnsH4SF05NTuBokb19/sBt6asXGKZ/6VP7PLG1CBCkFDYOnhXhPh0jMhO6xZ71oYHXHBA==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "timsort": "^0.3.0" - } - }, - "css-loader": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-4.3.0.tgz", - "integrity": "sha512-rdezjCjScIrsL8BSYszgT4s476IcNKt6yX69t0pHjJVnPUTDpn4WfIpDQTN3wCJvUvfsz/mFjuGOekf3PY3NUg==", - "dev": true, - "requires": { - "camelcase": "^6.0.0", - "cssesc": "^3.0.0", - "icss-utils": "^4.1.1", - "loader-utils": "^2.0.0", - "postcss": "^7.0.32", - "postcss-modules-extract-imports": "^2.0.0", - "postcss-modules-local-by-default": "^3.0.3", - "postcss-modules-scope": "^2.2.0", - "postcss-modules-values": "^3.0.0", - "postcss-value-parser": "^4.1.0", - "schema-utils": "^2.7.1", - "semver": "^7.3.2" - } - }, - "css-parse": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/css-parse/-/css-parse-2.0.0.tgz", - "integrity": "sha1-pGjuZnwW2BzPBcWMONKpfHgNv9Q=", - "dev": true, - "requires": { - "css": "^2.0.0" - } - }, - "css-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-2.1.0.tgz", - "integrity": "sha512-Dqk7LQKpwLoH3VovzZnkzegqNSuAziQyNZUcrdDM401iY+R5NkGBXGmtO05/yaXQziALuPogeG0b7UAgjnTJTQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^3.2.1", - "domutils": "^1.7.0", - "nth-check": "^1.0.2" - } - }, - "css-select-base-adapter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/css-select-base-adapter/-/css-select-base-adapter-0.1.1.tgz", - "integrity": "sha512-jQVeeRG70QI08vSTwf1jHxp74JoZsr2XSgETae8/xC8ovSnL2WF87GTLO86Sbwdt2lK4Umg4HnnwMO4YF3Ce7w==", - "dev": true - }, - "css-selector-tokenizer": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", - "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "fastparse": "^1.1.2" - } - }, - "css-tree": { - "version": "1.0.0-alpha.37", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.0.0-alpha.37.tgz", - "integrity": "sha512-DMxWJg0rnz7UgxKT0Q1HU/L9BeJI0M6ksor0OgqOnF+aRCDWg/N2641HmVyU9KVIu0OVVWOb2IpC9A+BJRnejg==", - "dev": true, - "requires": { - "mdn-data": "2.0.4", - "source-map": "^0.6.1" - }, - "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 - } - } - }, - "css-what": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-3.4.2.tgz", - "integrity": "sha512-ACUm3L0/jiZTqfzRM3Hi9Q8eZqd6IK37mMWPLz9PJxkLWllYeRf+EHUSHYEtFop2Eqytaq1FizFVh7XfBnXCDQ==", - "dev": true - }, - "cssauron": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/cssauron/-/cssauron-1.4.0.tgz", - "integrity": "sha1-pmAt/34EqDBtwNuaVR6S6LVmKtg=", - "dev": true, - "requires": { - "through": "X.X.X" - } - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "cssnano": { - "version": "4.1.10", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", - "integrity": "sha512-5wny+F6H4/8RgNlaqab4ktc3e0/blKutmq8yNlBFXA//nSFFAqAngjNVRzUvCgYROULmZZUoosL/KSoZo5aUaQ==", - "dev": true, - "requires": { - "cosmiconfig": "^5.0.0", - "cssnano-preset-default": "^4.0.7", - "is-resolvable": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "cssnano-preset-default": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-4.0.8.tgz", - "integrity": "sha512-LdAyHuq+VRyeVREFmuxUZR1TXjQm8QQU/ktoo/x7bz+SdOge1YKc5eMN6pRW7YWBmyq59CqYba1dJ5cUukEjLQ==", - "dev": true, - "requires": { - "css-declaration-sorter": "^4.0.1", - "cssnano-util-raw-cache": "^4.0.1", - "postcss": "^7.0.0", - "postcss-calc": "^7.0.1", - "postcss-colormin": "^4.0.3", - "postcss-convert-values": "^4.0.1", - "postcss-discard-comments": "^4.0.2", - "postcss-discard-duplicates": "^4.0.2", - "postcss-discard-empty": "^4.0.1", - "postcss-discard-overridden": "^4.0.1", - "postcss-merge-longhand": "^4.0.11", - "postcss-merge-rules": "^4.0.3", - "postcss-minify-font-values": "^4.0.2", - "postcss-minify-gradients": "^4.0.2", - "postcss-minify-params": "^4.0.2", - "postcss-minify-selectors": "^4.0.2", - "postcss-normalize-charset": "^4.0.1", - "postcss-normalize-display-values": "^4.0.2", - "postcss-normalize-positions": "^4.0.2", - "postcss-normalize-repeat-style": "^4.0.2", - "postcss-normalize-string": "^4.0.2", - "postcss-normalize-timing-functions": "^4.0.2", - "postcss-normalize-unicode": "^4.0.1", - "postcss-normalize-url": "^4.0.1", - "postcss-normalize-whitespace": "^4.0.2", - "postcss-ordered-values": "^4.1.2", - "postcss-reduce-initial": "^4.0.3", - "postcss-reduce-transforms": "^4.0.2", - "postcss-svgo": "^4.0.3", - "postcss-unique-selectors": "^4.0.1" - } - }, - "cssnano-util-get-arguments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-arguments/-/cssnano-util-get-arguments-4.0.0.tgz", - "integrity": "sha1-7ToIKZ8h11dBsg87gfGU7UnMFQ8=", - "dev": true - }, - "cssnano-util-get-match": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-util-get-match/-/cssnano-util-get-match-4.0.0.tgz", - "integrity": "sha1-wOTKB/U4a7F+xeUiULT1lhNlFW0=", - "dev": true - }, - "cssnano-util-raw-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-raw-cache/-/cssnano-util-raw-cache-4.0.1.tgz", - "integrity": "sha512-qLuYtWK2b2Dy55I8ZX3ky1Z16WYsx544Q0UWViebptpwn/xDBmog2TLg4f+DBMg1rJ6JDWtn96WHbOKDWt1WQA==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "cssnano-util-same-parent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/cssnano-util-same-parent/-/cssnano-util-same-parent-4.0.1.tgz", - "integrity": "sha512-WcKx5OY+KoSIAxBW6UBBRay1U6vkYheCdjyVNDm85zt5K9mHoGOfsOsqIszfAqrQQFIIKgjh2+FDgIj/zsl21Q==", - "dev": true - }, - "csso": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/csso/-/csso-4.2.0.tgz", - "integrity": "sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==", - "dev": true, - "requires": { - "css-tree": "^1.1.2" - }, - "dependencies": { - "css-tree": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-1.1.3.tgz", - "integrity": "sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==", - "dev": true, - "requires": { - "mdn-data": "2.0.14", - "source-map": "^0.6.1" - } - }, - "mdn-data": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", - "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", - "dev": true - }, - "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 - } - } - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha1-XQKkaFCt8bSjF5RqOSj8y1v9BCU=", - "dev": true - }, - "cyclist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", - "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", - "dev": true - }, - "d": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", - "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", - "dev": true, - "requires": { - "es5-ext": "^0.10.50", - "type": "^1.0.1" - } - }, - "damerau-levenshtein": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.6.tgz", - "integrity": "sha512-JVrozIeElnj3QzfUIt8tB8YMluBJom4Vw9qTPpjGYQ9fYlB3D/rb6OordUxf3xeFB35LKWs0xqcO5U6ySvBtug==", - "dev": true - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "date-format": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.4.tgz", - "integrity": "sha512-/jyf4rhB17ge328HJuJjAcmRtCsGd+NDeAtahRBTaK6vSPR6MO5HlrAit3Nn7dVjaa6sowW0WXt8yQtLyZQFRg==", - "dev": true - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "deep-equal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.1.1.tgz", - "integrity": "sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g==", - "dev": true, - "requires": { - "is-arguments": "^1.0.4", - "is-date-object": "^1.0.1", - "is-regex": "^1.0.4", - "object-is": "^1.0.1", - "object-keys": "^1.1.1", - "regexp.prototype.flags": "^1.2.0" - } - }, - "default-gateway": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-4.2.0.tgz", - "integrity": "sha512-h6sMrVB1VMWVrW13mSc6ia/DwYYw5MN6+exNu1OaJeFac5aSAvwM7lZ0NVfTABuSkQelr4h5oebg3KB1XPdjgA==", - "dev": true, - "requires": { - "execa": "^1.0.0", - "ip-regex": "^2.1.0" - } - }, - "defaults": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "del": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-4.1.1.tgz", - "integrity": "sha512-QwGuEUouP2kVwQenAsOof5Fv8K9t3D8Ca8NxcXKrIpEHjTXK5J2nXLdP+ALI1cgv8wj7KuwBhTwBkOZSJKM5XQ==", - "dev": true, - "requires": { - "@types/glob": "^7.1.1", - "globby": "^6.1.0", - "is-path-cwd": "^2.0.0", - "is-path-in-cwd": "^2.0.0", - "p-map": "^2.0.0", - "pify": "^4.0.1", - "rimraf": "^2.6.3" - }, - "dependencies": { - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha1-9abXDoOV4hyFj7BInWTfAkJNUGw=", - "dev": true, - "requires": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true - }, - "depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", - "dev": true - }, - "dependency-graph": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.7.2.tgz", - "integrity": "sha512-KqtH4/EZdtdfWX0p6MGP9jljvxSY6msy/pRUD4jgNwVpv3v1QmNLlsB3LDSSUg79BRVSn7jI1QPRtArGABovAQ==", - "dev": true - }, - "des.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", - "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "detect-node": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.0.4.tgz", - "integrity": "sha512-ZIzRpLJrOj7jjP2miAtgqIfmzbxa4ZOr5jJc601zklsfEx9oTzmmj2nVpIPRpNlRTIh8lc1kyViIY7BWSGNmKw==", - "dev": true - }, - "di": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha1-gGZJMmzqp8qjMG112YXqJ0i6kTw=", - "dev": true - }, - "diff": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", - "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true - }, - "diffie-hellman": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", - "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "requires": { - "path-type": "^4.0.0" - } - }, - "dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "sha1-s55/HabrCnW6nBcySzR1PEfgZU0=", - "dev": true - }, - "dns-packet": { - "version": "1.3.4", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-1.3.4.tgz", - "integrity": "sha512-BQ6F4vycLXBvdrJZ6S3gZewt6rcrks9KBgM9vrhW+knGRqc8uEdT7fuCwloc7nny5xNoMJ17HGH0R/6fpo8ECA==", - "dev": true, - "requires": { - "ip": "^1.1.0", - "safe-buffer": "^5.0.1" - } - }, - "dns-txt": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/dns-txt/-/dns-txt-2.0.2.tgz", - "integrity": "sha1-uR2Ab10nGI5Ks+fRB9iBocxGQrY=", - "dev": true, - "requires": { - "buffer-indexof": "^1.0.0" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha1-ViromZ9Evl6jB29UGdzVnrQ6yVs=", - "dev": true, - "requires": { - "custom-event": "~1.0.0", - "ent": "~2.2.0", - "extend": "^3.0.0", - "void-elements": "^2.0.0" - } - }, - "dom-serializer": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.2.2.tgz", - "integrity": "sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "entities": "^2.0.0" - }, - "dependencies": { - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - } - } - }, - "domain-browser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/domain-browser/-/domain-browser-1.2.0.tgz", - "integrity": "sha512-jnjyiM6eRyZl2H+W8Q/zLMA481hzi0eszAaBUzIVnmYVDBbnLxVNnfu1HgEBvCbL+71FrxMl3E6lpKH7Ge3OXA==", - "dev": true - }, - "domelementtype": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true - }, - "domutils": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.7.0.tgz", - "integrity": "sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==", - "dev": true, - "requires": { - "dom-serializer": "0", - "domelementtype": "1" - } - }, - "dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "dev": true, - "requires": { - "is-obj": "^2.0.0" - } - }, - "duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "requires": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=", - "dev": true - }, - "electron-to-chromium": { - "version": "1.3.792", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.792.tgz", - "integrity": "sha512-RM2O2xrNarM7Cs+XF/OE2qX/aBROyOZqqgP+8FXMXSuWuUqCfUUzg7NytQrzZU3aSqk1Qq6zqnVkJsbfMkIatg==", - "dev": true - }, - "elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "dev": true, - "requires": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", - "dev": true - }, - "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" - } - } - } - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "engine.io": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.3.tgz", - "integrity": "sha512-rqs60YwkvWTLLnfazqgZqLa/aKo+9cueVfEi/dZ8PyGyaf8TLOxj++4QMIgeG3Gn0AhrWiFXvghsoY9L9h25GA==", - "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": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", - "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", - "dev": true, - "requires": { - "@socket.io/base64-arraybuffer": "~1.0.2" - } - }, - "enhanced-resolve": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz", - "integrity": "sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.0.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha1-6WQhkyWiHQX0RGai9obtbOX13R0=", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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, - "requires": { - "prr": "~1.0.1" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-abstract": { - "version": "1.19.2", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.19.2.tgz", - "integrity": "sha512-gfSBJoZdlL2xRiOCy0g8gLMryhoe1TlimjzU99L/31Z8QEGIhVQI+EWwt5lT+AuU9SnorVupXFqqOGqGfsyO6w==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "get-intrinsic": "^1.1.1", - "get-symbol-description": "^1.0.0", - "has": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.3", - "is-callable": "^1.2.4", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.1", - "is-string": "^1.0.7", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.2", - "string.prototype.trimend": "^1.0.4", - "string.prototype.trimstart": "^1.0.4", - "unbox-primitive": "^1.0.1" - }, - "dependencies": { - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "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" - } - } - } - }, - "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.53", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.53.tgz", - "integrity": "sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q==", - "dev": true, - "requires": { - "es6-iterator": "~2.0.3", - "es6-symbol": "~3.1.3", - "next-tick": "~1.0.0" - } - }, - "es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha1-p96IkUGgWpSwhUQDstCg+/qY87c=", - "dev": true, - "requires": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "dev": true - }, - "es6-promisify": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", - "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", - "dev": true, - "requires": { - "es6-promise": "^4.0.3" - } - }, - "es6-symbol": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", - "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", - "dev": true, - "requires": { - "d": "^1.0.1", - "ext": "^1.1.2" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "eslint-scope": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", - "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", - "dev": true, - "requires": { - "esrecurse": "^4.1.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "eventsource": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/eventsource/-/eventsource-1.1.1.tgz", - "integrity": "sha512-qV5ZC0h7jYIAOhArFJgSfdyz6rALJyb270714o7ZtNnw2WSJ+eexhKtE0O8LYPRsHZHf2osHKZBxGPvm3kPkCA==", - "dev": true, - "requires": { - "original": "^1.0.0" - } - }, - "evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "dev": true, - "requires": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.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" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "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": { - "accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "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 - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "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" - } - }, - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "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" - } - }, - "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" - } - }, - "depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true - }, - "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" - } - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "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" - } - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "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": { - "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 - } - } - }, - "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" - } - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "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 - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - } - } - }, - "ext": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.4.0.tgz", - "integrity": "sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A==", - "dev": true, - "requires": { - "type": "^2.0.0" - }, - "dependencies": { - "type": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/type/-/type-2.3.0.tgz", - "integrity": "sha512-rgPIqOdfK/4J9FhiVrZ3cveAjRRo5rsQBAIhnylX874y1DX/kEKSVdLsnuHB6l1KTjHyU01VjiMBHgU2adejyg==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "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" - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.5.tgz", - "integrity": "sha512-2DtFcgT68wiTTiwZ2hNdJfcHNke9XOfnwmBRWXhmeKM8rF0TGwmC/Qto3S7RoZKp5cilZbxzO5iTNTQsJ+EeDg==", - "dev": true, - "requires": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.0", - "merge2": "^1.3.0", - "micromatch": "^4.0.2", - "picomatch": "^2.2.1" - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastparse": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", - "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", - "dev": true - }, - "fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", - "integrity": "sha1-TkkvjQTftviQA1B/btvy1QHnxvQ=", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "figgy-pudding": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", - "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", - "dev": true - }, - "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-loader": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.1.1.tgz", - "integrity": "sha512-Klt8C4BjWSXYQAfhpYYkG4qHNTna4toMHEbWrI5IuVoxbU6uiDKeKAP99R8mmbJi3lvewn/jQBOgU4+NS3tDQw==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.1.tgz", - "integrity": "sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "dependencies": { - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "dev": true, - "requires": { - "locate-path": "^3.0.0" - } - }, - "flatted": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.5.tgz", - "integrity": "sha512-WIWGi2L3DyTUvUrwRKgGi9TwxQMUEqPOPQBVi71R96jZXJdFskXEmf54BoZaS1kknGODoIGASGEzBUYdyMCBJg==", - "dev": true - }, - "flush-write-stream": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", - "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "follow-redirects": { - "version": "1.14.9", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.14.9.tgz", - "integrity": "sha512-MQDfihBQYMcyy5dhRDJUHcw7lb2Pv/TuE6xP1vyraLukNDHKbDxDNaOE3NbCAdKQApno+GPRyo1YAp89yCjK4w==", - "dev": true - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", - "dev": true - }, - "from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "fs-extra": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-4.0.2.tgz", - "integrity": "sha1-+RcExT0bRh+JNFKwwwfZmXZHq2s=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "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-write-stream-atomic": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", - "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.1.3.tgz", - "integrity": "sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gauge": { - "version": "2.7.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", - "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", - "dev": true, - "requires": { - "aproba": "^1.0.3", - "console-control-strings": "^1.0.0", - "has-unicode": "^2.0.0", - "object-assign": "^4.1.0", - "signal-exit": "^3.0.0", - "string-width": "^1.0.1", - "strip-ansi": "^3.0.1", - "wide-align": "^1.1.0" - }, - "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 - }, - "is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", - "dev": true, - "requires": { - "number-is-nan": "^1.0.0" - } - }, - "string-width": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", - "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", - "dev": true, - "requires": { - "code-point-at": "^1.0.0", - "is-fullwidth-code-point": "^1.0.0", - "strip-ansi": "^3.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" - } - } - } - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "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", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "globby": { - "version": "11.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.2.tgz", - "integrity": "sha512-2ZThXDvvV8fYFRVIxnrMQBipZQDr7MxKAmQK1vujaj9/7eF0efG7BPUKJ7jP7G5SLF37xKDXvO4S/KKLj/Z0og==", - "dev": true, - "requires": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.1.1", - "ignore": "^5.1.4", - "merge2": "^1.3.0", - "slash": "^3.0.0" - } - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - } - } - }, - "has-bigints": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.1.tgz", - "integrity": "sha512-LSBS2LjbNBTf6287JEbEzvJgftkF5qFkmCo9hDRpAzKhUOlJ+hx8dd4USs00SgsUNwc4617J9ki5YtEClM2ffA==", - "dev": true - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.2.tgz", - "integrity": "sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw==", - "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 - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "hex-color-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/hex-color-regex/-/hex-color-regex-1.1.0.tgz", - "integrity": "sha512-l9sfDFsuqtOqKDsQdqrMRk0U85RZc0RtOR9yPI7mRVOa4FsR/BVnZ0shmQRM96Ji99kYZP/7hn1cedc1+ApsTQ==", - "dev": true - }, - "hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha1-0nRXAQJabHdabFRXk+1QL8DGSaE=", - "dev": true, - "requires": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "hosted-git-info": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz", - "integrity": "sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - } - }, - "hpack.js": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", - "integrity": "sha1-h3dMCUnlE/QuhFdbPEVoH63ioLI=", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "obuf": "^1.0.0", - "readable-stream": "^2.0.1", - "wbuf": "^1.1.0" - } - }, - "hsl-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsl-regex/-/hsl-regex-1.0.0.tgz", - "integrity": "sha1-1JMwx4ntgZ4nakwNJy3/owsY/m4=", - "dev": true - }, - "hsla-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/hsla-regex/-/hsla-regex-1.0.0.tgz", - "integrity": "sha1-wc56MWjIxmFAM6S194d/OyJfnDg=", - "dev": true - }, - "html-entities": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-1.4.0.tgz", - "integrity": "sha512-8nxjcBcd8wovbeKx7h3wTji4e6+rhaVuPNpMqwWgnHh+N9ToqsCs6XztWRBPQ+UtzsoMAdKZtUENoVzU/EMtZA==", - "dev": true - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http-deceiver": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", - "integrity": "sha1-+nFolEq5pRnTN8sL7HKE3D5yPYc=", - "dev": true - }, - "http-errors": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.7.2.tgz", - "integrity": "sha512-uUQBt3H/cSIVfch6i1EuPNy/YsRSOUBXTVfZ+yR7Zjez3qjBz6i9+i4zjNaoqcoFVI4lQJ5plg63TvGfRSDCRg==", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.1", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.0" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - } - } - }, - "http-proxy-middleware": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/http-proxy-middleware/-/http-proxy-middleware-0.19.1.tgz", - "integrity": "sha512-yHYTgWMQO8VvwNS22eLLloAkvungsKdKTLO8AJlftYIKNfJr3GK3zK0ZCfzDDGUBttdGc8xFy1mCitvNKQtC3Q==", - "dev": true, - "requires": { - "http-proxy": "^1.17.0", - "is-glob": "^4.0.0", - "lodash": "^4.17.11", - "micromatch": "^3.1.10" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "https-browserify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/https-browserify/-/https-browserify-1.0.0.tgz", - "integrity": "sha1-7AbBDgo0wPL68Zn3/X/Hj//QPHM=", - "dev": true - }, - "https-proxy-agent": { - "version": "2.2.4", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", - "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", - "dev": true, - "requires": { - "agent-base": "^4.3.0", - "debug": "^3.1.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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-4.1.1.tgz", - "integrity": "sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==", - "dev": true, - "requires": { - "postcss": "^7.0.14" - } - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "iferr": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", - "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", - "dev": true - }, - "ignore": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", - "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", - "dev": true - }, - "ignore-walk": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.4.tgz", - "integrity": "sha512-PY6Ii8o1jMRA1z4F2hRkH/xN59ox43DavKvD3oDpfurRlOJyAHpifIwpbdv1n4jt4ov0jSpw3kQ4GhJnpBL6WQ==", - "dev": true, - "requires": { - "minimatch": "^3.0.4" - } - }, - "image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha1-Cd/Uq50g4p6xw+gLiZA3jfnjy5w=", - "dev": true, - "optional": true - }, - "immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha1-nbHb0Pr43m++D13V5Wu2BigN5ps=", - "dev": true - }, - "import-fresh": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", - "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", - "dev": true, - "requires": { - "caller-path": "^2.0.0", - "resolve-from": "^3.0.0" - } - }, - "import-local": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", - "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", - "dev": true, - "requires": { - "pkg-dir": "^3.0.0", - "resolve-cwd": "^2.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "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 - }, - "indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha1-8w9xbI4r00bHtn0985FVZqfAVgc=", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "ini": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.6.tgz", - "integrity": "sha512-IZUoxEjNjubzrmvzZU4lKP7OnYmX72XRl3sqkfJhBKweKi5rnGi5+IUdlj/H1M+Ip5JQ1WzaDMOBRY90Ajc5jg==", - "dev": true - }, - "inquirer": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", - "integrity": "sha512-JG3eIAj5V9CwcGvuOmoo6LB9kbAYT8HXffUl6memuszlwDC/qvFAJw49XJ5NROSFNPxp3iQg1GqkFhaY/CR0IA==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-width": "^3.0.0", - "external-editor": "^3.0.3", - "figures": "^3.0.0", - "lodash": "^4.17.19", - "mute-stream": "0.0.8", - "run-async": "^2.4.0", - "rxjs": "^6.6.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0", - "through": "^2.3.6" - }, - "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.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "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" - } - } - } - }, - "internal-ip": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/internal-ip/-/internal-ip-4.3.0.tgz", - "integrity": "sha512-S1zBo1D6zcsyuC6PMmY5+55YMILQ9av8lotMx447Bq6SAgo/sDK6y6uUKmuYhW7eacnIhFfsPmCNYdDzsnnDCg==", - "dev": true, - "requires": { - "default-gateway": "^4.2.0", - "ipaddr.js": "^1.9.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": "1.1.5", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", - "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", - "dev": true - }, - "ip-regex": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", - "integrity": "sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk=", - "dev": true - }, - "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 - }, - "is-absolute-url": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", - "integrity": "sha1-UFMN+4T8yap9vnhS6Do3uTufKqY=", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arguments": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.0.tgz", - "integrity": "sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg==", - "dev": true, - "requires": { - "call-bind": "^1.0.0" - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "dev": true, - "requires": { - "has-bigints": "^1.0.1" - } - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "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-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-callable": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.4.tgz", - "integrity": "sha512-nsuwtxZfMX67Oryl9LCQ+upnC0Z0BgpwntpS89m1H/TLF0zNfzfLMV/9Wa/6MZsj0acpEjAO0KF1xT6ZdLl95w==", - "dev": true - }, - "is-color-stop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-color-stop/-/is-color-stop-1.1.0.tgz", - "integrity": "sha1-z/9HGu5N1cnhWFmPvhKWe1za00U=", - "dev": true, - "requires": { - "css-color-names": "^0.0.4", - "hex-color-regex": "^1.1.0", - "hsl-regex": "^1.0.0", - "hsla-regex": "^1.0.0", - "rgb-regex": "^1.0.1", - "rgba-regex": "^1.0.0" - } - }, - "is-core-module": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.2.0.tgz", - "integrity": "sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", - "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-directory": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", - "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", - "dev": true - }, - "is-docker": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.1.1.tgz", - "integrity": "sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw==", - "dev": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", - "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-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", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "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-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", - "dev": true - }, - "is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", - "dev": true - }, - "is-path-in-cwd": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-2.1.0.tgz", - "integrity": "sha512-rNocXHgipO+rvnP6dk3zI20RpOtrAM/kzbB258Uw5BWr3TpXi861yzjo16Dn4hUox07iw5AyeMLHWsujkjzvRQ==", - "dev": true, - "requires": { - "is-path-inside": "^2.1.0" - } - }, - "is-path-inside": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-2.1.0.tgz", - "integrity": "sha512-wiyhTzfDWsvwAW53OBWF5zuvaOGlZ6PwYxAbPVDhpm+gM09xKQGjBq/8uYN12aDvMxnAnq3dxTyoSoRNmg5YFg==", - "dev": true, - "requires": { - "path-is-inside": "^1.0.2" - } - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-regex": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.2.tgz", - "integrity": "sha512-axvdhb5pdhEVThqJzYXwMlVuZwC+FF2DpcOhTS+y/8jVq4trxyPgfcwIxIKiyeuLlSQYKkmUaPQJ8ZE4yNKXDg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "has-symbols": "^1.0.1" - } - }, - "is-resolvable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-resolvable/-/is-resolvable-1.1.0.tgz", - "integrity": "sha512-qgDYXFSR5WvEfuS5dMj6oTMEbrrSaM0CrFk2Yiq/gXnBvD9pMa2jGXxyhGLfvhZpuMZe18CJpFxAt3CRs42NMg==", - "dev": true - }, - "is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", - "dev": true, - "requires": { - "has-tostringtag": "^1.0.0" - } - }, - "is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", - "dev": true, - "requires": { - "has-symbols": "^1.0.2" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "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-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.8.tgz", - "integrity": "sha512-53h6XFniq77YdW+spoRrebh0mnmTxRPTlcuIArO57lmMdq4uBKFKaeTjnb92oYWrSn/LVL+LT+Hap2tFQj8V+w==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.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 - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "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.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine/-/jasmine-2.8.0.tgz", - "integrity": "sha1-awicChFXax8W3xG4AUbZHU6Lij4=", - "dev": true, - "requires": { - "exit": "^0.1.2", - "glob": "^7.0.6", - "jasmine-core": "~2.8.0" - }, - "dependencies": { - "jasmine-core": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-2.8.0.tgz", - "integrity": "sha1-vMl5rh+f0FcB5F5S5l06XWPxok4=", - "dev": true - } - } - }, - "jasmine-core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-3.6.0.tgz", - "integrity": "sha512-8uQYa7zJN8hq9z+g8z1bqCfdC8eoDAeVnM5sfqs7KHv9/ifoJ500m018fpFc7RDaO6SWCLCXwo/wPSNcdYTgcw==", - "dev": true - }, - "jasmine-spec-reporter": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/jasmine-spec-reporter/-/jasmine-spec-reporter-5.0.2.tgz", - "integrity": "sha512-6gP1LbVgJ+d7PKksQBc2H0oDGNRQI3gKUsWlswKaQ2fif9X5gzhQcgM5+kiJGCQVurOG09jqNhk7payggyp5+g==", - "dev": true, - "requires": { - "colors": "1.4.0" - } - }, - "jasminewd2": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/jasminewd2/-/jasminewd2-2.2.0.tgz", - "integrity": "sha1-43zwsX8ZnM4jvqcbIDk5Uka07E4=", - "dev": true - }, - "jest-worker": { - "version": "26.5.0", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.5.0.tgz", - "integrity": "sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", - "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json3": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/json3/-/json3-3.3.3.tgz", - "integrity": "sha512-c7/8mbUsKigAbLkD5B010BK4D9LZm7A1pNItkEwiUZRpIN66exu/e7YQWysGun+TRKaJp8MhemM+VkfWv42aCA==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", - "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", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", - "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", - "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", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "requires": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "karma": { - "version": "6.3.16", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.16.tgz", - "integrity": "sha512-nEU50jLvDe5yvXqkEJRf8IuvddUkOY2x5Xc4WXHz6dxINgGDrgD2uqQWeVrJs4hbfNaotn+HQ1LZJ4yOXrL7xQ==", - "dev": true, - "requires": { - "body-parser": "^1.19.0", - "braces": "^3.0.2", - "chokidar": "^3.5.1", - "colors": "1.4.0", - "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.2.0", - "source-map": "^0.6.1", - "tmp": "^0.2.1", - "ua-parser-js": "^0.7.30", - "yargs": "^16.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" - } - }, - "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" - } - }, - "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 - }, - "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "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" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "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" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.0.tgz", - "integrity": "sha512-3dPs/n7vgz1rxxtynpzZTvb9y/GIaW8xjAwcIGttLbycqoFtI7yo1NGnQi6oFTherRE+GIhCAHZC4vEqWGhNvg==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.0.3.tgz", - "integrity": "sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.1", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.0", - "minimatch": "^3.0.4" - } - }, - "karma-jasmine": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-4.0.1.tgz", - "integrity": "sha512-h8XDAhTiZjJKzfkoO1laMH+zfNlra+dEQHUAjpn5JV1zCPtOIVWGQjLBrqhnzQa/hrU2XrZwSyBa6XjEBzfXzw==", - "dev": true, - "requires": { - "jasmine-core": "^3.6.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.5.4.tgz", - "integrity": "sha512-PtilRLno5O6wH3lDihRnz0Ba8oSn0YUJqKjjux1peoYGwo0AQqrWRbdWk/RLzcGlb+onTyXAnHl6M+Hu3UxG/Q==", - "dev": true - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "killable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/killable/-/killable-1.0.1.tgz", - "integrity": "sha512-LzqtLKlUwirEUyl/nicirVmNiPvYs7l5n8wOPP7fyJVpUPkvCnW/vuiXGpylGUlnPDnB7311rARzAt3Mhswpjg==", - "dev": true - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.4.tgz", - "integrity": "sha512-ZRbnvdg/NxqzC7L9Uyqzf4psi1OM4Cuc+sJAkQPjO6XkQIJTNbfK2Rsmbw8fx1p2mkZdp2FZYo2+LwXYY/uwIA==", - "dev": true - }, - "less": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/less/-/less-3.12.2.tgz", - "integrity": "sha512-+1V2PCMFkL+OIj2/HrtrvZw0BC0sYLMICJfbQjuj/K8CEnlrFX6R5cKKgzzttsZDHyxQNL1jqMREjKN3ja/E3Q==", - "dev": true, - "requires": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "native-request": "^1.0.5", - "source-map": "~0.6.0", - "tslib": "^1.10.0" - }, - "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, - "optional": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "less-loader": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-7.0.2.tgz", - "integrity": "sha512-7MKlgjnkCf63E3Lv6w2FvAEgLMx3d/tNBExITcanAq7ys5U8VPWT3F6xcRjYmdNfkoQ9udoVFb1r2azSiTnD6w==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "license-webpack-plugin": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-2.3.1.tgz", - "integrity": "sha512-yhqTmlYIEpZWA122lf6E0G8+rkn0AzoQ1OpzUKKs/lXUqG1plmGnwmkuuPlfggzJR5y6DLOdot/Tv00CC51CeQ==", - "dev": true, - "requires": { - "@types/webpack-sources": "^0.1.5", - "webpack-sources": "^1.2.0" - }, - "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 - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "requires": { - "immediate": "~3.0.5" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "loader-runner": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-2.4.0.tgz", - "integrity": "sha512-Jsmr89RcXGIwivFY21FcRrisYZfvLMTWx5kOLc+JTxtpBOG6xML0vzbc6SEQG2FO9/4Fc3wW4LVcB5DmGflaRw==", - "dev": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "dev": true, - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha1-vMbEmkKihA7Zl/Mj6tpezRguC/4=", - "dev": true - }, - "lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", - "dev": true - }, - "log-symbols": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", - "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", - "dev": true, - "requires": { - "chalk": "^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.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "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" - } - } - } - }, - "log4js": { - "version": "6.4.2", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.4.2.tgz", - "integrity": "sha512-k80cggS2sZQLBwllpT1p06GtfvzMmSdUCkW96f0Hj83rKGJDAu2vZjt9B9ag2vx8Zz1IXzxoLgqvRJCdMKybGg==", - "dev": true, - "requires": { - "date-format": "^4.0.4", - "debug": "^4.3.3", - "flatted": "^3.2.5", - "rfdc": "^1.3.0", - "streamroller": "^3.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "loglevel": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/loglevel/-/loglevel-1.7.1.tgz", - "integrity": "sha512-Hesni4s5UkWkwCGJMQGAh71PaLUmKFM60dHvq0zi/vDhhrzuk+4GgNbTXJ12YYQJn6ZKBDNIjYcuQGKudvqrIw==", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "magic-string": { - "version": "0.25.7", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.7.tgz", - "integrity": "sha512-4CrMT5DOHTDk4HYDlzmwu4FVCcIYI8gauveasrdCu2IKIFOJ3f0v/8MDGJCDL9oD2ppz/Av1b0Nj345H9M+XIA==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.4" - } - }, - "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, - "requires": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "make-fetch-happen": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-8.0.14.tgz", - "integrity": "sha512-EsS89h6l4vbfJEtBZnENTOFk8mCRpY5ru36Xe5bcX1KYIli2mkSHqoFsp5O1wMDvTJJzxe/4THpCTtygjeeGWQ==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.0.5", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^5.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "mdn-data": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.4.tgz", - "integrity": "sha512-iV3XNKw06j5Q7mi6h+9vbx23Tv7JkjEVgKHW4pimwyDGWm0OIQntJJ+u1C6mg6mK1EaTv42XQ7w76yuzH7M2cA==", - "dev": true - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha1-hxDXrwqmJvj/+hzgAWhUUmMlV0g=", - "dev": true - }, - "memory-fs": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.4.1.tgz", - "integrity": "sha1-OpoguEYlI+RHz7x+i7gO1me/xVI=", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - }, - "merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha1-sAqqVW3YtEVoFQ7J0blT8/kMu2E=", - "dev": true - }, - "merge-source-map": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/merge-source-map/-/merge-source-map-1.1.0.tgz", - "integrity": "sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==", - "dev": true, - "requires": { - "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 - } - } - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true - }, - "methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha1-VSmk1nZUE07cxSZmVoNbD4Ua/O4=", - "dev": true - }, - "micromatch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", - "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.0.5" - } - }, - "miller-rabin": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", - "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", - "dev": true, - "requires": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.46.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.46.0.tgz", - "integrity": "sha512-svXaP8UQRZ5K7or+ZmfNhg2xX3yKDMUzqadsSqi4NCH/KomcH75MAMYAGVlvXn4+b/xOPhS3I2uHKRUzvjY7BQ==", - "dev": true - }, - "mime-types": { - "version": "2.1.29", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.29.tgz", - "integrity": "sha512-Y/jMt/S5sR9OaqteJtslsFZKWOIIqMACsJSiHghlCAyhf7jfVYjKBmLiX8OgpWeW+fjJ2b+Az69aPFPkUOY6xQ==", - "dev": true, - "requires": { - "mime-db": "1.46.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-1.2.1.tgz", - "integrity": "sha512-G3yw7/TQaPfkuiR73MDcyiqhyP8SnbmLhUbpC76H+wtQxA6wfKhMCQOCb6wnPK0dQbjORAeOILQqEesg4/wF7A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "webpack-sources": "^1.1.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "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 - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "dev": true - }, - "minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha1-9sAMHAsIIkblxNmd+4x8CDsrWCo=", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minipass": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.1.3.tgz", - "integrity": "sha512-Mgd2GdMVzY+x3IJ+oHnVM+KG3lA5c8tnabyJKmHSaG2kAGpudxuOf8ToDkhumF7UzME7DecbQE9uOZhNm7PuJg==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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" - } - }, - "mississippi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", - "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", - "dev": true, - "requires": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - } - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", - "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "move-concurrently": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", - "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", - "dev": true, - "requires": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - }, - "dependencies": { - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - } - } - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "multicast-dns": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-6.2.3.tgz", - "integrity": "sha512-ji6J5enbMyGRHIAkAOu3WdV8nggqviKCEKtXcOqfphZZtQrmHKycfynJ2V7eVPUA4NhJ6V7Wf4TmGbTwKE9B6g==", - "dev": true, - "requires": { - "dns-packet": "^1.3.1", - "thunky": "^1.0.2" - } - }, - "multicast-dns-service-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/multicast-dns-service-types/-/multicast-dns-service-types-1.1.0.tgz", - "integrity": "sha1-iZ8R2WhuXgXLkbNdXw5jt3PPyQE=", - "dev": true - }, - "mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "native-request": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/native-request/-/native-request-1.0.8.tgz", - "integrity": "sha512-vU2JojJVelUGp6jRcLwToPoWGxSx23z/0iX+I77J3Ht17rf2INGjrhOoQnjVo60nQd8wVsgzKkPfRXBiVdD2ag==", - "dev": true, - "optional": true - }, - "negotiator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", - "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "next-tick": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.0.0.tgz", - "integrity": "sha1-yobR/ogoFpsBICCOPchCS524NCw=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node-forge": { - "version": "0.10.0", - "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.10.0.tgz", - "integrity": "sha512-PPmu8eEeG9saEUvI97fm4OYxXVB6bFvyNTyiUOBichBpFG8A1Ljw3bY62+5oOjDEMHRnd0Y7HQ+x7uzxOzC6JA==", - "dev": true - }, - "node-gyp": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-7.1.2.tgz", - "integrity": "sha512-CbpcIo7C3eMu3dL1c3d0xw449fHIGALIJsRP4DDPHpyiW8vcriNY7ubh9TE4zEKfSxscY7PjeFnshE7h75ynjQ==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.3", - "nopt": "^5.0.0", - "npmlog": "^4.1.2", - "request": "^2.88.2", - "rimraf": "^3.0.2", - "semver": "^7.3.2", - "tar": "^6.0.2", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-libs-browser": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/node-libs-browser/-/node-libs-browser-2.2.1.tgz", - "integrity": "sha512-h/zcD8H9kaDZ9ALUWwlBUDo6TKF8a7qBSCSEGfjTVIYeqsioSKaAX+BN7NgiMGp6iSIXZ3PxgCu8KS3b71YK5Q==", - "dev": true, - "requires": { - "assert": "^1.1.1", - "browserify-zlib": "^0.2.0", - "buffer": "^4.3.0", - "console-browserify": "^1.1.0", - "constants-browserify": "^1.0.0", - "crypto-browserify": "^3.11.0", - "domain-browser": "^1.1.1", - "events": "^3.0.0", - "https-browserify": "^1.0.0", - "os-browserify": "^0.3.0", - "path-browserify": "0.0.1", - "process": "^0.11.10", - "punycode": "^1.2.4", - "querystring-es3": "^0.2.0", - "readable-stream": "^2.3.3", - "stream-browserify": "^2.0.1", - "stream-http": "^2.7.2", - "string_decoder": "^1.0.0", - "timers-browserify": "^2.0.4", - "tty-browserify": "0.0.0", - "url": "^0.11.0", - "util": "^0.11.0", - "vm-browserify": "^1.0.1" - }, - "dependencies": { - "punycode": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.4.1.tgz", - "integrity": "sha1-wNWmOycYgArY4esPpSachN1BhF4=", - "dev": true - } - } - }, - "node-releases": { - "version": "1.1.73", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.73.tgz", - "integrity": "sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", - "dev": true - }, - "normalize-url": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", - "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", - "dev": true - }, - "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": "4.0.0", - "resolved": "https://registry.npmjs.org/npm-install-checks/-/npm-install-checks-4.0.0.tgz", - "integrity": "sha512-09OmyDkNLYwqKPOnbI8exiOZU2GVVmQp7tgez2BPi5OZC8M82elDAps7sxC4l//uSUtotWqoEIDwjRvWH4qz8w==", - "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": "8.1.0", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-8.1.0.tgz", - "integrity": "sha512-/ep6QDxBkm9HvOhOg0heitSd7JHA1U7y1qhhlRlteYYAi9Pdb/ZV7FW5aHpkrpM8+P+4p/jjR8zCyKPBMBjSig==", - "dev": true, - "requires": { - "hosted-git-info": "^3.0.6", - "semver": "^7.0.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "npm-packlist": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-2.2.2.tgz", - "integrity": "sha512-Jt01acDvJRhJGthnUJVF/w6gumWOZxO7IkpY/lsX9//zqQgnF7OJaxgQXcerd4uQOLu7W5bkb4mChL9mdfm+Zg==", - "dev": true, - "requires": { - "glob": "^7.1.6", - "ignore-walk": "^3.0.3", - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "npm-pick-manifest": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-6.1.0.tgz", - "integrity": "sha512-ygs4k6f54ZxJXrzT0x34NybRlLeZ4+6nECAIbr2i0foTnijtS1TJiyzpqtuUAJOps/hO0tNDr8fRV5g+BtRlTw==", - "dev": true, - "requires": { - "npm-install-checks": "^4.0.0", - "npm-package-arg": "^8.0.0", - "semver": "^7.0.0" - } - }, - "npm-registry-fetch": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-9.0.0.tgz", - "integrity": "sha512-PuFYYtnQ8IyVl6ib9d3PepeehcUeHN9IO5N/iCRhyg9tStQcqGQBRVHmfmMWPDERU3KwZoHFvbJ4FPXPspvzbA==", - "dev": true, - "requires": { - "@npmcli/ci-detect": "^1.0.0", - "lru-cache": "^6.0.0", - "make-fetch-happen": "^8.0.9", - "minipass": "^3.1.3", - "minipass-fetch": "^1.3.0", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.0.0", - "npm-package-arg": "^8.0.0" - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "npmlog": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", - "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", - "dev": true, - "requires": { - "are-we-there-yet": "~1.1.2", - "console-control-strings": "~1.1.0", - "gauge": "~2.7.3", - "set-blocking": "~2.0.0" - } - }, - "nth-check": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-1.0.2.tgz", - "integrity": "sha512-WeBOdju8SnzPN5vTUJYxYUxLeXpCaVP5i5e0LF8fg7WORF2Wd7wFX/pk0tYZk7s8T+J7VLy0Da6J1+wCT0AtHg==", - "dev": true, - "requires": { - "boolbase": "~1.0.0" - } - }, - "num2fraction": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", - "integrity": "sha1-b2gragJ6Tp3fpFZM0lidHU5mnt4=", - "dev": true - }, - "number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==", - "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-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "object.getownpropertydescriptors": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.3.tgz", - "integrity": "sha512-VdDoCwvJI4QdC6ndjpqFmoL3/+HxffFBbcJzKi5hwLLqqx3mdbedRpfZDdK0SrOSauj8X4GzBvnDZl4vTN7dOw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "object.values": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz", - "integrity": "sha512-QUZRW0ilQ3PnPpbNtgdNV1PDbEqLIiSFB3l+EnGtBQ/8SUTLj1PZwtQHABZtLgwpJZTSZhuGLOGk57Drx2IvYg==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.1" - } - }, - "obuf": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", - "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/open/-/open-7.3.0.tgz", - "integrity": "sha512-mgLwQIx2F/ye9SmbrUkurZCnkoXyXyu9EbHtJZrICjVAJfyMArdHp3KkixGdZx1ZHFPNIwl0DDM1dFFqXbTLZw==", - "dev": true, - "requires": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - } - }, - "opn": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/opn/-/opn-5.5.0.tgz", - "integrity": "sha512-PqHpggC9bLV0VeWcdKhkpxY+3JTzetLSqTCWL/z/tFIbI6G8JCjondXklT1JinczLz2Xib62sSp0T/gKT4KksA==", - "dev": true, - "requires": { - "is-wsl": "^1.1.0" - }, - "dependencies": { - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - } - } - }, - "ora": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.1.0.tgz", - "integrity": "sha512-9tXIMPvjZ7hPTbk8DFq1f7Kow/HU/pQYB60JbNq+QnGwcyhWVZaQ4hM9zQDEsPxw/muLpgiHSaumUZxCAmod/w==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.4.0", - "is-interactive": "^1.0.0", - "log-symbols": "^4.0.0", - "mute-stream": "0.0.8", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.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.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "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" - } - } - } - }, - "original": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/original/-/original-1.0.2.tgz", - "integrity": "sha512-hyBVl6iqqUOJ8FqRe+l/gS8H+kKYjrEndd5Pm1MfBtsEKA038HkkdbAl/72EAXGyonD/PFsvmVG+EvcIpliMBg==", - "dev": true, - "requires": { - "url-parse": "^1.4.3" - } - }, - "os-browserify": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/os-browserify/-/os-browserify-0.3.0.tgz", - "integrity": "sha1-hUNzx/XCMVkU/Jv8a9gjj92h7Cc=", - "dev": true - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "dev": true, - "requires": { - "p-limit": "^2.0.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": "3.0.1", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-3.0.1.tgz", - "integrity": "sha512-XE6G4+YTTkT2a0UWb2kjZe8xNwf8bIbnqpc/IS/idOBVhyves0mK5OJgeocjx7q5pvX/6m23xuzVPYT1uGM73w==", - "dev": true, - "requires": { - "retry": "^0.12.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "11.2.4", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-11.2.4.tgz", - "integrity": "sha512-GfTeVQGJ6WyBQbQD4t3ocHbyOmTQLmWjkCKSZPmKiGFKYKNUaM5U2gbLzUW8WG1XmS9yQFnsTFA0k3o1+q4klQ==", - "dev": true, - "requires": { - "@npmcli/git": "^2.0.1", - "@npmcli/installed-package-contents": "^1.0.5", - "@npmcli/promise-spawn": "^1.2.0", - "@npmcli/run-script": "^1.3.0", - "cacache": "^15.0.5", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.3", - "mkdirp": "^1.0.3", - "npm-package-arg": "^8.0.1", - "npm-packlist": "^2.1.4", - "npm-pick-manifest": "^6.0.0", - "npm-registry-fetch": "^9.0.0", - "promise-retry": "^1.1.1", - "read-package-json-fast": "^1.1.3", - "rimraf": "^3.0.2", - "ssri": "^8.0.0", - "tar": "^6.1.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "parallel-transform": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", - "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", - "dev": true, - "requires": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "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" - }, - "dependencies": { - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - } - } - }, - "parse-asn1": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", - "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", - "dev": true, - "requires": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-browserify": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-0.0.1.tgz", - "integrity": "sha512-BapA40NHICOS+USX9SN4tyhq+A2RrN/Ws5F0Z5aMHDp98Fl86lX8Oti8B7uN93L4Ifv4fHOEA+pQw87gmMO/lQ==", - "dev": true - }, - "path-dirname": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", - "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", - "dev": true - }, - "path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w=", - "dev": true - }, - "path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true - }, - "pbkdf2": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.1.tgz", - "integrity": "sha512-4Ejy1OPxi9f2tt1rRV7Go7zmfDQ+ZectEQz3VGUQhgq62HtIRPDyG/JtnwIxs6x3uNMwo2V7q1fMvKjb+Tnpqg==", - "dev": true, - "requires": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", - "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", - "dev": true - }, - "pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "dev": true - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", - "dev": true - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", - "dev": true, - "requires": { - "pinkie": "^2.0.0" - } - }, - "pkg-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", - "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", - "dev": true, - "requires": { - "find-up": "^3.0.0" - } - }, - "pnp-webpack-plugin": { - "version": "1.6.4", - "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.6.4.tgz", - "integrity": "sha512-7Wjy+9E3WwLOEL30D+m8TSTF7qJJUJLONBnwQp0518siuMxUQUbgZwssaFX+QKlZkjHZcw/IpZCt/H0srrntSg==", - "dev": true, - "requires": { - "ts-pnp": "^1.1.6" - } - }, - "portfinder": { - "version": "1.0.28", - "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.28.tgz", - "integrity": "sha512-Se+2isanIcEqf2XMHjyUKskczxbPH7dQnlMjXX6+dybayyHvAf/TCgyMRlzf/B6QDhAEFOGes0pzRo3by4AbMA==", - "dev": true, - "requires": { - "async": "^2.6.2", - "debug": "^3.1.1", - "mkdirp": "^0.5.5" - }, - "dependencies": { - "debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "requires": { - "ms": "^2.1.1" - } - } - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "postcss": { - "version": "7.0.36", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.36.tgz", - "integrity": "sha512-BebJSIUMwJHRH0HAQoxN4u1CN86glsrwsW0q7T+/m44eXOUAxSNdHRkNZPYz5vVUbg17hFgOQDE7fZk7li3pZw==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "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 - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "postcss-calc": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-7.0.5.tgz", - "integrity": "sha512-1tKHutbGtLtEZF6PT4JSihCHfIVldU72mZ8SdZHIYriIZ9fh9k9aWSppaT8rHsyI3dX+KSR+W+Ix9BMY3AODrg==", - "dev": true, - "requires": { - "postcss": "^7.0.27", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.0.2" - } - }, - "postcss-colormin": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-4.0.3.tgz", - "integrity": "sha512-WyQFAdDZpExQh32j0U0feWisZ0dmOtPl44qYmJKkq9xFWY3p+4qnRzCHeNrkeRhwPHz9bQ3mo0/yVkaply0MNw==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "color": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-convert-values": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-4.0.1.tgz", - "integrity": "sha512-Kisdo1y77KUC0Jmn0OXU/COOJbzM8cImvw1ZFsBgBgMgb1iL23Zs/LXRe3r+EZqM3vGYKdQ2YJVQ5VkJI+zEJQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-discard-comments": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-4.0.2.tgz", - "integrity": "sha512-RJutN259iuRf3IW7GZyLM5Sw4GLTOH8FmsXBnv8Ab/Tc2k4SR4qbV4DNbyyY4+Sjo362SyDmW2DQ7lBSChrpkg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-duplicates": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-4.0.2.tgz", - "integrity": "sha512-ZNQfR1gPNAiXZhgENFfEglF93pciw0WxMkJeVmw8eF+JZBbMD7jp6C67GqJAXVZP2BWbOztKfbsdmMp/k8c6oQ==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-empty": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-4.0.1.tgz", - "integrity": "sha512-B9miTzbznhDjTfjvipfHoqbWKwd0Mj+/fL5s1QOz06wufguil+Xheo4XpOnc4NqKYBCNqqEzgPv2aPBIJLox0w==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-discard-overridden": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-4.0.1.tgz", - "integrity": "sha512-IYY2bEDD7g1XM1IDEsUT4//iEYCxAmP5oDSFMVU/JVvT7gh+l4fmjciLqGgwjdWpQIdb0Che2VX00QObS5+cTg==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-import": { - "version": "12.0.1", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-12.0.1.tgz", - "integrity": "sha512-3Gti33dmCjyKBgimqGxL3vcV8w9+bsHwO5UrBawp796+jdardbcFl4RP5w/76BwNL7aGzpKstIfF9I+kdE8pTw==", - "dev": true, - "requires": { - "postcss": "^7.0.1", - "postcss-value-parser": "^3.2.3", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-loader": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-4.0.4.tgz", - "integrity": "sha512-pntA9zIR14drQo84yGTjQJg1m7T0DkXR4vXYHBngiRZdJtEeCrojL6lOpqUanMzG375lIJbT4Yug85zC/AJWGw==", - "dev": true, - "requires": { - "cosmiconfig": "^7.0.0", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "dependencies": { - "cosmiconfig": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", - "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", - "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" - } - }, - "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" - } - }, - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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 - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "postcss-merge-longhand": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-4.0.11.tgz", - "integrity": "sha512-alx/zmoeXvJjp7L4mxEMjh8lxVlDFX1gqWHzaaQewwMZiVhLo42TEClKaeHbRf6J7j82ZOdTJ808RtN0ZOZwvw==", - "dev": true, - "requires": { - "css-color-names": "0.0.4", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "stylehacks": "^4.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-merge-rules": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-4.0.3.tgz", - "integrity": "sha512-U7e3r1SbvYzO0Jr3UT/zKBVgYYyhAz0aitvGIYOYK5CPmkNih+WDSsS5tvPrJ8YMQYlEMvsZIiqmn7HdFUaeEQ==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "cssnano-util-same-parent": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0", - "vendors": "^1.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-minify-font-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-4.0.2.tgz", - "integrity": "sha512-j85oO6OnRU9zPf04+PZv1LYIYOprWm6IA6zkXkrJXyRveDEuQggG6tvoy8ir8ZwjLxLuGfNkCZEQG7zan+Hbtg==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-gradients": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-4.0.2.tgz", - "integrity": "sha512-qKPfwlONdcf/AndP1U8SJ/uzIJtowHlMaSioKzebAXSG4iJthlWC9iSWznQcX4f66gIWX44RSA841HTHj3wK+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "is-color-stop": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-params": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-4.0.2.tgz", - "integrity": "sha512-G7eWyzEx0xL4/wiBBJxJOz48zAKV2WG3iZOqVhPet/9geefm/Px5uo1fzlHu+DOjT+m0Mmiz3jkQzVHe6wxAWg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "browserslist": "^4.0.0", - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "uniqs": "^2.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-minify-selectors": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-4.0.2.tgz", - "integrity": "sha512-D5S1iViljXBj9kflQo4YutWnJmwm8VvIsU1GeXJGiG9j8CIg9zs4voPMdQDUmIxetUOh60VilsNzCiAFTOqu3g==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "postcss-modules-extract-imports": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-2.0.0.tgz", - "integrity": "sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==", - "dev": true, - "requires": { - "postcss": "^7.0.5" - } - }, - "postcss-modules-local-by-default": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-3.0.3.tgz", - "integrity": "sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==", - "dev": true, - "requires": { - "icss-utils": "^4.1.1", - "postcss": "^7.0.32", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - } - }, - "postcss-modules-scope": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-2.2.0.tgz", - "integrity": "sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==", - "dev": true, - "requires": { - "postcss": "^7.0.6", - "postcss-selector-parser": "^6.0.0" - } - }, - "postcss-modules-values": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-3.0.0.tgz", - "integrity": "sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==", - "dev": true, - "requires": { - "icss-utils": "^4.0.0", - "postcss": "^7.0.6" - } - }, - "postcss-normalize-charset": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-4.0.1.tgz", - "integrity": "sha512-gMXCrrlWh6G27U0hF3vNvR3w8I1s2wOBILvA87iNXaPvSNo5uZAMYsZG7XjCUf1eVxuPfyL4TJ7++SGZLc9A3g==", - "dev": true, - "requires": { - "postcss": "^7.0.0" - } - }, - "postcss-normalize-display-values": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-4.0.2.tgz", - "integrity": "sha512-3F2jcsaMW7+VtRMAqf/3m4cPFhPD3EFRgNs18u+k3lTJJlVe7d0YPO+bnwqo2xg8YiRpDXJI2u8A0wqJxMsQuQ==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-positions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-4.0.2.tgz", - "integrity": "sha512-Dlf3/9AxpxE+NF1fJxYDeggi5WwV35MXGFnnoccP/9qDtFrTArZ0D0R+iKcg5WsUd8nUYMIl8yXDCtcrT8JrdA==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-repeat-style": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-4.0.2.tgz", - "integrity": "sha512-qvigdYYMpSuoFs3Is/f5nHdRLJN/ITA7huIoCyqqENJe9PvPmLhNLMu7QTjPdtnVf6OcYYO5SHonx4+fbJE1+Q==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-string": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-4.0.2.tgz", - "integrity": "sha512-RrERod97Dnwqq49WNz8qo66ps0swYZDSb6rM57kN2J+aoyEAJfZ6bMx0sx/F9TIEX0xthPGCmeyiam/jXif0eA==", - "dev": true, - "requires": { - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-timing-functions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-4.0.2.tgz", - "integrity": "sha512-acwJY95edP762e++00Ehq9L4sZCEcOPyaHwoaFOhIwWCDfik6YvqsYNxckee65JHLKzuNSSmAdxwD2Cud1Z54A==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-unicode": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-4.0.1.tgz", - "integrity": "sha512-od18Uq2wCYn+vZ/qCOeutvHjB5jm57ToxRaMeNuf0nWVHaP9Hua56QyMF6fs/4FSUnVIw0CBPsU0K4LnBPwYwg==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-url": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-4.0.1.tgz", - "integrity": "sha512-p5oVaF4+IHwu7VpMan/SSpmpYxcJMtkGppYf0VbdH5B6hN8YNmVyJLuY9FmLQTzY3fag5ESUUHDqM+heid0UVA==", - "dev": true, - "requires": { - "is-absolute-url": "^2.0.0", - "normalize-url": "^3.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-normalize-whitespace": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-4.0.2.tgz", - "integrity": "sha512-tO8QIgrsI3p95r8fyqKV+ufKlSHh9hMJqACqbv2XknufqEDhDvbguXGBBqxw9nsQoXWf0qOqppziKJKHMD4GtA==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-ordered-values": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-4.1.2.tgz", - "integrity": "sha512-2fCObh5UanxvSxeXrtLtlwVThBvHn6MQcu4ksNT2tsaV2Fg76R2CV98W7wNSlX+5/pFwEyaDwKLLoEV7uRybAw==", - "dev": true, - "requires": { - "cssnano-util-get-arguments": "^4.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-reduce-initial": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-4.0.3.tgz", - "integrity": "sha512-gKWmR5aUulSjbzOfD9AlJiHCGH6AEVLaM0AV+aSioxUDd16qXP1PCh8d1/BGVvpdWn8k/HiK7n6TjeoXN1F7DA==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "caniuse-api": "^3.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0" - } - }, - "postcss-reduce-transforms": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-4.0.2.tgz", - "integrity": "sha512-EEVig1Q2QJ4ELpJXMZR8Vt5DQx8/mo+dGWSR7vWXqcob2gQLyQGsionYcGKATXvQzMPn6DSN1vTN7yFximdIAg==", - "dev": true, - "requires": { - "cssnano-util-get-match": "^4.0.0", - "has": "^1.0.0", - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-selector-parser": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.4.tgz", - "integrity": "sha512-gjMeXBempyInaBqpp8gODmwZ52WaYsVOsfr4L4lDQ7n3ncD6mEyySiDtgzCT+NYC0mmeOLvtsF8iaEf0YT6dBw==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1", - "util-deprecate": "^1.0.2" - } - }, - "postcss-svgo": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-4.0.3.tgz", - "integrity": "sha512-NoRbrcMWTtUghzuKSoIm6XV+sJdvZ7GZSc3wdBN0W19FTtp2ko8NqLsgoh/m9CzNhU3KLPvQmjIwtaNFkaFTvw==", - "dev": true, - "requires": { - "postcss": "^7.0.0", - "postcss-value-parser": "^3.0.0", - "svgo": "^1.0.0" - }, - "dependencies": { - "postcss-value-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", - "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", - "dev": true - } - } - }, - "postcss-unique-selectors": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-4.0.1.tgz", - "integrity": "sha512-+JanVaryLo9QwZjKrmJgkI4Fn8SBgRO6WXQBJi7KiAVPlmxikB5Jzc4EvXMT2H0/m0RjrVVm9rGNhZddm/8Spg==", - "dev": true, - "requires": { - "alphanum-sort": "^1.0.0", - "postcss": "^7.0.0", - "uniqs": "^2.0.0" - } - }, - "postcss-value-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.1.0.tgz", - "integrity": "sha512-97DXOFbQJhk71ne5/Mt6cOu6yxsSfM0QGQyl0L25Gca4yGWEGJaig7l7gbCX623VqTBNGLRLaVUCnNkcedlRSQ==", - "dev": true - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha1-czIwDoQBYb2j5podHZGn1LwW8YI=", - "dev": true - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", - "dev": true - }, - "promise-retry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", - "integrity": "sha512-StEy2osPr28o17bIW776GtwO6+Q+M9zPiZkYfosciUUMYqjhU/ffwRAH0zN2+uvGyUsn8/YICIHRzLbPacpZGw==", - "dev": true, - "requires": { - "err-code": "^1.0.0", - "retry": "^0.10.0" - }, - "dependencies": { - "err-code": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", - "integrity": "sha512-CJAN+O0/yA1CKfRn9SXOGctSpEM7DCon/r/5r2eXFMY2zCCJBasFhcM5I+1kh3Ap11FsQCX+vGHceNPvpWKhoA==", - "dev": true - }, - "retry": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", - "integrity": "sha512-ZXUSQYTHdl3uS7IuCehYfMzKyIDBNoAuUblvy5oGO5UJSUTmStUUVPXbA9Qxd173Bgre53yCQczQuHgRWAdvJQ==", - "dev": true - } - } - }, - "protractor": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/protractor/-/protractor-7.0.0.tgz", - "integrity": "sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==", - "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": { - "@types/q": { - "version": "0.0.32", - "resolved": "https://registry.npmjs.org/@types/q/-/q-0.0.32.tgz", - "integrity": "sha1-vShOV8hPEyXacCur/IKlMoGQwMU=", - "dev": true - }, - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", - "dev": true, - "requires": { - "array-uniq": "^1.0.1" - } - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", - "dev": true, - "requires": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.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 - }, - "del": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.2.tgz", - "integrity": "sha1-wSyYHQZ4RshLyvhiz/kw2Qf/0ag=", - "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" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "globby": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-5.0.0.tgz", - "integrity": "sha1-69hGZ8oNuzMLmbz8aOrCvFQ3Dg0=", - "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" - } - }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha1-0iXsIxMuie3Tj9p2dHLmLmXxEG0=", - "dev": true - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "dev": true, - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha1-jvW33lBDej/cprToZe96pVy0gDY=", - "dev": true, - "requires": { - "path-is-inside": "^1.0.1" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", - "dev": true - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - }, - "source-map-support": { - "version": "0.4.18", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", - "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", - "dev": true, - "requires": { - "source-map": "^0.5.6" - } - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true - }, - "webdriver-manager": { - "version": "12.1.8", - "resolved": "https://registry.npmjs.org/webdriver-manager/-/webdriver-manager-12.1.8.tgz", - "integrity": "sha512-qJR36SXG2VwKugPcdwhaqcLQOD7r8P2Xiv9sfNbfZrKBnX243iAkOueX1yAmeNgIKhJ3YAT/F2gq6IiEZzahsg==", - "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" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", - "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", - "dev": true - }, - "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" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - } - } - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "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", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } - }, - "prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha1-0/wRS6BplaRexok/SEzrHXj19HY=", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "public-encrypt": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", - "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", - "dev": true, - "requires": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - }, - "dependencies": { - "bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "dev": true - } - } - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "requires": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - }, - "dependencies": { - "pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - } - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.7.0.tgz", - "integrity": "sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ==", - "dev": true - }, - "querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha1-sgmEkgO7Jd+CDadW50cAWHhSFiA=", - "dev": true - }, - "querystring-es3": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/querystring-es3/-/querystring-es3-0.2.1.tgz", - "integrity": "sha1-nsYfeQSYdXB9aUFFlv2Qek1xHnM=", - "dev": true - }, - "querystringify": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", - "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==", - "dev": true - }, - "queue-microtask": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.2.tgz", - "integrity": "sha512-dB15eXv3p2jDlbOiNLyMabYg1/sXvppd8DP2J3EOCQ0AkuSXCW2tP7mnVouVLJKgUMY6yP0kcQDVpLCN13h4Xg==", - "dev": true - }, - "randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "randomfill": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", - "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", - "dev": true, - "requires": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.4.0.tgz", - "integrity": "sha512-4Oz8DUIwdvoa5qMJelxipzi/iJIi40O5cGV1wNYp5hvZP8ZN0T+jiNkL0QepXs+EsQ9XJ8ipEDoiH70ySUJP3Q==", - "dev": true, - "requires": { - "bytes": "3.1.0", - "http-errors": "1.7.2", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.0.tgz", - "integrity": "sha512-zauLjrfCG+xvoyaqLoV8bLVXXNGC4JqlxFCutSDWA6fJrTo2ZuvLYTqZ7aHBLZSMOopbzwv8f+wZcVzfVTI2Dg==", - "dev": true - } - } - }, - "raw-loader": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/raw-loader/-/raw-loader-4.0.2.tgz", - "integrity": "sha512-ZnScIV3ag9A4wPX/ZayxL/jZH+euYb6FcUinPcgiQW0+UBtEv0O6Q3lGd3cqJ+GHH+rksEv3Pj99oxJ3u3VIKA==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "read-cache": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", - "integrity": "sha1-5mTvMRYRZsl1HNvo28+GtftY93Q=", - "dev": true, - "requires": { - "pify": "^2.3.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", - "dev": true - } - } - }, - "read-package-json-fast": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/read-package-json-fast/-/read-package-json-fast-1.2.2.tgz", - "integrity": "sha512-39DbPJjkltEzfXJXB6D8/Ir3GFOU2YbSKa2HaB/Y3nKrc/zY+0XrALpID6/13ezWyzqvOHrBbR4t4cjQuTdBVQ==", - "dev": true, - "requires": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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" - } - }, - "readdirp": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.5.0.tgz", - "integrity": "sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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": "8.2.0", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-8.2.0.tgz", - "integrity": "sha512-F9DjY1vKLo/tPePDycuH3dn9H1OTPIkVD9Kz4LODu+F2C75mgjAJ7x/gwy6ZcSNRAAkhNlJSOHRe8k3p+K9WhA==", - "dev": true, - "requires": { - "regenerate": "^1.4.0" - } - }, - "regenerator-runtime": { - "version": "0.13.7", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.7.tgz", - "integrity": "sha512-a54FxoJDIr27pgf7IgeQGxmqUNYrcV338lf/6gH456HZ/PhX+5BcwHXG9ajESmwe6WRO0tAzRUrRmNONWgkrew==", - "dev": true - }, - "regenerator-transform": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.14.5.tgz", - "integrity": "sha512-eOf6vka5IO151Jfsw2NO9WpGX58W6wWmefK3I1zEGr0lOD0u8rwPaNqQL1aRxUaxLeKO3ArNh3VYg1KbaD+FFw==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexp.prototype.flags": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz", - "integrity": "sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "regexpu-core": { - "version": "4.7.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-4.7.1.tgz", - "integrity": "sha512-ywH2VUraA44DZQuRKzARmw6S66mr48pQVva4LBeRhcOltJ6hExvWly5ZjFLYo67xbIxb6W1q4bAGtgfEl20zfQ==", - "dev": true, - "requires": { - "regenerate": "^1.4.0", - "regenerate-unicode-properties": "^8.2.0", - "regjsgen": "^0.5.1", - "regjsparser": "^0.6.4", - "unicode-match-property-ecmascript": "^1.0.4", - "unicode-match-property-value-ecmascript": "^1.2.0" - } - }, - "regjsgen": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.5.2.tgz", - "integrity": "sha512-OFFT3MfrH90xIW8OOSyUrk6QHD5E9JOTeGodiJeBS3J6IwlgzJMNE/1bZklWz5oTg+9dCMyEetclvCVXOPoN3A==", - "dev": true - }, - "regjsparser": { - "version": "0.6.7", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.6.7.tgz", - "integrity": "sha512-ib77G0uxsA2ovgiYbCVGx4Pv3PSttAx2vIwidqQzbL2U5S4Q+j00HdSAneSBuyVcMvEnTXMjiGgB+DlXozVhpQ==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha1-597mbjXW/Bb3EP6R1c9p9w8IkR0=", - "dev": true - } - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", - "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "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": { - "qs": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", - "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha1-kl0mAdOaxIXgkc8NpcbmlNw9yv8=", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", - "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", - "dev": true, - "requires": { - "resolve-from": "^3.0.0" - } - }, - "resolve-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", - "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "resolve-url-loader": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-3.1.2.tgz", - "integrity": "sha512-QEb4A76c8Mi7I3xNKXlRKQSlLBwjUV/ULFMP+G7n3/7tJZ8MG5wsZ3ucxP1Jz8Vevn6fnJsxDx9cIls+utGzPQ==", - "dev": true, - "requires": { - "adjust-sourcemap-loader": "3.0.0", - "camelcase": "5.3.1", - "compose-function": "3.0.3", - "convert-source-map": "1.7.0", - "es6-iterator": "2.0.3", - "loader-utils": "1.2.3", - "postcss": "7.0.21", - "rework": "1.0.1", - "rework-visit": "1.0.0", - "source-map": "0.6.1" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "emojis-list": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-2.1.0.tgz", - "integrity": "sha1-TapNnbAPmBmIDHn6RXrlsJof04k=", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.2.3.tgz", - "integrity": "sha512-fkpz8ejdnEMG3s37wGL07iSBDg99O9D5yflE9RGNH3hRdx9SOwYfnGYdZOUIZitN8E+E2vkq3MUMYMvPYl5ZZA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^2.0.0", - "json5": "^1.0.1" - } - }, - "postcss": { - "version": "7.0.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.21.tgz", - "integrity": "sha512-uIFtJElxJo29QC753JzhidoAhvp/e/Exezkdhfmt8AymWT6/5B7W1WmponYWkHk2eg6sONyTch0A3nkMPun3SQ==", - "dev": true, - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.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 - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha1-G0KmJmoh8HQh0bC1S33BZ7AcATs=", - "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 - }, - "rework": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rework/-/rework-1.0.1.tgz", - "integrity": "sha1-MIBqhBNCtUUQqkEQhQzUhTQUSqc=", - "dev": true, - "requires": { - "convert-source-map": "^0.3.3", - "css": "^2.0.0" - }, - "dependencies": { - "convert-source-map": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-0.3.5.tgz", - "integrity": "sha1-8dgClQr33SYxof6+BZZVDIarMZA=", - "dev": true - } - } - }, - "rework-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rework-visit/-/rework-visit-1.0.0.tgz", - "integrity": "sha1-mUWygD8hni96ygCtuLyfZA+ELJo=", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rgb-regex": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/rgb-regex/-/rgb-regex-1.0.1.tgz", - "integrity": "sha1-wODWiC3w4jviVKR16O3UGRX+rrE=", - "dev": true - }, - "rgba-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/rgba-regex/-/rgba-regex-1.0.0.tgz", - "integrity": "sha1-QzdOLiyglosO8VI0YLfXMP8i7rM=", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", - "dev": true, - "requires": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "rollup": { - "version": "2.32.1", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.32.1.tgz", - "integrity": "sha512-Op2vWTpvK7t6/Qnm1TTh7VjEZZkN8RWgf0DHbkKzQBwNf748YhXbozHVefqpPp/Fuyk/PQPAnYsBxAEtlMvpUw==", - "dev": true, - "requires": { - "fsevents": "~2.1.2" - } - }, - "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" - } - }, - "run-queue": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", - "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", - "dev": true, - "requires": { - "aproba": "^1.1.1" - } - }, - "rxjs": { - "version": "6.6.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.6.tgz", - "integrity": "sha512-/oTwee4N4iWzAMAL9xdGKjkEHmIwupR3oXbQjCKywF1BeFohswF3vZdogbmEF6pZkOsXTzWkrZszrWpQTByYVg==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "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 - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.27.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.27.0.tgz", - "integrity": "sha512-0gcrER56OkzotK/GGwgg4fPrKuiFlPNitO7eUJ18Bs+/NBlofJfMxmxqpqJxjae9vu0Wq8TZzrSyxZal00WDig==", - "dev": true, - "requires": { - "chokidar": ">=2.0.0 <4.0.0" - } - }, - "sass-loader": { - "version": "10.0.5", - "resolved": "https://registry.npmjs.org/sass-loader/-/sass-loader-10.0.5.tgz", - "integrity": "sha512-2LqoNPtKkZq/XbXNQ4C64GFEleSEHKv6NPSI+bMC/l+jpEXGJhiRYkAQToO24MR7NU4JRY2RpLpJ/gjo2Uf13w==", - "dev": true, - "requires": { - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "neo-async": "^2.6.2", - "schema-utils": "^3.0.0", - "semver": "^7.3.2" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "saucelabs": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/saucelabs/-/saucelabs-1.5.0.tgz", - "integrity": "sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==", - "dev": true, - "requires": { - "https-proxy-agent": "^2.2.1" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - } - }, - "select-hose": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", - "integrity": "sha1-Yl2GWPhlr0Psliv8N2o3NZpJlMo=", - "dev": true - }, - "selenium-webdriver": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/selenium-webdriver/-/selenium-webdriver-3.6.0.tgz", - "integrity": "sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==", - "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", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "tmp": { - "version": "0.0.30", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.30.tgz", - "integrity": "sha1-ckGdSovn1s51FI/YsyTlk6cRwu0=", - "dev": true, - "requires": { - "os-tmpdir": "~1.0.1" - } - } - } - }, - "selfsigned": { - "version": "1.10.8", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-1.10.8.tgz", - "integrity": "sha512-2P4PtieJeEwVgTU9QEcwIRDQ/mXJLX8/+I3ur+Pg16nS8oNbrGxEso9NyYWy8NAmXiNl4dlAp5MwoNeCWzON4w==", - "dev": true, - "requires": { - "node-forge": "^0.10.0" - } - }, - "semver": { - "version": "7.3.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", - "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", - "dev": true - }, - "semver-dsl": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/semver-dsl/-/semver-dsl-1.0.1.tgz", - "integrity": "sha1-02eN5VVeimH2Ke7QJTZq5fJzQKA=", - "dev": true, - "requires": { - "semver": "^5.3.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "semver-intersect": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/semver-intersect/-/semver-intersect-1.4.0.tgz", - "integrity": "sha512-d8fvGg5ycKAq0+I6nfWeCx6ffaWJCsBYU0H2Rq56+/zFePYfT8mXkB3tWBSjR5BerkHNZ5eTPIk1/LBYas35xQ==", - "dev": true, - "requires": { - "semver": "^5.0.0" - }, - "dependencies": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-5.0.1.tgz", - "integrity": "sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha1-03aNabHn2C5c4FD/9bRTvqEqkjk=", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "batch": "0.6.1", - "debug": "2.6.9", - "escape-html": "~1.0.3", - "http-errors": "~1.6.2", - "mime-types": "~2.1.17", - "parseurl": "~1.3.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0=", - "dev": true, - "requires": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - } - }, - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true - } - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU=", - "dev": true - }, - "setprototypeof": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.1.tgz", - "integrity": "sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw==", - "dev": true - }, - "sha.js": { - "version": "2.4.11", - "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", - "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", - "dev": true, - "requires": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", - "dev": true, - "requires": { - "is-arrayish": "^0.3.1" - }, - "dependencies": { - "is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true - } - } - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "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 - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "socket.io": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", - "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.1.0", - "socket.io-adapter": "~2.3.3", - "socket.io-parser": "~4.0.4" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - } - } - }, - "socket.io-adapter": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", - "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.0", - "debug": "~4.3.1" - } - }, - "sockjs": { - "version": "0.3.20", - "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.20.tgz", - "integrity": "sha512-SpmVOVpdq0DJc0qArhF3E5xsxvaiqGNb73XfgBpK1y3UD5gs8DSo8aCTsuT5pX8rssdc2NDIzANwP9eCAiSdTA==", - "dev": true, - "requires": { - "faye-websocket": "^0.10.0", - "uuid": "^3.4.0", - "websocket-driver": "0.6.5" - } - }, - "sockjs-client": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/sockjs-client/-/sockjs-client-1.4.0.tgz", - "integrity": "sha512-5zaLyO8/nri5cua0VtOrFXBPK1jbL4+1cebT/mmKA1E1ZXOvJrII75bPu0l0k843G/+iAbhEqzyKr0w/eCCj7g==", - "dev": true, - "requires": { - "debug": "^3.2.5", - "eventsource": "^1.0.7", - "faye-websocket": "~0.11.1", - "inherits": "^2.0.3", - "json3": "^3.3.2", - "url-parse": "^1.4.3" - }, - "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" - } - }, - "faye-websocket": { - "version": "0.11.3", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.3.tgz", - "integrity": "sha512-D2y4bovYpzziGgbHYtGCMjlJM36vAl/y+xUyn1C+FVx8szd1E+86KwVw6XvYSzOP8iMpm1X0I4xJD+QtUb36OA==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.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" - }, - "dependencies": { - "ip": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", - "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", - "dev": true - } - } - }, - "socks-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-5.0.1.tgz", - "integrity": "sha512-vZdmnjb9a2Tz6WEQVIurybSwElwPxMZaIc7PzqbJTrezcKNznv6giT7J7tZDZ1BojVaa1jvO/UiUdhDVB0ACoQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "4", - "socks": "^2.3.3" - }, - "dependencies": { - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "requires": { - "debug": "4" - } - } - } - }, - "source-list-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/source-list-map/-/source-list-map-2.0.1.tgz", - "integrity": "sha512-qnQ7gVMxGNxsiL4lEuJwe/To8UnK7fAnmbGEEH8RpLouuKbeEm0lhbQVFIrNSuB+G7tVrAlVsZgETT5nljf+Iw==", - "dev": true - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-loader": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-1.1.2.tgz", - "integrity": "sha512-bjf6eSENOYBX4JZDfl9vVLNsGAQ6Uz90fLmOazcmMcyDYOBFsGxPNn83jXezWLY9bJsVAo1ObztxPcV8HAbjVA==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "iconv-lite": "^0.6.2", - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0", - "source-map": "^0.6.1", - "whatwg-mimetype": "^2.3.0" - }, - "dependencies": { - "iconv-lite": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", - "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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" - }, - "dependencies": { - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - } - } - }, - "speed-measure-webpack-plugin": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/speed-measure-webpack-plugin/-/speed-measure-webpack-plugin-1.3.3.tgz", - "integrity": "sha512-2ljD4Ch/rz2zG3HsLsnPfp23osuPBS0qPuz9sGpkNXTN1Ic4M+W9xB8l8rS8ob2cO4b1L+WTJw/0AJwWYVgcxQ==", - "dev": true, - "requires": { - "chalk": "^2.0.1" - } - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "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": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - }, - "stable": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/stable/-/stable-0.1.8.tgz", - "integrity": "sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==", - "dev": true - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", - "dev": true - }, - "stream-browserify": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-2.0.2.tgz", - "integrity": "sha512-nX6hmklHs/gr2FuxYDltq8fJA1GDlxKQCz8O/IM4atRqBH8OORmBNgfvW5gG10GT/qQ9u0CzIvr2X5Pkt6ntqg==", - "dev": true, - "requires": { - "inherits": "~2.0.1", - "readable-stream": "^2.0.2" - } - }, - "stream-each": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", - "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "stream-http": { - "version": "2.8.3", - "resolved": "https://registry.npmjs.org/stream-http/-/stream-http-2.8.3.tgz", - "integrity": "sha512-+TSkfINHDo4J+ZobQLWiMouQYB+UVYFttRA94FpEzzJ7ZdqcL4uUUQ7WkdkI4DSozGmgBUE/a47L+38PenXhUw==", - "dev": true, - "requires": { - "builtin-status-codes": "^3.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.3.6", - "to-arraybuffer": "^1.0.0", - "xtend": "^4.0.0" - } - }, - "stream-shift": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", - "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", - "dev": true - }, - "streamroller": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.0.4.tgz", - "integrity": "sha512-GI9NzeD+D88UFuIlJkKNDH/IsuR+qIN7Qh8EsmhoRZr9bQoehTraRgwtLUkZbpcAw+hLPfHOypmppz8YyGK68w==", - "dev": true, - "requires": { - "date-format": "^4.0.4", - "debug": "^4.3.3", - "fs-extra": "^10.0.1" - }, - "dependencies": { - "debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "fs-extra": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.0.1.tgz", - "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "universalify": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - } - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.trimend": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.4.tgz", - "integrity": "sha512-y9xCjw1P23Awk8EvTpcyL2NIr1j7wJ39f+k6lvRnSMz+mz9CGz9NYPelDk42kOz6+ql8xjfK8oYzy3jAP5QU5A==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "string.prototype.trimstart": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.4.tgz", - "integrity": "sha512-jh6e984OBfvxS50tdY2nRZnoC5/mLFKOREQfw8t5yytkoUsJRNxvI/E39qu1sD0OtWI3OC0XgKSmcWwziwYuZw==", - "dev": true, - "requires": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3" - } - }, - "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" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "style-loader": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/style-loader/-/style-loader-2.0.0.tgz", - "integrity": "sha512-Z0gYUJmzZ6ZdRUqpg1r8GsaFKypE+3xAzuFeMuoHgjc9KZv3wMyCRjQIWEbhoFSq7+7yoHXySDJyyWQaPajeiQ==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "stylehacks": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-4.0.3.tgz", - "integrity": "sha512-7GlLk9JwlElY4Y6a/rmbH2MhVlTyVmiJd1PfTCqFaIBEGMYNsrO/v3SeGTdhBThLg4Z+NbOk/qFMwCa+J+3p/g==", - "dev": true, - "requires": { - "browserslist": "^4.0.0", - "postcss": "^7.0.0", - "postcss-selector-parser": "^3.0.0" - }, - "dependencies": { - "postcss-selector-parser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-3.1.2.tgz", - "integrity": "sha512-h7fJ/5uWuRVyOtkO45pnt1Ih40CEleeyCHzipqAZO2e5H20g25Y48uYnFUiShvY4rZWNJ/Bib/KVPmanaCtOhA==", - "dev": true, - "requires": { - "dot-prop": "^5.2.0", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" - } - } - } - }, - "stylus": { - "version": "0.54.8", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.54.8.tgz", - "integrity": "sha512-vr54Or4BZ7pJafo2mpf0ZcwA74rpuYCZbxrHBsH8kbcXOwSfvBFwsRfpGO5OD5fhG5HDCFW737PKaawI7OqEAg==", - "dev": true, - "requires": { - "css-parse": "~2.0.0", - "debug": "~3.1.0", - "glob": "^7.1.6", - "mkdirp": "~1.0.4", - "safer-buffer": "^2.1.2", - "sax": "~1.2.4", - "semver": "^6.3.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "debug": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", - "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "stylus-loader": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/stylus-loader/-/stylus-loader-4.3.1.tgz", - "integrity": "sha512-apDYJEM5ZpOAWbWInWcsbtI8gHNr/XYVcSY/tWqOUPt7M5tqhtwXVsAkgyiVjhuvw2Yrjq474a9H+g4d047Ebw==", - "dev": true, - "requires": { - "fast-glob": "^3.2.4", - "klona": "^2.0.4", - "loader-utils": "^2.0.0", - "normalize-path": "^3.0.0", - "schema-utils": "^3.0.0" - }, - "dependencies": { - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "svgo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-1.3.2.tgz", - "integrity": "sha512-yhy/sQYxR5BkC98CY7o31VGsg014AKLEPxdfhora76l36hD9Rdy5NZA/Ocn6yayNPgSamYdtX2rFJdcv07AYVw==", - "dev": true, - "requires": { - "chalk": "^2.4.1", - "coa": "^2.0.2", - "css-select": "^2.0.0", - "css-select-base-adapter": "^0.1.1", - "css-tree": "1.0.0-alpha.37", - "csso": "^4.0.2", - "js-yaml": "^3.13.1", - "mkdirp": "~0.5.1", - "object.values": "^1.1.0", - "sax": "~1.2.4", - "stable": "^0.1.8", - "unquote": "~1.1.1", - "util.promisify": "~1.0.0" - } - }, - "symbol-observable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-3.0.0.tgz", - "integrity": "sha512-6tDOXSHiVjuCaasQSWTmHUWn4PuG7qa3+1WT031yTc/swT7+rLiw3GOrFxaH1E3lLP09dH3bVuVDf2gK5rxG3Q==", - "dev": true - }, - "tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "dependencies": { - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - } - } - }, - "terser": { - "version": "5.3.7", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.3.7.tgz", - "integrity": "sha512-lJbKdfxWvjpV330U4PBZStCT9h3N9A4zZVA5Y4k9sCWXknrpdyxi1oMsRKLmQ/YDMDxSBKIh88v0SkdhdqX06w==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.7.2", - "source-map-support": "~0.5.19" - } - }, - "terser-webpack-plugin": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-4.2.3.tgz", - "integrity": "sha512-jTgXh40RnvOrLQNgIkwEKnQ8rmHjHK4u+6UBEi+W+FPmvb+uo+chJXntKe7/3lW5mNysgSWD60KyesnhW8D6MQ==", - "dev": true, - "requires": { - "cacache": "^15.0.5", - "find-cache-dir": "^3.3.1", - "jest-worker": "^26.5.0", - "p-limit": "^3.0.2", - "schema-utils": "^3.0.0", - "serialize-javascript": "^5.0.1", - "source-map": "^0.6.1", - "terser": "^5.3.4", - "webpack-sources": "^1.4.3" - }, - "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" - } - }, - "schema-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.0.0.tgz", - "integrity": "sha512-6D82/xSzO094ajanoOSbe4YvXWMfn2A//8Y1+MUqFAJul5Bs+yn36xbK9OtNDcRVSBJ9jjeoXftM6CfztsjOAA==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.6", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - }, - "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 - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", - "dev": true - }, - "through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "requires": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "thunky": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", - "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", - "dev": true - }, - "timers-browserify": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/timers-browserify/-/timers-browserify-2.0.12.tgz", - "integrity": "sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==", - "dev": true, - "requires": { - "setimmediate": "^1.0.4" - } - }, - "timsort": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/timsort/-/timsort-0.3.0.tgz", - "integrity": "sha1-QFQRqOfmM5/mTbmiNN4R3DHgK9Q=", - "dev": true - }, - "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" - } - }, - "to-arraybuffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/to-arraybuffer/-/to-arraybuffer-1.0.1.tgz", - "integrity": "sha1-fSKbH8xjfkZsoIEYCDanqr/4P0M=", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.0.tgz", - "integrity": "sha512-yaOH/Pk/VEhBWWTlhI+qXxDFXlejDGcQipMlyxda9nthulaxLZUNcUqFxokp0vcYnvteJln5FNQDRrxj3YcbVw==", - "dev": true - }, - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "ts-node": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-8.3.0.tgz", - "integrity": "sha512-dyNS/RqyVTDcmNM4NIBAeDMpsAdaQ+ojdf0GOLqE6nwJOgzEkdRNzJywhDfwnuvB10oa6NLVG1rUJQCpRN7qoQ==", - "dev": true, - "requires": { - "arg": "^4.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "source-map-support": "^0.5.6", - "yn": "^3.0.0" - } - }, - "ts-pnp": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/ts-pnp/-/ts-pnp-1.2.0.tgz", - "integrity": "sha512-csd+vJOb/gkzvcCHgTGSChYpy5f1/XKNsmvBGO4JXS+z1v2HobugDz4s1IeFXM3wZB44uczs+eazB5Q/ccdhQw==", - "dev": true - }, - "tslib": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.1.0.tgz", - "integrity": "sha512-hcVC3wYEziELGGmEEXue7D75zbwIIVUMWAVbHItGPx0ziyXxrOMQx4rQEVEV45Ut/1IotuEvwqPopzIOkDMf0A==" - }, - "tslint": { - "version": "6.1.3", - "resolved": "https://registry.npmjs.org/tslint/-/tslint-6.1.3.tgz", - "integrity": "sha512-IbR4nkT96EQOvKE2PW/djGz8iGNeJ4rF2mBfiYaR/nvUWYKJhLwimoJKgjIFEIDibBtOevj7BqCRL4oHeWWUCg==", - "dev": 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": { - "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", - "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": "2.29.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-2.29.0.tgz", - "integrity": "sha512-g5JVHCIJwzfISaXpXE1qvNalca5Jwob6FjI4AoPlqMusJ6ftFE7IkkFoMhVLRgK+4Kx3gkzb8UZK5t5yTTvEmA==", - "dev": true, - "requires": { - "tslib": "^1.8.1" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "tty-browserify": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/tty-browserify/-/tty-browserify-0.0.0.tgz", - "integrity": "sha1-oVe6QC2iTpv5V/mqadUk7tQpAaY=", - "dev": true - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", - "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", - "dev": true - }, - "type-fest": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", - "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", - "dev": true - }, - "typescript": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.7.tgz", - "integrity": "sha512-yi7M4y74SWvYbnazbn8/bmJmX4Zlej39ZOqwG/8dut/MYoSQ119GY9ZFbbGsD4PFZYWxqik/XsP3vk3+W5H3og==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "unbox-primitive": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.1.tgz", - "integrity": "sha512-tZU/3NqK3dA5gpE1KtyiJUrEB0lxnGkMFHptJ7q6ewdZ8s12QrODwNbhIJStmJkd1QDXa1NRA8aF2A1zk/Ypyw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has-bigints": "^1.0.1", - "has-symbols": "^1.0.2", - "which-boxed-primitive": "^1.0.2" - } - }, - "unicode-canonical-property-names-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-1.0.4.tgz", - "integrity": "sha512-jDrNnXWHd4oHiTZnx/ZG7gtUTVp+gCcTTKr8L0HjlwphROEW3+Him+IpvC+xcJEFegapiMZyZe02CyuOnRmbnQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-1.0.4.tgz", - "integrity": "sha512-L4Qoh15vTfntsn4P1zqnHulG0LdXgjSO035fEpdtp6YxXhMT51Q6vgM5lYdG/5X3MjS+k/Y9Xw4SFCY9IkR0rg==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^1.0.4", - "unicode-property-aliases-ecmascript": "^1.0.4" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-1.2.0.tgz", - "integrity": "sha512-wjuQHGQVofmSJv1uVISKLE5zO2rNGzM/KCYZch/QQvez7C1hUhBIuZ701fYXExuufJFMPhv2SyL8CyoIfMLbIQ==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-1.1.0.tgz", - "integrity": "sha512-PqSoPh/pWetQ2phoj5RLiaqIk4kCNwoV3CI+LfGmWLKI3rE3kl1h59XpX2BjgDrmbxD9ARtQobPGU1SguCYuQg==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8=", - "dev": true - }, - "uniqs": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", - "integrity": "sha1-/+3ks2slKQaW5uFl1KWe25mOawI=", - "dev": true - }, - "unique-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" - } - }, - "universal-analytics": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/universal-analytics/-/universal-analytics-0.4.23.tgz", - "integrity": "sha512-lgMIH7XBI6OgYn1woDEmxhGdj8yDefMKg7GkWdeATAlQZFrMrNyxSkpDzY57iY0/6fdlzTbBV03OawvvzG+q7A==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "request": "^2.88.2", - "uuid": "^3.0.0" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha1-sr9O6FFKrmFltIF4KdIbLvSZBOw=", - "dev": true - }, - "unquote": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", - "integrity": "sha1-j97XMk7G6IoP+LkF58CYzcCG1UQ=", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "upath": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", - "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", - "dev": true - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "url": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/url/-/url-0.11.0.tgz", - "integrity": "sha1-ODjpfPxgUh63PFJajlW/3Z4uKPE=", - "dev": true, - "requires": { - "punycode": "1.3.2", - "querystring": "0.2.0" - }, - "dependencies": { - "punycode": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-1.3.2.tgz", - "integrity": "sha1-llOgNvt8HuQjQvIyXM7v6jkmxI0=", - "dev": true - } - } - }, - "url-parse": { - "version": "1.5.10", - "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", - "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", - "dev": true, - "requires": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "util": { - "version": "0.11.1", - "resolved": "https://registry.npmjs.org/util/-/util-0.11.1.tgz", - "integrity": "sha512-HShAsny+zS2TZfaXxD9tYj4HQGlBezXZMZuM/S5PKLLoZkShZiGk9o5CzukI1LVHZvjdvZ2Sj1aW/Ndn2NB/HQ==", - "dev": true, - "requires": { - "inherits": "2.0.3" - }, - "dependencies": { - "inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true - } - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", - "dev": true - }, - "util.promisify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.0.1.tgz", - "integrity": "sha512-g9JpC/3He3bm38zsLupWryXHoEcS22YHthuPQSJdMy6KNrzIRzWqcsHzD/WUnqe45whVou4VIsPew37DoXWNrA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.2", - "has-symbols": "^1.0.1", - "object.getownpropertydescriptors": "^2.1.0" - } - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM=", - "dev": true - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - }, - "validate-npm-package-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", - "integrity": "sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==", - "dev": true, - "requires": { - "builtins": "^1.0.3" - } - }, - "vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", - "dev": true - }, - "vendors": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", - "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", - "dev": true - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "vm-browserify": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vm-browserify/-/vm-browserify-1.1.2.tgz", - "integrity": "sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha1-wGavtYK7HLQSjWDqkjkulNXp2+w=", - "dev": true - }, - "watchpack": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-1.7.5.tgz", - "integrity": "sha512-9P3MWk6SrKjHsGkLT2KHXdQ/9SNkyoJbabxnKOoJepsvJjJG8uYTR3yTPxPQvNDI3w4Nz1xnE0TLHK4RIVe/MQ==", - "dev": true, - "requires": { - "chokidar": "^3.4.1", - "graceful-fs": "^4.1.2", - "neo-async": "^2.5.0", - "watchpack-chokidar2": "^2.0.1" - } - }, - "watchpack-chokidar2": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/watchpack-chokidar2/-/watchpack-chokidar2-2.0.1.tgz", - "integrity": "sha512-nCFfBIPKr5Sh61s4LPpy1Wtfi0HE8isJ3d2Yb5/Ppw2P2B/3eVSEBjKfN0fmHJSK14+31KwMKmcrzs2GM4P0Ww==", - "dev": true, - "optional": true, - "requires": { - "chokidar": "^2.1.8" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "optional": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "optional": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true, - "optional": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "optional": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "optional": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "optional": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "optional": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "optional": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "optional": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "optional": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "optional": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "optional": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "optional": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "optional": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "optional": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webdriver-js-extender": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/webdriver-js-extender/-/webdriver-js-extender-2.1.0.tgz", - "integrity": "sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==", - "dev": true, - "requires": { - "@types/selenium-webdriver": "^3.0.0", - "selenium-webdriver": "^3.0.1" - } - }, - "webpack": { - "version": "4.44.2", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-4.44.2.tgz", - "integrity": "sha512-6KJVGlCxYdISyurpQ0IPTklv+DULv05rs2hseIXer6D7KrUicRDLFb4IUM1S6LUAKypPM/nSiVSuv8jHu1m3/Q==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.9.0", - "@webassemblyjs/helper-module-context": "1.9.0", - "@webassemblyjs/wasm-edit": "1.9.0", - "@webassemblyjs/wasm-parser": "1.9.0", - "acorn": "^6.4.1", - "ajv": "^6.10.2", - "ajv-keywords": "^3.4.1", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^4.3.0", - "eslint-scope": "^4.0.3", - "json-parse-better-errors": "^1.0.2", - "loader-runner": "^2.4.0", - "loader-utils": "^1.2.3", - "memory-fs": "^0.4.1", - "micromatch": "^3.1.10", - "mkdirp": "^0.5.3", - "neo-async": "^2.6.1", - "node-libs-browser": "^2.2.1", - "schema-utils": "^1.0.0", - "tapable": "^1.1.3", - "terser-webpack-plugin": "^1.4.3", - "watchpack": "^1.7.4", - "webpack-sources": "^1.4.1" - }, - "dependencies": { - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "cacache": { - "version": "12.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", - "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", - "dev": true, - "requires": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "enhanced-resolve": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-4.5.0.tgz", - "integrity": "sha512-Nv9m36S/vxpsI+Hc4/ZGRs0n9mXqSWGGq49zxb/cJfPAQMbUtttJAlNPS4AQzaBdw/pKskw5bMbekT/Y7W/Wlg==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "memory-fs": "^0.5.0", - "tapable": "^1.0.0" - }, - "dependencies": { - "memory-fs": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.5.0.tgz", - "integrity": "sha512-jA0rdU5KoQMC0e6ppoNRtpp6vjFq6+NY7r8hywnC7V+1Xj/MtHwGIbB1QaK/dunyjWteJzmkpd7ooeWg10T7GA==", - "dev": true, - "requires": { - "errno": "^0.1.3", - "readable-stream": "^2.0.1" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "find-cache-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", - "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^2.0.0", - "pkg-dir": "^3.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-wsl": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", - "integrity": "sha1-HxbkqiKwTRM2tmGIpmrzxgDDpm0=", - "dev": true - }, - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - }, - "lru-cache": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", - "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, - "requires": { - "yallist": "^3.0.2" - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "serialize-javascript": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-4.0.0.tgz", - "integrity": "sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==", - "dev": true, - "requires": { - "randombytes": "^2.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 - }, - "ssri": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.2.tgz", - "integrity": "sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==", - "dev": true, - "requires": { - "figgy-pudding": "^3.5.1" - } - }, - "tapable": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", - "integrity": "sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==", - "dev": true - }, - "terser": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-4.8.1.tgz", - "integrity": "sha512-4GnLC0x667eJG0ewJTa6z/yXrbLGv80D9Ru6HIpCQmO+Q4PfEtBFi0ObSckqwL6VyQv/7ENJieXHo2ANmdQwgw==", - "dev": true, - "requires": { - "commander": "^2.20.0", - "source-map": "~0.6.1", - "source-map-support": "~0.5.12" - } - }, - "terser-webpack-plugin": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-1.4.5.tgz", - "integrity": "sha512-04Rfe496lN8EYruwi6oPQkG0vo8C+HT49X687FZnpPF0qMAIHONI6HEXYPKDOE8e5HjXTyKfqRd/agHtH0kOtw==", - "dev": true, - "requires": { - "cacache": "^12.0.2", - "find-cache-dir": "^2.1.0", - "is-wsl": "^1.1.0", - "schema-utils": "^1.0.0", - "serialize-javascript": "^4.0.0", - "source-map": "^0.6.1", - "terser": "^4.1.2", - "webpack-sources": "^1.4.0", - "worker-farm": "^1.7.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - }, - "yallist": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true - } - } - }, - "webpack-dev-middleware": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-3.7.2.tgz", - "integrity": "sha512-1xC42LxbYoqLNAhV6YzTYacicgMZQTqRd27Sim9wn5hJrX3I5nxYy1SxSd4+gjUFsz1dQFj+yEe6zEVmSkeJjw==", - "dev": true, - "requires": { - "memory-fs": "^0.4.1", - "mime": "^2.4.4", - "mkdirp": "^0.5.1", - "range-parser": "^1.2.1", - "webpack-log": "^2.0.0" - }, - "dependencies": { - "mime": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", - "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", - "dev": true - } - } - }, - "webpack-dev-server": { - "version": "3.11.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-3.11.0.tgz", - "integrity": "sha512-PUxZ+oSTxogFQgkTtFndEtJIPNmml7ExwufBZ9L2/Xyyd5PnOL5UreWe5ZT7IU25DSdykL9p1MLQzmLh2ljSeg==", - "dev": true, - "requires": { - "ansi-html": "0.0.7", - "bonjour": "^3.5.0", - "chokidar": "^2.1.8", - "compression": "^1.7.4", - "connect-history-api-fallback": "^1.6.0", - "debug": "^4.1.1", - "del": "^4.1.1", - "express": "^4.17.1", - "html-entities": "^1.3.1", - "http-proxy-middleware": "0.19.1", - "import-local": "^2.0.0", - "internal-ip": "^4.3.0", - "ip": "^1.1.5", - "is-absolute-url": "^3.0.3", - "killable": "^1.0.1", - "loglevel": "^1.6.8", - "opn": "^5.5.0", - "p-retry": "^3.0.1", - "portfinder": "^1.0.26", - "schema-utils": "^1.0.0", - "selfsigned": "^1.10.7", - "semver": "^6.3.0", - "serve-index": "^1.9.1", - "sockjs": "0.3.20", - "sockjs-client": "1.4.0", - "spdy": "^4.0.2", - "strip-ansi": "^3.0.1", - "supports-color": "^6.1.0", - "url": "^0.11.0", - "webpack-dev-middleware": "^3.7.2", - "webpack-log": "^2.0.0", - "ws": "^6.2.1", - "yargs": "^13.3.2" - }, - "dependencies": { - "ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", - "dev": true - }, - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - }, - "dependencies": { - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - } - } - }, - "binary-extensions": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", - "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", - "dev": true - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "chokidar": { - "version": "2.1.8", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", - "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", - "dev": true, - "requires": { - "anymatch": "^2.0.0", - "async-each": "^1.0.1", - "braces": "^2.3.2", - "fsevents": "^1.2.7", - "glob-parent": "^3.1.0", - "inherits": "^2.0.3", - "is-binary-path": "^1.0.0", - "is-glob": "^4.0.0", - "normalize-path": "^3.0.0", - "path-is-absolute": "^1.0.0", - "readdirp": "^2.2.1", - "upath": "^1.1.1" - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fsevents": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", - "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", - "dev": true, - "optional": true - }, - "glob-parent": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", - "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", - "dev": true, - "requires": { - "is-glob": "^3.1.0", - "path-dirname": "^1.0.0" - }, - "dependencies": { - "is-glob": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", - "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", - "dev": true, - "requires": { - "is-extglob": "^2.1.0" - } - } - } - }, - "is-absolute-url": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-3.0.3.tgz", - "integrity": "sha512-opmNIX7uFnS96NtPmhWQgQx6/NYFgsUXYMllcfzwWKUMwfo8kku1TvE6hkNcH+Q1ts5cMVrsY7j0bxXQDciu9Q==", - "dev": true - }, - "is-binary-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", - "integrity": "sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg=", - "dev": true, - "requires": { - "binary-extensions": "^1.0.0" - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "readdirp": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", - "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.11", - "micromatch": "^3.1.10", - "readable-stream": "^2.0.2" - } - }, - "schema-utils": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-1.0.0.tgz", - "integrity": "sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==", - "dev": true, - "requires": { - "ajv": "^6.1.0", - "ajv-errors": "^1.0.0", - "ajv-keywords": "^3.1.0" - } - }, - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", - "dev": true, - "requires": { - "ansi-regex": "^2.0.0" - } - }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "webpack-log": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/webpack-log/-/webpack-log-2.0.0.tgz", - "integrity": "sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==", - "dev": true, - "requires": { - "ansi-colors": "^3.0.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "ansi-colors": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-3.2.4.tgz", - "integrity": "sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.2.0.tgz", - "integrity": "sha512-QBglJBg5+lItm3/Lopv8KDDK01+hjdg2azEwi/4vKJ8ZmGPdtJsTpjtNNOW3a4WiqzXdCATtTudOZJngE7RKkA==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-2.0.1.tgz", - "integrity": "sha512-A9oYz7ANQBK5EN19rUXbvNgfdfZf5U2gP0769OXsj9CvYkCR6OHOsd6OKyEy4H38GGxpsQPKIL83NC64QY6Xmw==", - "dev": true, - "requires": { - "source-list-map": "^2.0.1", - "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 - } - } - }, - "webpack-subresource-integrity": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-1.5.1.tgz", - "integrity": "sha512-uekbQ93PZ9e7BFB8Hl9cFIVYQyQqiXp2ExKk9Zv+qZfH/zHXHrCFAfw1VW0+NqWbTWrs/HnuDrto3+tiPXh//Q==", - "dev": true, - "requires": { - "webpack-sources": "^1.3.0" - }, - "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 - }, - "webpack-sources": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-1.4.3.tgz", - "integrity": "sha512-lgTS3Xhv1lCOKo7SA5TjKXMjpSM4sBjNV5+q2bqesbSPs5FjGmU6jjtBSkX9b4qW87vDIsCIlUPOEhbZrMdjeQ==", - "dev": true, - "requires": { - "source-list-map": "^2.0.0", - "source-map": "~0.6.1" - } - } - } - }, - "websocket-driver": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.6.5.tgz", - "integrity": "sha1-XLJVbOuF9Dc8bYI4qmkchFThOjY=", - "dev": true, - "requires": { - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "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-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "worker-farm": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/worker-farm/-/worker-farm-1.7.0.tgz", - "integrity": "sha512-rvw3QTZc8lAxyVrqcSGVm5yP/IJ2UcB3U0graE3LCFoZ0Yn2x4EoVSqJKdB/T5M+FLcRPjz4TDacRf3OCfNUzw==", - "dev": true, - "requires": { - "errno": "~0.1.7" - } - }, - "worker-plugin": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/worker-plugin/-/worker-plugin-5.0.0.tgz", - "integrity": "sha512-AXMUstURCxDD6yGam2r4E34aJg6kW85IiaeX72hi+I1cxyaMUtrvVY6sbfpGKAj5e7f68Acl62BjQF5aOOx2IQ==", - "dev": true, - "requires": { - "loader-utils": "^1.1.0" - }, - "dependencies": { - "json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "requires": { - "minimist": "^1.2.0" - } - }, - "loader-utils": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.0.tgz", - "integrity": "sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^1.0.1" - } - } - } - }, - "wrap-ansi": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", - "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.0", - "string-width": "^3.0.0", - "strip-ansi": "^5.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "ws": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", - "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", - "dev": true, - "requires": { - "async-limiter": "~1.0.0" - } - }, - "xml2js": { - "version": "0.4.23", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", - "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", - "dev": true, - "requires": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - } - }, - "xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true - }, - "xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true - }, - "y18n": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", - "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "yaml": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", - "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", - "dev": true - }, - "yargs": { - "version": "13.3.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", - "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", - "dev": true, - "requires": { - "cliui": "^5.0.0", - "find-up": "^3.0.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": "^3.0.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^13.1.2" - }, - "dependencies": { - "ansi-regex": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", - "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", - "dev": true - }, - "emoji-regex": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", - "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", - "dev": true - }, - "string-width": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", - "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", - "dev": true, - "requires": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - } - }, - "strip-ansi": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", - "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", - "dev": true, - "requires": { - "ansi-regex": "^4.1.0" - } - } - } - }, - "yargs-parser": { - "version": "13.1.2", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", - "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - }, - "dependencies": { - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "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.10.3", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.10.3.tgz", - "integrity": "sha512-LXVLVEq0NNOqK/fLJo3d0kfzd4sxwn2/h67/02pjCjfKDxgx1i9QqpvtHD8CrBnSSwMw5+dy11O7FRX5mkO7Cg==" - } - } -} diff --git a/1-Authentication/1-sign-in/SPA/package.json b/1-Authentication/1-sign-in/SPA/package.json deleted file mode 100644 index 7d7ae5a8..00000000 --- a/1-Authentication/1-sign-in/SPA/package.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "name": "ms-identity-angular-c1s1", - "version": "1.0.0", - "description": "Angular single-page application using MSAL React to sign-in users with Azure Active Directory", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI", - "lint": "ng lint", - "e2e": "ng e2e" - }, - "dependencies": { - "@angular/animations": "~11.0.0", - "@angular/cdk": "^11.0.0", - "@angular/common": "~11.0.0", - "@angular/compiler": "~11.0.0", - "@angular/core": "~11.0.0", - "@angular/forms": "~11.0.0", - "@angular/material": "^11.0.0", - "@angular/platform-browser": "~11.0.0", - "@angular/platform-browser-dynamic": "~11.0.0", - "@angular/router": "~11.0.0", - "@azure/msal-angular": "^2.0.2", - "@azure/msal-browser": "^2.16.0", - "core-js": "^3.8.0", - "rxjs": "~6.6.0", - "tslib": "^2.0.0", - "zone.js": "~0.10.2" - }, - "devDependencies": { - "@angular-devkit/build-angular": "~0.1100.1", - "@angular/cli": "~11.2.19", - "@angular/compiler-cli": "~11.0.0", - "@types/jasmine": "~3.6.0", - "@types/node": "^12.11.1", - "codelyzer": "^6.0.0", - "jasmine-core": "~3.6.0", - "jasmine-spec-reporter": "~5.0.0", - "karma": "^6.3.16", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.0.3", - "karma-jasmine": "~4.0.0", - "karma-jasmine-html-reporter": "^1.5.0", - "protractor": "~7.0.0", - "ts-node": "~8.3.0", - "tslint": "~6.1.0", - "typescript": "~4.0.2" - } -} diff --git a/1-Authentication/1-sign-in/SPA/src/app/app-routing.module.ts b/1-Authentication/1-sign-in/SPA/src/app/app-routing.module.ts deleted file mode 100644 index a05e53d9..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { HomeComponent } from './home/home.component'; -import { MsalGuard } from '@azure/msal-angular'; -import { GuardedComponent } from './guarded/guarded.component'; - -/** - * MSAL Angular can protect routes in your application - * using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'guarded', - component: GuardedComponent, - canActivate: [ - MsalGuard - ] - }, - { - // Needed for hash routing - path: 'error', - component: HomeComponent - }, - { - // Needed for hash routing - path: 'state', - component: HomeComponent - }, - { - // Needed for hash routing - path: 'code', - component: HomeComponent - }, - { - path: '', - component: HomeComponent - } -]; - -const isIframe = window !== window.parent && !window.opener; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - useHash: true, - // Don't perform initial navigation in iframes - initialNavigation: !isIframe ? 'enabled' : 'disabled' - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/1-Authentication/1-sign-in/SPA/src/app/app.component.css b/1-Authentication/1-sign-in/SPA/src/app/app.component.css deleted file mode 100644 index ba3d56d1..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/app.component.css +++ /dev/null @@ -1,13 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; - } - - a.title { - color: white; - } - - .footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; - } diff --git a/1-Authentication/1-sign-in/SPA/src/app/app.component.html b/1-Authentication/1-sign-in/SPA/src/app/app.component.html deleted file mode 100644 index 1d04302d..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/app.component.html +++ /dev/null @@ -1,21 +0,0 @@ - - {{ title }} - -
- Guarded Component - - - -
-
- - -
- - \ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/src/app/app.component.ts b/1-Authentication/1-sign-in/SPA/src/app/app.component.ts deleted file mode 100644 index 00c8e82a..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/app.component.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { AuthenticationResult, InteractionStatus, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) {} - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - }); - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest){ - this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest){ - this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - this.authService.logout(); - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/1-Authentication/1-sign-in/SPA/src/app/app.module.ts b/1-Authentication/1-sign-in/SPA/src/app/app.module.ts deleted file mode 100644 index 39655526..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/app.module.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { GuardedComponent } from './guarded/guarded.component'; - -import { HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { MsalGuard, MsalBroadcastService, MsalModule, MsalService, MSAL_GUARD_CONFIG, MSAL_INSTANCE, MsalGuardConfiguration, MsalRedirectComponent } from '@azure/msal-angular'; - -import { msalConfig } from './auth-config'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - GuardedComponent, - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - HttpClientModule, - MsalModule - ], - providers: [ - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - MsalService, - MsalGuard, - MsalBroadcastService - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/1-Authentication/1-sign-in/SPA/src/app/auth-config.ts b/1-Authentication/1-sign-in/SPA/src/app/auth-config.ts deleted file mode 100644 index 3479de00..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,47 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/', // Points to window.location.origin. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Indicates the page to navigate after logout. - navigateToLoginRequestUrl: true, // If "true", will navigate back to the original request location before processing the auth code response. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge - }, - system: { - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * An optional silentRequest object can be used to achieve silent SSO - * between applications by providing a "login_hint" property. - */ -export const silentRequest = { - scopes: ["openid", "profile"], - loginHint: "example@domain.net" -}; \ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.css b/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.css deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.html b/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.html deleted file mode 100644 index 6a5e109e..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.html +++ /dev/null @@ -1 +0,0 @@ -

This component is guarded. You can see this because you're signed-in.

diff --git a/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.ts b/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.ts deleted file mode 100644 index 90e9903c..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/guarded/guarded.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-guarded', - templateUrl: './guarded.component.html', - styleUrls: ['./guarded.component.css'] -}) -export class GuardedComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/1-Authentication/1-sign-in/SPA/src/app/home/home.component.css b/1-Authentication/1-sign-in/SPA/src/app/home/home.component.css deleted file mode 100644 index 62a66acf..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,9 +0,0 @@ -table { - width: 70%; - margin: 10% auto auto auto; - } - -.card-section { - margin: 10%; - padding: 5%; - } \ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/src/app/home/home.component.html b/1-Authentication/1-sign-in/SPA/src/app/home/home.component.html deleted file mode 100644 index 4c153440..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,23 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and get an ID Token - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and protect a route. - - -
ApplicationAppIdUrl in the Azure portal
- - - - - - - - - - - - - - - -
Claim {{element.claim}} Value {{element.value}}
\ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/src/app/home/home.component.ts b/1-Authentication/1-sign-in/SPA/src/app/home/home.component.ts deleted file mode 100644 index 294a0836..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value']; - dataSource: any =[]; - - private readonly _destroying$ = new Subject(); - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - console.log(result); - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims) - }); - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - this.dataSource = [ - {id: 1, claim: "Display Name", value: claims ? claims['name'] : null}, - {id: 2, claim: "User Principal Name (UPN)", value: claims ? claims['preferred_username'] : null}, - {id: 2, claim: "OID", value: claims ? claims['oid']: null} - ]; - } - - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} \ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/src/app/sample.spec.ts b/1-Authentication/1-sign-in/SPA/src/app/sample.spec.ts deleted file mode 100644 index 7104e013..00000000 --- a/1-Authentication/1-sign-in/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/guarded')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} \ No newline at end of file diff --git a/1-Authentication/1-sign-in/SPA/src/assets/.gitkeep b/1-Authentication/1-sign-in/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Authentication/1-sign-in/SPA/src/environments/environment.prod.ts b/1-Authentication/1-sign-in/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/1-Authentication/1-sign-in/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/1-Authentication/1-sign-in/SPA/src/environments/environment.ts b/1-Authentication/1-sign-in/SPA/src/environments/environment.ts deleted file mode 100644 index 7b4f817a..00000000 --- a/1-Authentication/1-sign-in/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/dist/zone-error'; // Included with Angular CLI. diff --git a/1-Authentication/1-sign-in/SPA/src/favicon.svg b/1-Authentication/1-sign-in/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/1-Authentication/1-sign-in/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/1-Authentication/1-sign-in/SPA/src/index.html b/1-Authentication/1-sign-in/SPA/src/index.html deleted file mode 100644 index fbdbed6c..00000000 --- a/1-Authentication/1-sign-in/SPA/src/index.html +++ /dev/null @@ -1,16 +0,0 @@ - - - - - Angular 11 - Sample App - - - - - - - - - - - diff --git a/1-Authentication/1-sign-in/SPA/src/main.ts b/1-Authentication/1-sign-in/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/1-Authentication/1-sign-in/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/1-Authentication/1-sign-in/SPA/src/polyfills.ts b/1-Authentication/1-sign-in/SPA/src/polyfills.ts deleted file mode 100644 index 149c2226..00000000 --- a/1-Authentication/1-sign-in/SPA/src/polyfills.ts +++ /dev/null @@ -1,64 +0,0 @@ -/** - * This file includes polyfills needed by Angular and is loaded before the app. - * You can add your own extra polyfills to this file. - * - * This file is divided into 2 sections: - * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers. - * 2. Application imports. Files imported after ZoneJS that should be loaded before your main - * file. - * - * The current setup is for so-called "evergreen" browsers; the last versions of browsers that - * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera), - * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** IE11 requires the following for NgClass support on SVG elements */ -// import 'classlist.js'; // Run `npm install --save classlist.js`. - -/** - * Web Animations `@angular/platform-browser/animations` - * Only required if AnimationBuilder is used within the application and using IE/Edge or Safari. - * Standard animation support in Angular DOES NOT require any polyfills (as of Angular 6.0). - */ -// import 'web-animations-js'; // Run `npm install --save web-animations-js`. - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js/dist/zone'; // Included with Angular CLI. -import 'core-js'; // Needed for IE11 - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/1-Authentication/1-sign-in/SPA/src/styles.css b/1-Authentication/1-sign-in/SPA/src/styles.css deleted file mode 100644 index 4a836e2b..00000000 --- a/1-Authentication/1-sign-in/SPA/src/styles.css +++ /dev/null @@ -1,6 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ -@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } -.container { margin: 1%; } diff --git a/1-Authentication/1-sign-in/SPA/src/test.ts b/1-Authentication/1-sign-in/SPA/src/test.ts deleted file mode 100644 index 50193eb0..00000000 --- a/1-Authentication/1-sign-in/SPA/src/test.ts +++ /dev/null @@ -1,25 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/dist/zone-testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - keys(): string[]; - (id: string): T; - }; -}; - -// 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); diff --git a/1-Authentication/1-sign-in/SPA/tsconfig.app.json b/1-Authentication/1-sign-in/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/1-Authentication/1-sign-in/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/1-Authentication/1-sign-in/SPA/tsconfig.json b/1-Authentication/1-sign-in/SPA/tsconfig.json deleted file mode 100644 index 7d49b4dc..00000000 --- a/1-Authentication/1-sign-in/SPA/tsconfig.json +++ /dev/null @@ -1,29 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es5", - "module": "es2020", - "lib": [ - "es2018", - "dom" - ] - }, - "angularCompilerOptions": { - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/1-Authentication/1-sign-in/SPA/tsconfig.spec.json b/1-Authentication/1-sign-in/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/1-Authentication/1-sign-in/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/1-Authentication/1-sign-in/SPA/tslint.json b/1-Authentication/1-sign-in/SPA/tslint.json deleted file mode 100644 index 277c8eba..00000000 --- a/1-Authentication/1-sign-in/SPA/tslint.json +++ /dev/null @@ -1,152 +0,0 @@ -{ - "extends": "tslint:recommended", - "rulesDirectory": [ - "codelyzer" - ], - "rules": { - "align": { - "options": [ - "parameters", - "statements" - ] - }, - "array-type": false, - "arrow-return-shorthand": true, - "curly": true, - "deprecation": { - "severity": "warning" - }, - "eofline": true, - "import-blacklist": [ - true, - "rxjs/Rx" - ], - "import-spacing": true, - "indent": { - "options": [ - "spaces" - ] - }, - "max-classes-per-file": false, - "max-line-length": [ - true, - 140 - ], - "member-ordering": [ - true, - { - "order": [ - "static-field", - "instance-field", - "static-method", - "instance-method" - ] - } - ], - "no-console": [ - true, - "debug", - "info", - "time", - "timeEnd", - "trace" - ], - "no-empty": false, - "no-inferrable-types": [ - true, - "ignore-params" - ], - "no-non-null-assertion": true, - "no-redundant-jsdoc": true, - "no-switch-case-fall-through": true, - "no-var-requires": false, - "object-literal-key-quotes": [ - true, - "as-needed" - ], - "quotemark": [ - true, - "single" - ], - "semicolon": { - "options": [ - "always" - ] - }, - "space-before-function-paren": { - "options": { - "anonymous": "never", - "asyncArrow": "always", - "constructor": "never", - "method": "never", - "named": "never" - } - }, - "typedef": [ - true, - "call-signature" - ], - "typedef-whitespace": { - "options": [ - { - "call-signature": "nospace", - "index-signature": "nospace", - "parameter": "nospace", - "property-declaration": "nospace", - "variable-declaration": "nospace" - }, - { - "call-signature": "onespace", - "index-signature": "onespace", - "parameter": "onespace", - "property-declaration": "onespace", - "variable-declaration": "onespace" - } - ] - }, - "variable-name": { - "options": [ - "ban-keywords", - "check-format", - "allow-pascal-case" - ] - }, - "whitespace": { - "options": [ - "check-branch", - "check-decl", - "check-operator", - "check-separator", - "check-type", - "check-typecast" - ] - }, - "component-class-suffix": true, - "contextual-lifecycle": true, - "directive-class-suffix": true, - "no-conflicting-lifecycle": true, - "no-host-metadata-property": true, - "no-input-rename": true, - "no-inputs-metadata-property": true, - "no-output-native": true, - "no-output-on-prefix": true, - "no-output-rename": true, - "no-outputs-metadata-property": true, - "template-banana-in-box": true, - "template-no-negated-async": true, - "use-lifecycle-interface": true, - "use-pipe-transform-interface": true, - "directive-selector": [ - true, - "attribute", - "app", - "camelCase" - ], - "component-selector": [ - true, - "element", - "app", - "kebab-case" - ] - } -} diff --git a/1-Authentication/2-sign-in-b2c/AppCreationScripts/sample.json b/1-Authentication/2-sign-in-b2c/AppCreationScripts/sample.json deleted file mode 100644 index 83f72266..00000000 --- a/1-Authentication/2-sign-in-b2c/AppCreationScripts/sample.json +++ /dev/null @@ -1,50 +0,0 @@ -{ - "Sample": { - "Author": "derisen", - "Title": "Angular single-page application using MSAL Angular to sign-in users against Azure AD B2C", - "Level": 100, - "Client": "Angular SPA", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Description": "Angular single-page application using MSAL Angular to sign-in users against Azure AD B2C", - "Languages": [ - "javascript", - "typescript" - ], - "Products": [ - "azure-active-directory-b2c", - "msal-js", - "msal-angular" - ], - "Platform": "JavaScript", - "Provider": "B2C" - }, - "AADApps": [ - { - "Id": "client", - "Name": "msal-angular-spa", - "SampleSubPath": "1-Authentication\\2-sign-in-b2c\\SPA", - "Kind": "SinglePageApplication", - "Audience": "AzureADandPersonalMicrosoftAccount", - "HomePage": "http://localhost:4200", - "ReplyUrls": "http://localhost:4200, http://localhost:4200/auth" - } - ], - "CodeConfiguration": [ - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantName" - } - ] - } - ] -} \ No newline at end of file diff --git a/1-Authentication/2-sign-in-b2c/README-incremental.md b/1-Authentication/2-sign-in-b2c/README-incremental.md deleted file mode 100644 index f2b4c7db..00000000 --- a/1-Authentication/2-sign-in-b2c/README-incremental.md +++ /dev/null @@ -1,340 +0,0 @@ -# Angular single-page application using MSAL Angular to sign-in users against Azure AD B2C - - 1. [Overview](#overview) - 1. [Scenario](#scenario) - 1. [Contents](#contents) - 1. [Prerequisites](#prerequisites) - 1. [Setup](#setup) - 1. [Registration](#registration) - 1. [Running the sample](#running-the-sample) - 1. [Explore the sample](#explore-the-sample) - 1. [About the code](#about-the-code) - 1. [More information](#more-information) - 1. [Community Help and Support](#community-help-and-support) - 1. [Contributing](#contributing) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with [Azure AD B2C](https://azure.microsoft.com/services/active-directory/external-identities/b2c/) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). - -Here you'll learn about [ID Tokens](https://docs.microsoft.com/azure/active-directory-b2c/tokens-overview#token-types), [OIDC Scopes](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes), [external identity providers](https://docs.microsoft.com/azure/active-directory-b2c/technical-overview#external-identity-providers), [consumer social accounts](https://docs.microsoft.com/azure/active-directory-b2c/technical-overview#consumer-accounts), [single-sign on (SSO)](https://docs.microsoft.com/azure/active-directory-b2c/session-overview), **silent requests** and more. - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to obtain an ID Token from **Azure AD B2C**. -2. The **ID Token** proves that the user has successfully authenticated against **Azure AD B2C**. - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|---------------------------------|-----------------------------------------------------------| -| `src/app/auth-config.ts` | Authentication parameters reside here. | -| `src/app/app.module.ts` | MSAL Angular configuration parameters reside here. | -| `src/app/app-routing.module.ts` | Configure your MSAL-Guard here. | - -## Prerequisites - -- An **Azure AD B2C** tenant. For more information see: [How to get an Azure AD B2C tenant](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-tenant) -- A user account in your **Azure AD B2C** tenant. - -## Setup - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository .zip file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2: Install project dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 1-Authentication/2-sign-in-b2c/SPA - npm install -``` - -## Registration - -:warning: This sample comes with a pre-registered application for demo purposes. If you would like to use your own **Azure AD B2C** tenant and application, follow the steps below to register and configure the application on **Azure portal**. Otherwise, continue with the steps for [Running the sample](#running-the-sample). - -### Choose the Azure AD tenant where you want to create your applications - -As a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD B2C tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD B2C tenant. - -### Create User Flows and Custom Policies - -Please refer to: [Tutorial: Create user flows in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-user-flows) - -### Add External Identity Providers - -Please refer to: [Tutorial: Add identity providers to your applications in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-add-identity-providers) - -#### Register the app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory B2C** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - 1. Under **Supported account types**, select **Accounts in any identity provider or organizational directory (for authenticating users with user flows)** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. - -#### Configure the app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `clientId` and replace the existing value with the application ID (clientId) of `msal-react-spa` app copied from the Azure portal. - -To setup your B2C user-flows, do the following: - -1. Find the key `b2cPolicies.names` and populate it with your policy names e.g. `signUpSignIn`. -1. Find the key `b2cPolicies.authorities` and populate it with your policy authority strings e.g. `https://.b2clogin.com/.onmicrosoft.com/b2c_1_susi`. -1. Find the key `b2cPolicies.authorityDomain` and populate it with the domain portion of your authority string e.g. `.b2clogin.com`. - -## Running the sample - -```console - cd 1-Authentication/2-sign-in-b2c/SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Select the **Sign-in** button on the top right corner. Once you sign-in, you will see some of the important claims in your ID token. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -> :information_source: if you believe your issue is with the B2C service itself rather than with the sample, please file a support ticket with the B2C team by following the instructions [here](https://docs.microsoft.com/en-us/azure/active-directory-b2c/support-options). - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## About the code - -MSAL Angular is a wrapper around MSAL.js (i.e. *msal-browser*). As such, many of MSAL.js's public APIs are also available to use with MSAL Angular, while MSAL Angular itself offers additional [public APIs](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/public-apis.md). - -### Configuration - -You can initialize your application in several ways, for instance, by loading the configuration parameters from another server. See [Configuration options](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md) for more information. - -In the sample, authentication parameters reside in [auth-config.ts](./SPA/src/app/auth-config.ts). These parameters then are used for initializing MSAL Angular configuration options in [app.module.ts](./SPA/src/app/app.module.ts). - -### Sign-in - -**MSAL Angular** exposes 3 login APIs: `loginPopup()`, `loginRedirect()` and `ssoSilent()`. First, setup your default interaction type in [app.module.ts](./SPA/src/app/app.module.ts): - -```typescript -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; -} -``` - -Then, define a login method in [app.component.ts](./SPA/src/app/app.component.ts) as follows: - -```typescript -export class AppComponent implements OnInit { - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) {} - - ngOnInit(): void { - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } -} -``` - -If you already have a session that exists with the authentication server, you can use the `ssoSilent()` API to make a request for tokens without interaction. You will need to pass a [loginHint](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso#automatically-select-account-on-azure-ad) in the request object in order to successfully obtain a token silently. - -```typescript -export class AppComponent implements OnInit { - - constructor( - private authService: MsalService, - ) {} - - ngOnInit(): void { - const silentRequest: SsoSilentRequest = { - scopes: ["User.Read"], - loginHint: "user@contoso.com" - } - - this.authService.ssoSilent(silentRequest) - .subscribe({ - next: (result: AuthenticationResult) => { - console.log("SsoSilent succeeded!"); - }, - error: (error) => { - this.authService.loginRedirect(); - } - }); - } -} -``` - -### Sign-out - -The application redirects the user to the **Microsoft identity platform** logout endpoint to sign out. This endpoint clears the user's session from the browser. If your app did not go to the logout endpoint, the user may re-authenticate to your app without entering their credentials again, because they would have a valid single sign-in session with the **Microsoft identity platform** endpoint. See for more: [Send a sign-out request](https://docs.microsoft.com/azure/active-directory/develop/v2-protocols-oidc#send-a-sign-out-request). - -The sign-out clears the user's single sign-on session with **Azure AD B2C**, but it might not sign the user out of their **social identity provider** session. If the user selects the same identity provider during a subsequent sign-in, they might re-authenticate without entering their credentials. Here the assumption is that, if a user wants to sign out of the application, it doesn't necessarily mean they want to sign out of their social account (e.g. Facebook) itself. - -### ID Token Validation - -When you receive an [ID token](https://docs.microsoft.com/azure/active-directory/develop/id-tokens) directly from the IdP on a secure channel (e.g. HTTPS), such is the case with SPAs, there’s no need to validate it. If you were to do it, you would validate it by asking the same server that gave you the ID token to give you the keys needed to validate it, which renders it pointless, as if one is compromised so is the other. - -### Securing Routes - -You can add authentication to secure specific routes in your application by just adding `canActivate: [MsalGuard]` to your route definition. It can be added at the parent or child routes. This ensures that the user must be signed-in to access the secured route. - -```typescript - const routes: Routes = [ - { - path: 'guarded', - component: GuardedComponent, - canActivate: [ - MsalGuard - ] - } - ] -``` - -### Events API - -Using the event API, you can register an event callback that will do something when an event is emitted. When registering an event callback in an Angular component you will need to make sure you do 2 things. - -1. The callback is registered only once -2. The callback is unregistered before the component unmounts. - -```typescript -export class HomeComponent implements OnInit { - - private readonly _destroying$ = new Subject(); - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // do something with the result, such as accessing ID token - }); - } - - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} -``` - -For more information, see: [Events in MSAL Angular v2](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md). - -### Integrating user-flows - -- **Sign-up/sign-in** - -This user-flow allows your users to sign-in to your application if the user has an account already, or sign-up for an account if not. This is the default user-flow that we pass during the initialization of MSAL instance. - -- **Edit Profile** - -When a user selects the **Edit Profile** button on the navigation bar, we simply initiate a sign-in flow: - -```typescript - editProfile() { - let editProfileFlowRequest = { - scopes: ["openid"], - authority: b2cPolicies.authorities.editProfile.authority, - }; - - this.login(editProfileFlowRequest); - } -``` - -Like password reset, edit profile user-flow requires users to sign-out and sign-in again. - -## Next Tutorial - -Continue with the next tutorial: [Protect and call a web API](../../3-Authorization-II/2-call-api-b2c/README-incremental.md). - -## More information - -- [What is Azure Active Directory B2C?](https://docs.microsoft.com/azure/active-directory-b2c/overview) -- [Application types that can be used in Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/application-types) -- [Recommendations and best practices for Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/best-practices) -- [Azure AD B2C session](https://docs.microsoft.com/azure/active-directory-b2c/session-overview) -- [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -- [Single sign-on with MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso) -- [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -- [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -- [Pass custom state in authentication requests using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-pass-custom-state-authentication-request) -- [Prompt behavior in MSAL.js interactive requests](https://docs.microsoft.com/azure/active-directory/develop/msal-js-prompt-behavior) -- [Use MSAL.js to work with Azure AD B2C](https://docs.microsoft.com/azure/active-directory/develop/msal-b2c-overview) - -For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. \ No newline at end of file diff --git a/1-Authentication/2-sign-in-b2c/README.md b/1-Authentication/2-sign-in-b2c/README.md deleted file mode 100644 index ea207c07..00000000 --- a/1-Authentication/2-sign-in-b2c/README.md +++ /dev/null @@ -1,401 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with Azure AD B2C using the Microsoft Authentication Library for Angular (MSAL Angular). -languages: - - javascript - - typescript -products: - - azure-active-directory-b2c - - msal-js - - msal-angular - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-b2c -extensions: - services: ms-identity - platform: JavaScript - endpoint: AAD v2.0 - level: 100 - client: Angular SPA - service: ---- - -# Angular single-page application using MSAL Angular to sign-in users against Azure AD B2C - -* [Overview](#overview) -* [Scenario](#scenario) -* [Contents](#contents) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Next Steps](#next-steps) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with [Azure AD B2C](https://azure.microsoft.com/services/active-directory/external-identities/b2c/) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). - -Here you'll learn about [ID Tokens](https://docs.microsoft.com/azure/active-directory-b2c/tokens-overview#token-types), [OIDC Scopes](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes), [external identity providers](https://docs.microsoft.com/azure/active-directory-b2c/technical-overview#external-identity-providers), [consumer social accounts](https://docs.microsoft.com/azure/active-directory-b2c/technical-overview#consumer-accounts), [single-sign on (SSO)](https://docs.microsoft.com/azure/active-directory-b2c/session-overview), **silent requests** and more. - -> :information_source: See the community call: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to obtain an ID Token from **Azure AD B2C**. -2. The **ID Token** proves that the user has successfully authenticated against **Azure AD B2C**. - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|---------------------------------|-----------------------------------------------------------| -| `src/app/auth-config.ts` | Authentication parameters reside here. | -| `src/app/app.module.ts` | MSAL Angular configuration parameters reside here. | -| `src/app/app-routing.module.ts` | Configure your MSAL Guard here. | - -## Prerequisites - -* [Node.js](https://nodejs.org/en/download/) must be installed to run this sample. -* [Visual Studio Code](https://code.visualstudio.com/download) is recommended for running and editing this sample. -* [VS Code Azure Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack) extension is recommended for interacting with Azure through VS Code Interface. -* A modern web browser. This sample uses **ES6** conventions and will not run on **Internet Explorer**. -* An **Azure AD B2C** tenant. For more information, see: [How to get an Azure AD B2C tenant](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-tenant) -* A user account in your **Azure AD B2C** tenant. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console -git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2: Install project dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 1-Authentication/2-sign-in-b2c/SPA - npm install -``` - -### Step 3: Register the sample application in your tenant - -:warning: This sample comes with a pre-registered application for demo purposes. If you would like to use your own **Azure AD B2C** tenant and application, follow the steps below to register and configure the application on **Azure portal**. Otherwise, continue with the steps for [Explore the sample](#explore-the-sample). - -#### Choose the Azure AD B2C tenant where you want to create your applications - -As a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD B2C tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD B2C tenant. - -#### Create User Flows and Custom Policies - -Please refer to: [Tutorial: Create user flows in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-user-flows) - -#### Add External Identity Providers - -Please refer to: [Tutorial: Add identity providers to your applications in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-add-identity-providers) - -#### Register the app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory B2C** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - 1. Under **Supported account types**, select **Accounts in any identity provider or organizational directory (for authenticating users with user flows)** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. - -##### Configure the app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `clientId` and replace the existing value with the application ID (clientId) of `msal-react-spa` app copied from the Azure portal. - -To setup your B2C user-flows, do the following: - -1. Find the key `b2cPolicies.names` and populate it with your policy names e.g. `signUpSignIn`. -1. Find the key `b2cPolicies.authorities` and populate it with your policy authority strings e.g. `https://.b2clogin.com/.onmicrosoft.com/b2c_1_susi`. -1. Find the key `b2cPolicies.authorityDomain` and populate it with the domain portion of your authority string e.g. `.b2clogin.com`. - -### Step 4: Running the sample - -From your shell or command line, execute the following commands: - -```console - cd 1-Authentication/2-sign-in-b2c/SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Select the **Sign-in** button on the top right corner. Once you sign-in, you will see some of the important claims in your ID token. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -> :information_source: if you believe your issue is with the B2C service itself rather than with the sample, please file a support ticket with the B2C team by following the instructions [here](https://docs.microsoft.com/azure/active-directory-b2c/support-options). - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -
- Expand for troubleshooting info - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/d365community/forum/79b1327d-d925-ec11-b6e6-000d3a4f06a4). -
- -## About the code - -MSAL Angular is a wrapper around MSAL.js (i.e. *msal-browser*). As such, many of MSAL.js's public APIs are also available to use with MSAL Angular, while MSAL Angular itself offers additional [public APIs](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/public-apis.md). - -### Configuration - -You can initialize your application in several ways, for instance, by loading the configuration parameters from another server. See [configuration options](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md) for more information. - -In the sample, authentication parameters reside in [auth-config.ts](./SPA/src/app/auth-config.ts). These parameters are used for initializing MSAL Angular configuration options in [app.module.ts](./SPA/src/app/app.module.ts). - -### Sign-in - -**MSAL Angular** exposes 3 login APIs: `loginPopup()`, `loginRedirect()` and `ssoSilent()`. First, setup your default interaction type in [app.module.ts](./SPA/src/app/app.module.ts): - -```typescript -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; -} -``` - -Then, define a login method in [app.component.ts](./SPA/src/app/app.component.ts) as follows: - -```typescript -export class AppComponent implements OnInit { - -constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService -) {} - -ngOnInit(): void { - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({...this.msalGuardConfig.authRequest} as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({...this.msalGuardConfig.authRequest} as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } -} -``` - -If you already have a session that exists with the authentication server, you can use the `ssoSilent()` API to make a request for tokens without interaction. You will need to pass a [loginHint](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso#automatically-select-account-on-azure-ad) in the request object in order to successfully obtain a token silently. - -```typescript -export class AppComponent implements OnInit { - -constructor( -private authService: MsalService, -) {} - -ngOnInit(): void { - const silentRequest: SsoSilentRequest = { - scopes: ["User.Read"], - loginHint: "user@contoso.com" - } - - this.authService.ssoSilent(silentRequest) - .subscribe({ - next: (result: AuthenticationResult) => { - console.log("SsoSilent succeeded!"); - }, - error: (error) => { - this.authService.loginRedirect(); - } - }); - } -} -``` - -### Sign-out - -The application redirects the user to the **Microsoft identity platform** logout endpoint to sign out. This endpoint clears the user's session from the browser. If your app did not go to the logout endpoint, the user may re-authenticate to your app without entering their credentials again, because they would have a valid single sign-in session with the **Microsoft identity platform** endpoint. See for more: [Send a sign-out request](https://docs.microsoft.com/azure/active-directory/develop/v2-protocols-oidc#send-a-sign-out-request). - -The sign-out clears the user's single sign-on session with **Azure AD B2C**, but it might not sign the user out of their **social identity provider** session. If the user selects the same identity provider during a subsequent sign-in, they might re-authenticate without entering their credentials. Here the assumption is that, if a user wants to sign out of the application, it doesn't necessarily mean they want to sign out of their social account (e.g. Facebook) itself. - -### ID Token Validation - -When you receive an [ID token](https://learn.microsoft.com/azure/active-directory-b2c/tokens-overview) directly from the IdP on a secure channel (e.g. HTTPS), such is the case with SPAs, there’s no need to validate it. If you were to do it, you would validate it by asking the same server that gave you the ID token to give you the keys needed to validate it, which renders it pointless, as if one is compromised so is the other. - -### Securing Routes - -You can add authentication to secure specific routes in your application by just adding `canActivate: [MsalGuard]` to your route definition. It can be added at the parent or child routes. This ensures that the user must be signed-in to access the secured route. See [app-routing.module.ts](./SPA/src/app/app-routing.module.ts) for more. - -```typescript -const routes: Routes = [ - { - path: 'guarded', - component: GuardedComponent, - canActivate: [ - MsalGuard - ] - } -] -``` - -### Events API - -Using the event API, you can register an event callback that will do something when an event is emitted. When registering an event callback in an Angular component you will need to make sure you do 2 things. - -1. The callback is registered only once -2. The callback is unregistered before the component unmounts. - -```typescript -export class HomeComponent implements OnInit { - - private readonly _destroying$ = new Subject(); - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // do something with the result, such as accessing ID token - }); - } - - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} -``` - -For more information, see: [Events in MSAL Angular v2](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md). - -### Integrating user-flows - -* **Sign-up/sign-in** - -This user-flow allows your users to sign-in to your application if the user has an account already, or sign-up for an account if not. This is the default user-flow that we pass during the initialization of MSAL instance. - -* **Edit Profile** - -This user-flow allows your users to update their profile information. When a user selects the **Edit Profile** button on the navigation bar, we simply initiate a sign-in flow against the edit profile user-flow authority: - -```typescript -// in app.component.ts - -editProfile() { - let editProfileFlowRequest = { - scopes: ["openid"], - authority: b2cPolicies.authorities.editProfile.authority, - }; - - this.login(editProfileFlowRequest); -} -``` - -* **Password Reset** - -Password reset user-flow allows your users to change their password in case they forgot it or etc. When a user selects the **forgot my password** link on Azure AD B2C sing-in page, the B2C service will throw an error to the application, of which the application must catch and handle it by initiating a login against the password-reset user-flow authority. - -```typescript -// in app.component.ts - -this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // Checking for the forgot password error. Learn more about B2C error codes at - // https://learn.microsoft.com/azure/active-directory-b2c/error-codes - if (result.error && result.error.message.indexOf('AADB2C90118') > -1) { - let resetPasswordFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.resetPassword.authority, - scopes: [], - }; - - this.login(resetPasswordFlowRequest); - }; - }); -``` - -## Next Steps - -Learn how to: - -* [Protect and call a web API](../../../3-Authorization-II/2-call-api-b2c/README.md). -* [Deploy your apps to Azure](../../../4-Deployment/README.md) - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [What is Azure Active Directory B2C?](https://docs.microsoft.com/azure/active-directory-b2c/overview) -* [Application types that can be used in Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/application-types) -* [Recommendations and best practices for Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/best-practices) -* [Azure AD B2C session](https://docs.microsoft.com/azure/active-directory-b2c/session-overview) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -* [Single sign-on with MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso) -* [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -* [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -* [Pass custom state in authentication requests using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-pass-custom-state-authentication-request) -* [Prompt behavior in MSAL.js interactive requests](https://docs.microsoft.com/azure/active-directory/develop/msal-js-prompt-behavior) -* [Use MSAL.js to work with Azure AD B2C](https://docs.microsoft.com/azure/active-directory/develop/msal-b2c-overview) diff --git a/1-Authentication/2-sign-in-b2c/ReadmeFiles/screenshot.png b/1-Authentication/2-sign-in-b2c/ReadmeFiles/screenshot.png deleted file mode 100644 index 7d1b7981b357131e81709d5d855f6a0d0c2c6627..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13981 zcmeIZXH=7Gv@RN#B8m%HQe*)FE)}FKz$HWkDJs%?2`wau^h7$LLsV1*1XP*^0Re#! zNFp`Vpdg*llhAuj=nz^cC$4?=9_QXW#vSL5d;i`2Bjd~ajkjffneUv>^UN>W#7LWy zLy!Xi0C4K+JTe0SeyarlPHCSz%ete%o_U6KIpt@j{Sbiby0XM-oN;|%_y7PXPPlOB zz{YBy_tvrT0{|}m{Pj7NEPYW30Jw8o_t683An3{%`{P9C>6Q)q4|z+nGD&rc5-)yd zj}h91E~u!Eo>o%b7%ll(XYw;H``pDxrVn18w)lhZ!45b0j&sVY%gMxoM>gMnXnuZK z_!@I+yn{&$PIOV2Ps{h>rUL8oAN^YWZqmJgbHA?KKQ6E?+Sh|l0RWS3XXF5Y?`tmO z9DIo7`eFa0=~RSQP`}`>o7|>1u7Q%+=J4kv1&>Z53wL}Zf6SPgVYFAz;HBE@IL?sn z7IdIs;|PB+zl@S3`sdF#cJtSUQ@3vZJE_-Y&`*xhn388k#3Jm$=W#n(>FVWq?3{sA z^{6c0D!ONp$q#4d{dP2$T}7h+t)|}8G|%Bi_&_%9AH-`zD^uh=u4k^L_Uf1LZ8Gix^E3{ zG$i5f3x1Yy0^iu$@Nt}V)bE<{ttvtjLi)x733-0Hmk15--wc(8B&Y_RhXMf4CfbHV zU!hFLhY7};<8tfxv-qlPKCuVMsjv77@}#eve+jbXwYas{&-O;^x>PCU6T?MH`n)9X z_z2ruboO@sie9WERV>1}h|Vu@p`g>&D}Iapn)W=~@?0RC0_fMBjW z?&2Zs-L?|nZjZ{+e_c*}UMGZJ@Zltv!>cKB!?*_D)Y|bqHihD}uS9B@RVI&+?Fi5; zAx8+U8LvMfCsz?4SWtO4TV#PiZbQ1`GPLJg%L{bqTalYLbecvqXb2nj^e|6(;lZ2Q zLpWaawj*dq9BTliLsOnN=(dpZ_#n$HK_ zr7g?^OVo#FT(d7FpRHA9qE7oSN*ekviD73;WD|$%o9#1j#C$@JgErMv&m|^gmyT|6 z$t?23s!Hvi_`}b%^N<&&Da!MQ&6_q^sD5#6*D7)f|RQ~v*8GwT#bj3Tk|is zl$o3m63E5Es#4_-PhzOXeTFAb@hLLgJ^Q6-k z@7@n*?vPEjg>!Fa1YHYwoAmJ`dUpajA>uY#>=;$ITD#R%$~7ZyoKch_1EwXJ8}%wJ ze9oEcNNtJVKY<{R7}W=~LUM%%I5fEHvr>CUN9n?ex8?FYPNv^k@$baGqPubW-(JX% zNg0=Rb*3FFm_ALJp?BVQ4ilmycYHr2=WlqF@-PTOsj#I@ZhG^S~8=X02w-(I!nJJo5O}5bZ4jnJ%$xXD4@RLL|7>Y z2Zw(XpVi`c=vs1%T-x1i1QF;AoCqhV9q&1gA*hg$gQa{R z@;D32(@ z{v9%e!Thmr4jRih4|i28x5f9LWWlWesqrzdlCAPA##IMb-SI?!i$pBus4rH7trkUh zi_FHWZ)5F17(b@WfMH;fg{gy%-@*#zg5w=sO7NI`Se)94e;U!+1bq`ab``0+n7?%r zw%Y{oF?mu~K;cJ|3zyb?UuJa3A-;au07Plk-Bu@LE#! z&S68UVn^CsDb)WA~#r&IA%=Tu1E^#qkZk*qlR%#_E!DgF67Y_2`Iy|dH8-MyeLv;kxV z$<5M;qP-UK?D_uuG%#$>JM`t=Vom}jHx-JJ0apyx7=GNk^#lH-$~aT4dL9M$XRZ)h zA{s2usJIN+wg^a+9BV}(|kL4 zJ$rR_6WruvhQ0*mv61hp20%Ded~NX7++ngSwl(_pMq`-U^l|@E9#+KP<56hBHc6E+{JMjCb6U=k&`E4pQO}ePSq(1thxTgn4~-m}E~}J0Bri{! z?EiJjjNaw0jE3h`te$iGvB}L?fwYVpW;yd@2JoFtp5BtkagGTQ{g|~<^Ki$0kB5Z2 za9&o-Hqo83sl2Bt6%i?J9=M%jouY=cu2hMIHpI^vG7IdyBsRGL4u?;=e9s@ z2WfDimuGS9czZ0*W)ykzV;(G1jBoWEee|!Dat}jm_c0X4F@H8Q{7K}#P1b##_byQQ zUtiqrS_DV71Qm7g9Xr$=xWrT2NaF6azHeP3Ltti&1_v9~{`F-}#@=jXvT3a$HG>hy zU1Y_zUz{+orBKpEJ+L`NS5{o2ST8_Ev=CTPVVvy%D~YLZIKKK!RSmCr?;bc&+^{c( zPkQ+=u=9=!n5T4ZZf-}p@llaLTlhv3{|ZFN;3w+R)ZQIKltS;#%&=@Z;@(4dclVuh z-vr1&gIN^hT4$CLq$OUMT;=D=`RA?s0s;a%caUeywfN@yaU2>_qrzo@UhDgI2O$B^ z)iSCy3t6o>hVreG6SpYdAljd*9o1*vA==r7%7v!ajQi-cjbF z@oCI|KCv=@*P1Yad~aWWZrocUTPvN0(T5ZCC`|H7UkYuAj9KkNml(U{UzD;sxP(QF zl{2;*UuuT3%(&n=@Ln4+dLcx`tIr#&paSZV*uMUl`hZcHs z_4%2V0V~6js;Xlm4tHu4Mtxd@cO;635-NRW)EB|iMLONL)=En*$_ZE6rA`!^ZKWo= z4TP@%JvS{$M>rh7*L;P5tS*tS z3z=GxQ7#J2Bo2tx=qM`K!Y?vn&!*=axl@{2XW$V7j&^>ZvT=JyIHw|myDQX|hr0lsx4bK9;pWNOmFnz_=RDJv- zLwS1pPH}mcgBFU^>g`aVEs)l2@z6gX6nDPZakt_3ti0h&Hp>E)r^h!uo01D2#Hwfa zWxs=FmVtzA#p&eTE#NdRpuLEWJ=|uKPqA@GZ@z*ucD;pwb#;7B5NK5xNwV3hzq9xe ziql?G1;_G>e3|`w2S>gX7B$0rb>5WUi{5QEafq=Qzd)R{>6~TvO^jb{K?QaW*@p511Y-y`o$#Q;>Q&Om#S(RKtWkm% zjXa+3mA`DVz(eogiD^%qG(%TDoCqti$-R_N=VAA)q42aZ24Cb)_ife+?;uP5XW?C||+o0T4Thn8g`HruC!eAmVJ-6>vKG1yYEG3;kUIMvvC%opHof2m_g@GLv zWl;o&Ue|(;(e<#HCV0Q?sXoz_1;MY-x0QUdgt*D@E<~gYWF!- z>^mtv=6^vA>(el`X%H2vMdsO`he}UHbR90KUnyJFl3xB8q4sH{>1x0!z_b3Q(EJ_e zZn?n3J>}?9dVK*Rk8TgAeSf_^( z&lqM_-maMaJGq!n$r}|8SsS}jfV0=*ppHt)px0NOur}sa=S8+4T#=`UebLt;okAQ^1t}Lp4apSEL$quZFvR@gI+vVOV0E* zQTlWgL{iKcVzv#R*q7pFj5C`jE1oD439H7%@IP3L51<~b@>_brZE?7E^GQ;rdIBU; z5zDg5p{F>`;Ii_TeJ%zLTdm&)z&9sqX*|1WILe-HYfwATM8 zhOipoPSfUWfv^GYlcs#Dp7^1c&W#I7M5KCC0RWTGj{xx(aPa_l^aF#*=9`i1EY_nu zGPnzOpdx~l)h2yE=f!Et_;Cr@^JgfS9RR>kGrBuA9$@yel)5@wQcdevb6w?*KHU2r zt$u$x@IoLL000D&(Q(}^nH?kt@{FnKxpA12=fPg&UlEEQ_u^vlGqS${zPMlnOE>oS zvPM>pH-d?@fWci>Hw%Ol^;T49+H?!cw^5GW-+@u$zB5}JZ7NYM3;#~U%Qe1-##Kpo z9%e*s%v2Tv0B8Zs*{5OSKXIR?w?GN<-BTNgf9K*(7z=7ewH3u0L-EvcPp?3(Kmh=N z+^7<`CMi<><8co(KFUiaVy1idj2GjtphDfSSqfUP+T}La$L(!@kv{=|for+BxdDSA zDk9m0*Hf1Gv-A9F$FZXJcM_w=yzds7NNmseu+Ex*TdXyI6z=(jhCO6l3o3j-wm(!A z{bOU1k3(gz>;(ekhk^f#I8K)$lw_7W|JIa_l7b6h=*A`Z~*xz6AX9LrAm?qYNrvxV^*q zf*=Sw%Ecdif0MBH8*9|{<0~RaHN~APLvi>PqUO3~4uxTmgfu7M6ispz{fFzds`{rN%RM3|0hd`^-173%V3mwP$z$^ehC#>I z(n>+(`51x-_>^*mhsJJhDaTV813^G@ebPqu+gKg_)g-AB0 zUl6hRi-}@$%G=LUinla8-kadlQw-C-WJHO46_cMZrzaj~H+bEI^$mPN)k~U=-OGhD zP~6El@E39h1@;YrfgbkdXCNxvM)$ZFj6i8JCX`>SrHc!&KC&`iH=<@>U|{j^;fo`c z)qt9ng~L6kZ^moHmUH-=Gi9ntSqh=!xj5}zv-Fo=u1&q+_ETPD;c2S{tr`Y|m^901 zp9zp0{g&88r`p@57naJc;se<3m3648!uavZiaO@2DI{BBP25g*%J7w-m+|)w9#WfwqycSjJkJDv~Vm3LX z0~aqZ!0!2OlU7?iM1vGJ!P1nKzR{4L^|=dC|2uKw}u`qyvY zOgu&^lBptyUw-=l3e5=rh(bwacDt%4q}7+OV(JWY6SaJMYmiXc^k2fm|JxH9$U9NW zI&s%qyftNtgO{(r*LftH+M%Xke)o#yzdL(3v1Vmz`rg;qcXlJ_Nj@uJ0zV0$hbuhN zjz-h}-QP_-weaQ3Gt9g4pB5q#A-}^`LeF>s_X2-_t*y~4)^wPQcU1%cfT{6Rz^SxdkixVU?7fR|!nYpzZN)4j<~k;NB9x)5$1ii<;5 z3!dAqcdDYw?qFuCIms0u2z?Mej@*$Q+xZ?8I`V>Cs1Qhts;)aRw5=Q~+K>{v4vMDO z4OJ^u&#V#L8dUs#iifXLu9ZIDOfjM^mpARy?lWxU9m-^{+--)&T*mc&9+lY%TeX^D z>>i&C5Jnm(W}oK&{#fMG$PSx*=>@8s(jN<$Q7`i@tScyk7pw{d<%r9c$eoEu{T6X9 zk47q%Tgq&4rDKFLVz3Er4R5llx7q@qbePQq2oDr7jxqLk^{d1vF&|V^eOgE%i(_m% z8zZUso)=1)OBrcrX(R15@-C_Eb{^Zq`uN2-AN*pUqpkb?%?pe+rZH_xb7Y{v_1>qo zvwz#DTkVc-a?t}_HRjqZvaCca!HwG8WvOb+)eEGfbwyMop`%$*Cm*sMGK ze8qmOROHOnwZXT)Cnj{<+p;8$3|Y$)MVz}VO6~v5-ws*Ysf{i=JH}ijYWOh*qDGRF zQnJ53$|NgR9rzl;Ro&CqikNEyJDXoJME)^b7~OwE!v<-cZsA*UkZ#t#SY@~AHE?u& z-hJ_Ux5VMNH)%}Z9{kWngwAGIg;<0KzLk|YGK$6SZzR}Ze-cl6!f!JDSL(cU?zzx2 zXSV#Q&!iQ$mO{(&3{Z??f5^^v9_9RPfx3e_#-ZjZ&?S*m7$98MyGW0-ec^D%?-kcb7q--huK&Ni6OYL5A!%z?eAj5LjtQ= zZGkiLaPB+eDd@ww2;pPGgLdYk$kF6(J3U@c7YiaB%0rNIdN1cY94ulHln$s*bMk4czVEQLO)Aul7ej)3OHz?VSQc z*YpY}EVM-sZ{wAg|CqCeKU99?y6xe0gsYm>SCC7tr6F`ah=?j_A&e?@WM-+Uat74N zG|vIy>v@u6)fPBU_9Zvzccr$9@9~rD%+IG-`2Z^!N#YiIb`&ubBF0$6>9lf8=-lt! zjt>cH4ObTTd*vyx9j8(t3p&#&%ihN|h20eU^mxPi#Fw!-=%jjZSXwc zwko2c70$fk=5>;zGbnN@Y%_xgK`qC(u64Y#B;s{{ByKP3%h8vQpPa8dXS%o2xfoHRYK0c)JsN03U05heSh-_@`TF5a zNgB1^ldk#B^z!fR{9^_DBGy@1*E9Oyftgq9Ck8w$vP_)kw2GKI$@u4gJLFQ~usS#Q zye{Ek8+W*{C?|Lq59BF_E?W1(xhq@5c4<38UH#cqb~k91F=xE;qa1CuoL;ZDy`Y5( zb9eVD#=XZ8h$5b5=;QzNV&|sLZ}5YHlX69vZ-hBRz4*NzM<7OGv9Cf@tv^oD4$o|s z?agvs#y_%(o;MQ69l_V#-#5Hy!5nbnTbB6tA-8$2+MD4gzVU*%tRh6Y1nR z_(m76aL?Zw33fiQT_MLl<-pTS1h*b^@Owl>p%dF1BJxiP`fwe#sdLd9Tu?kw7Sm0nHTgp(&X>BmWf zz&i^!rIgBj*;(KmBXqr%{3Y)#3xGdUzj(bC$WOS-iuV7B@c-{nI#}aVf-EcX`HoEJ zo?_(>Z42vnyv9e5m(~6wy+~-u;S{uhrDlgbjYnI+|pS17=1K z9v+4<-%VnJSx{(w?FIGi|B`|{_p&Xls%(NwK%-b2I{fGVDLJ6rv%2QG_#>;4(e?sS z42%d@b+1-cWE}Mh`cBjds`}vSeqT8E6#Vt(YtH^q`}t;y_3keH`gV_>SAhgCxHzik zwfn&c89&tWAaNEwQMh=9={G=2y4^EHyO?YER z`M?g4c;J>A^$^Hb?Cjp3Em`f=s$q-r8dJ^<7DVjU3El~-6e*K!ER;w3M0>2Mho^Q` z!IKc4eVFcv-nvE+>g(+G8A?}>fvcT&F=cJ8fgg)1U|&P(_)$Pret_>k&OxI#@PFo< zGCuy&foG<1EU4fY)c-L~dJwKK4Wi%rYNb6#>tn7CI57Nxj~6>A|9HRbkzxql(&Fc= zw8;uKrq_u!9C*%p*isMwhJ-p{&Z-@R%>_J9KiH1sQb1}H)ZKMywFa*Gy$<;**9&aS zU!vSQ#x?Ooxko&B{+)j zo<2|tc`B{nWLbB(13p+T&@KxLoWnSa{@z=k-9m4Oud4PNNVP=BPlsojyVzg7`N$_%T453&NGkF)Ras#+3oVc z35f?2@{oOf@x^5PZ<;O)L1csXf!zJuSsmtb$)_hu+L*5uNfQ+w1-MBD0U5;wx3-Zm+tDVkZYln_M-)T znPMS9J#kV}qRUeVC7wk(spNkXKHNgglDKb4W3D`dJksSH+RG?JqTIH#A z^=FfakGmpFyQ9o%Jx)5X&;H;DBtLIdP7!ZQ{qR&Y^Ye#-v#U4C)t8?zaHR(3ey4Xr z27KRN;f#1%Dfl%XgXnJ_hF-E9%QNJa9minVBIcYFOB6$$XZn# z(U(~3>l!f7^A|xURG{zo^=DmWS6UYq2~tZqF!U?tJo{#iDfc zOmZh@M7r;gurjs^EPaO;<6aZezT};K+`D!L3od_%5UjAsCJ)r%tM&M=^qWo%c5mf5 z6&i(n4|!e;iY_orq9xw;rAbSxYHm@V_7}7Sm@1sW>r@=-sueD{47azz78LL(^ zOvZ{rV4qidyIwh#mCOQ!6BE(dB^lM*KgX5lX!RXHcq9iU;wv`Xll;D}x?t@eRgk4M z?qVtg&lC;5Zww)uM`{tX-DgC4ZCs&+RmJMb?2Q}hG;sQGP5F4bCulJq&j1Y>0ckx3 z;M96oQN_S!MLiuI)54>B1)6wbyEUT#r$+yqGqdu(?Mb{I7>b)wUeFQ2&lVQGjX@mv z(+rZu6;oT3!($lNx(=b**U#&W!f($W zZ4>;s$Qwu@v`hbdNA;r$6Q}O1E<=>^1U7Nkxc>t|w10{)`ei)ahzyA|CTA~X^w=z9 z;JX))x$oCVWF|gg;3lQ}PgP{%hf*4xnyrM|-uESYWQZ9*!Q8%fZ+j{#k=LLAUp9zD zG(PW1Na%P(e-%ZzVI^u9V*i&t4_W`MaIs6RZ>gM_A039=`oV*`yTB7CsH$skB$Ru< zIRZ9ZP^VncYN~alj2SE$I1u1TP9fW>dBrFro_@Ve3} z6Kl}|PtR(a+mhVuhnxY#YpyHDSgj1t!abIaTcsxQ%ARHd9d8ppbj+E~S>wyX9f`I; zG(Y$umftQb%S*O@ED~42A5~xR@H9J@#mPO9-lU~|?934@V*IKqV>U5_nS=L-ySfK{ zvj6e;X-mp9USZF%ewDcIAKLpip!wvq=~PVXjFE|g^}cVLb26%hk5U2zCpq)w;~kAb zk75RP8=j-~j{TI&G-K)@pr~Vym(}4Xwawi_=#=yX(2O`ctkqfAzk6m4J>}p*t|sz1 z96$Tbxyd(B1uAFo8GWytmRAqGrPIM*htY-#;Eh|>qppx4bm}h*X=6q3P)=nx{Z!&dEdd2Qbt_$KW=2=w@_Y01e zCu)Bwfj*7<&+(;>bYzV+>5V!n2m?O9VTA$nwK@$R&sxo#mfE6F(IE5uOvI=13JYgV z7rZ(lhT}3ld3U0Bi)%cKEV%w=g=Ty=YY}QSbsX1b6=xpDzV@_C=NQ;rcPH8hJfVcnf3sbWGN3 zTVGXmRW(j93@?~Y%)E`t%&nLh#s9MwQKUGYDJhoQUK*AsA_%mUQ#(kCU-ETYE;+nm zVrwA)sdy*ozk*)T-}JXVNtCkE6vV)HT&jdJu((eY-|zSjgU6WU(GW)L+IFi4Vd-n)$@==sj(H<_WxVIY2<=!q~7!+7^+3Wlwx`L8Cd|N}BJG1~X zH?KTh1Xf^BMi>+@o;LKJ2MdgrlEh!pT?;qiKf1LeX&4mxHm25Qcp_%7q~sc1S$7Oq zYn>S%VKCD|EJCX6y)Frv_)_N64ezY%4RQS8qg=d+I0d+il7{`F@}nPJ^R2Sm$@;`9 zW>#&#eD2KbE)&F}EGs-l+J%^%I|UC$js|XY)Q*W~3ky|Xpru;FB@X3x zJY`L^8t>40Ui3m1&^@$Qg`mrvL-qPLhQkFOiBCQ3>a4+$1vH|4+92BHRf>!?=BL&Q z8E5+Xkd2K)+*OJM&Livlfw(!OcsUAmnMW2k7cK7#m3xA-t5+ua)DUG)(}+yseG-al zWoDbwhqdo5mnNFO&(FB%Hqkkrhv_@yjG@5u6he9b`3mZ|EKxZ30Fwz5#Wsv44=-X0 zk8GPt|&A?#_O)G!k;36a0|_ z&pTLd6iZFUY&}nBY;Dld5!SW$o!vVKRb@=nAr{HO8#EF9Vv1-YF zA#z@N&A?aBIfhL8$pcoRQ3&t$)GNVRv~?NkwZgJ*&==S^DDLjiVr9h0#PR-nGkX0c zX#yIQdOBHnBK)`SNSR+Gvw@*ua`!@MW(yBD_bf{gX;axv`!|ELA(sQ3r(inDlo$g4lONT+`o zh;$oI;8<@$z=(UP`hSMLUdfn>4Uc7k)3cy@chczLd>W;bT7~ig%TJV9LZP0bC@-jd zqK#KYtT9WO3jqm#(K9eO^wHDREv|Pab*6dQ%D1GgOxFO{)zWDXSg?4{P=w2xr)Hz= zjHjmNtM>MG3tL;5vCH@s*9zeK-&qjdSmiOvX_^w2>>YOd2mGO;+Na4lZG5oE&7eZ| zA7I1jDM2o1>C=ld*K6i`UV4QMz5OlCql#7afQE`gIeAK0<(>iC;$mV)cT3Vo8BR8H6&itzPXhoub(kqw-ktFrv>V^&4=^vK5rPp!a0 zt{>nygIU3O*;`v1-+)s>nF%fH8G$^3toKBimgHWWEfqUN64d~tL4Ykc8(T592MMg_ z&Rf4U^8lWwszL2+Nr){}W=Y69>6l*F{ET@R^;OVbGZi#;mdp|@T;}H$9pED8HY(%T zy~%&vNgQgv!Xh$gRzR1T#AxXCh(8mc7IH5LXKw{Qj~>|z3yZy0m>ljNHBJp#9d8+2C(%z4uUQJ>hFj}&Kzl89p^P`xY z8nhBigoPgc6MiH_s^Z#{UejP_nv#sbIyIr=RD8nyapR+F#y?t004kN z`|%@V0D#gI0H6@KOhdkt?bs$FR43A%+fkFRuXsJS z@C5*_e){{PNE5!w0RTwTYClqi1ljB?(j`5ahHvaksBOOHjiyS!#&|_LzyAl1e80$# zHN-FWpTKV2hXWpNZ<*d4?atj`mM`NCh?+GpuJ;Cd33(&ks;W)C#5^4-q>ppmpJUTS zpn53}s#GXn$0ohKn>2Rmb!^>*Je(v^GP*Di4_*JFx7@L82z71oT<(B}N={z9C!H?) zh9=C&lI5hIEBz@<{-=3uOBNe^Es7ZcP*J^1o-BZx$D9HH07d`5{-9{XN#BR_#YS>kqTJ{6(A<*)c9c!VVi0=tBeGCLWt@Nb;5ULSYn8%H@G`tUZ>3X~WXYBp=9 z@HM|?;%_lAc!=`zj6OG@%&GXbcV8W03$29{0va8MSV)&11pjdeT=4E|wog=?iRV^U zvbZF`dSSV@+_?-p-d)7K9B2zZSSYusO_q}5=uA<0E=&j=2BX8O=IWeN=9_&>-YbSS zbOIKg<{R9J59~kFH`;bZIXFN65qLu&??HPXeZ7th7KeS>{vywR#-i;-A!cjCN_pcf zcy<(C^0!e*O>!Qsk*8CssxrOA^Dlbol#9CmX~Qoabs&Ew)vBbkk3NIkN~#wf zp{`7&0^QuOR>q&5?n#p8wKhAjcfSW!)1{-uuAlYbZZkC`HoNQSVA=U3hpI)rq~pKd zq#s9)ueo=~4m*a(?A-A^fQX8qoDtr*3 zi1}=fz4Zs_GKvhmaJQa)ph8~WmhNL~!=|m2jV9KJ`ui3S&hMSo8#Wo*c!&C6WU;&O zFR_~N-u}6R^;QO?j-Pd!@FMNC^05X*&yLlG_JIDygHQMHBS-R!qKxeeq2oK;?%!7T zXk*?$%kIhIlxL!*?TK>YpfGyYq)J+%hX5!O( zoL+Dffr`zY$MvMDrF28NhDLLD@8!t%R{x!Aa{z>vv*~VoA zfzv~)Zn=dG+S2WKEZ5^Wwo;b)HvzY*g)#9B&2SdT4p0)7PV z#`!Aagguw%f3q?WZUg(3gU>h^u-KG^KPj^d@%YZ{1s(iryrK7UQ@}GHOg5T$Q@0nG z1
  • ykK4UfmPa8Itff{eNXg%AL>RRE+BP4pFG+&9?tr%s_$mc=lyAXQ6LC1zXmRy zsIt|gcywroeWTPC-~BQg&piFR0{&il>+mcf1&pdfCOMAExc}K|CtRDf2l+jM)psDS zx@#rY?`($eGJprkz@{|uc!9YUYjvK=^>v&`imyo*_){6Od z;m3lVVrtzAtgU_5#WG-qh9xZ=+l+`=sZ&4G!#B+389<@{3usN)0OxE`te`>v4wa8TwR=?yqXKe&c_u zOIDYq^3?^$g9Jm5qnp!{C*}wt1O`Vs&1yiyRI)PyE*8wn-YR`uG4m~QuY@>=dayV4sKh5kM8 zagCwwmEIGn$3YS4C!y&1V_C$k_(zLtS1 dlSu>M>?dADnzwZu`moW}C;n%jB!k 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 1.43.0 < 2" - } - }, - "compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "requires": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "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 - }, - "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": { - "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" - } - }, - "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-compat": { - "version": "3.26.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.26.0.tgz", - "integrity": "sha512-piOX9Go+Z4f9ZiBFLnZ5VrOpBl0h7IGCkiFUN11QTe6LjAvOT3ifL/5TdoizMh99hcGy5SoLyWbapIY/PIb/3A==", - "dev": true, - "requires": { - "browserslist": "^4.21.4" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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 - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.2.tgz", - "integrity": "sha512-Vm4b6P/PifADu0a76H0DKRNVWq3Rq9xa/Nx6oEMUBJlwTUuZoZ3dkZxo8Gob3UEL53Cq+Ma1GBgISed6XEBs3w==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "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": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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 - }, - "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 - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-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" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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 - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.2.0.tgz", - "integrity": "sha512-OcFpBrIhnbmb9wfI8cqPSJ50pv3Wg4/NSgoZIqHzIwO/2a9qivJWzv8hUvaREIMYYJBas6AvfXATFdVuzzCqVw==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "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 - }, - "karma": { - "version": "6.4.1", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.1.tgz", - "integrity": "sha512-Cj57NKOskK7wtFWSlMvZf459iX+kpYIPXmkNUzP2WAFcA7nhr/ALn5R7sw3w+1udFDcpMx/tuB8d5amgm3ijaA==", - "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": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "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" - } - } - } - }, - "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 - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - } - }, - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.9", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.9.tgz", - "integrity": "sha512-3rm8kbrzpUGRyPKSGuk387NZOwQ90O4rI9tsWQkzNW7BLSnKGp23RsEsKK8N8QVCrtJoAMqy3spxHC4os4G6PQ==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": { - "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" - } - }, - "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": "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" - }, - "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" - } - } - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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": { - "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", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", - "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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": 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 - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", - "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 - }, - "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 - }, - "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 - }, - "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 - }, - "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 - }, - "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 - }, - "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 - }, - "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 - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - }, - "dependencies": { - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - } - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "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" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "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": { - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.1.tgz", - "integrity": "sha512-HrnlNtpvqP1Xkb28tMhBUO2EbyUHdQlsnlAhzWcwHy8WJR53UWr7/MAvqrsQKMbV4qdpv03oTMG8iIhfsPFktQ==", - "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.0.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 - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "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-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "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 - } - } - }, - "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 - }, - "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.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" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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 - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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 - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "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" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "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", - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "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", - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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": { - "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" - } - }, - "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": { - "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" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.10.0.tgz", - "integrity": "sha512-+s49uSmZpvtAsd2h37vIPy1RBusaLawVe8of+GyEPsaJTCMpj/2v8NpeK1SHXjBlQ95lQTmQofOJnFiLoaN3yw==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.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 - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/package.json b/1-Authentication/2-sign-in-b2c/SPA/package.json deleted file mode 100644 index 510de899..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.1.0", - "@angular/cdk": "^14.2.6", - "@angular/common": "^14.1.0", - "@angular/compiler": "^14.1.0", - "@angular/core": "^14.1.0", - "@angular/forms": "^14.1.0", - "@angular/material": "^14.2.6", - "@angular/platform-browser": "^14.1.0", - "@angular/platform-browser-dynamic": "^14.1.0", - "@angular/router": "^14.1.0", - "@azure/msal-angular": "^2.4.5", - "@azure/msal-browser": "^2.30.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.2", - "@angular/cli": "~14.1.2", - "@angular/compiler-cli": "^14.1.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.2.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.0.0", - "typescript": "~4.7.2" - } -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/app-routing.module.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 8269e8a1..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { GuardedComponent } from './guarded/guarded.component'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'guarded', - component: GuardedComponent, - canActivate: [ - MsalGuard - ] - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.css b/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.css deleted file mode 100644 index 14786d86..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.html b/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.html deleted file mode 100644 index 6fbeea70..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.html +++ /dev/null @@ -1,25 +0,0 @@ - - {{ title }} - -
    - - Guarded Page - - - - -
    -
    - - -
    - - diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.ts deleted file mode 100644 index 968247cf..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.component.ts +++ /dev/null @@ -1,203 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { IdTokenClaims, PromptValue } from '@azure/msal-common'; -import { AccountInfo, AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest, SsoSilentRequest } from '@azure/msal-browser'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { b2cPolicies } from './auth-config'; - -type IdTokenClaimsWithPolicyId = IdTokenClaims & { - acr?: string, - tfp?: string, -}; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS - || msg.eventType === EventType.ACQUIRE_TOKEN_SUCCESS - || msg.eventType === EventType.SSO_SILENT_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - - let payload = result.payload as AuthenticationResult; - let idtoken = payload.idTokenClaims as IdTokenClaimsWithPolicyId; - - if (idtoken.acr === b2cPolicies.names.signUpSignIn || idtoken.tfp === b2cPolicies.names.signUpSignIn) { - this.authService.instance.setActiveAccount(payload.account); - } - - /** - * For the purpose of setting an active account for UI update, we want to consider only the auth response resulting - * from SUSI flow. "acr" claim in the id token tells us the policy (NOTE: newer policies may use the "tfp" claim instead). - * To learn more about B2C tokens, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview - */ - if (idtoken.acr === b2cPolicies.names.editProfile || idtoken.tfp === b2cPolicies.names.editProfile) { - - // retrieve the account from initial sing-in to the app - const originalSignInAccount = this.authService.instance.getAllAccounts() - .find((account: AccountInfo) => - account.idTokenClaims?.oid === idtoken.oid - && account.idTokenClaims?.sub === idtoken.sub - && ((account.idTokenClaims as IdTokenClaimsWithPolicyId).acr === b2cPolicies.names.signUpSignIn - || (account.idTokenClaims as IdTokenClaimsWithPolicyId).tfp === b2cPolicies.names.signUpSignIn) - ); - - let signUpSignInFlowRequest: SsoSilentRequest = { - authority: b2cPolicies.authorities.signUpSignIn.authority, - account: originalSignInAccount - }; - - // silently login again with the signUpSignIn policy - this.authService.ssoSilent(signUpSignInFlowRequest); - } - - /** - * Below we are checking if the user is returning from the reset password flow. - * If so, we will ask the user to reauthenticate with their new password. - * If you do not want this behavior and prefer your users to stay signed in instead, - * you can replace the code below with the same pattern used for handling the return from - * profile edit flow (see above ln. 74-92). - */ - if (idtoken.acr === b2cPolicies.names.resetPassword || idtoken.tfp === b2cPolicies.names.resetPassword) { - let signUpSignInFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.signUpSignIn.authority, - prompt: PromptValue.LOGIN, // force user to reauthenticate with their new password - scopes: [] - }; - - this.login(signUpSignInFlowRequest); - } - - return result; - }); - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // Checking for the forgot password error. Learn more about B2C error codes at - // https://learn.microsoft.com/azure/active-directory-b2c/error-codes - if (result.error && result.error.message.indexOf('AADB2C90118') > -1) { - let resetPasswordFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.resetPassword.authority, - scopes: [], - }; - - this.login(resetPasswordFlowRequest); - }; - }); - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login(userFlowRequest?: RedirectRequest | PopupRequest) { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup(userFlowRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(userFlowRequest); - } - } - } - - logout() { - this.authService.logout(); - } - - editProfile() { - let editProfileFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.editProfile.authority, - scopes: [], - }; - - this.login(editProfileFlowRequest); - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.module.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/app.module.ts deleted file mode 100644 index 7d2f9982..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/app.module.ts +++ /dev/null @@ -1,79 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; -import { HttpClientModule } from '@angular/common/http'; - -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalGuard, MsalBroadcastService, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MsalGuardConfiguration, MsalRedirectComponent, MsalModule -} from '@azure/msal-angular'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatCardModule } from '@angular/material/card'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTableModule } from '@angular/material/table' - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; - -import { loginRequest, msalConfig } from './auth-config'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatCardModule, - MatIconModule, - MatTableModule, - HttpClientModule, - FormsModule, - MsalModule - ], - providers: [ - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - MsalService, - MsalGuard, - MsalBroadcastService - ], - bootstrap: [AppComponent, MsalRedirectComponent], -}) -export class AppModule { } diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/auth-config.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/auth-config.ts deleted file mode 100644 index dfb0b593..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,89 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Enter here the user flows and custom policies for your B2C application, - * To learn more about user flows, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview - * To learn more about custom policies, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview - */ -export const b2cPolicies = { - names: { - signUpSignIn: 'B2C_1_susi_v2', - resetPassword: 'B2C_1_reset_v3', - editProfile: 'B2C_1_edit_profile_v2', - }, - authorities: { - signUpSignIn: { - authority: 'https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_susi_v2', - }, - resetPassword: { - authority: 'https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/B2C_1_reset_v3', - }, - editProfile: { - authority: 'https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_edit_profile_v2', - }, - }, - authorityDomain: 'fabrikamb2c.b2clogin.com', -}; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: b2cPolicies.authorities.signUpSignIn.authority, // Defaults to "https://login.microsoftonline.com/common" - knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted. - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Scopes you add here will be prompted for user consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest = { - scopes: [] -} - -/** - * An optional silentRequest object can be used to achieve silent SSO - * between applications by providing a "loginHint" property (such as a username). For more, visit: - * https://learn.microsoft.com/en-us/azure/active-directory/develop/msal-js-sso#sso-between-different-apps - * If you do not receive the username claim in ID tokens, see also: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/FAQ.md#why-is-getaccountbyusername-returning-null-even-though-im-signed-in - */ -export const silentRequest = { - scopes: [], - loginHint: "example@domain.net" -}; diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/claim-utils.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/claim-utils.ts deleted file mode 100644 index 231ad388..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/claim-utils.ts +++ /dev/null @@ -1,189 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.css b/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.css deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.html b/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.html deleted file mode 100644 index 6a5e109e..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.html +++ /dev/null @@ -1 +0,0 @@ -

    This component is guarded. You can see this because you're signed-in.

    diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.ts deleted file mode 100644 index 5720775b..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/guarded/guarded.component.ts +++ /dev/null @@ -1,15 +0,0 @@ -import { Component, OnInit } from '@angular/core'; - -@Component({ - selector: 'app-guarded', - templateUrl: './guarded.component.html', - styleUrls: ['./guarded.component.css'] -}) -export class GuardedComponent implements OnInit { - - constructor() { } - - ngOnInit(): void { - } - -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.css b/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.css deleted file mode 100644 index 17b43f0e..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,25 +0,0 @@ -#table-container { - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.html b/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.html deleted file mode 100644 index b752c714..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD B2C and get an ID Token - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and protect a route. - - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    - - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    -
    diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.ts deleted file mode 100644 index 6f697c96..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { filter } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/app/sample.spec.ts b/1-Authentication/2-sign-in-b2c/SPA/src/app/sample.spec.ts deleted file mode 100644 index b4f5c93c..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,109 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(true); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/guarded')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/assets/.gitkeep b/1-Authentication/2-sign-in-b2c/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.prod.ts b/1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.ts b/1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/favicon.svg b/1-Authentication/2-sign-in-b2c/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/index.html b/1-Authentication/2-sign-in-b2c/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/main.ts b/1-Authentication/2-sign-in-b2c/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/polyfills.ts b/1-Authentication/2-sign-in-b2c/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/styles.css b/1-Authentication/2-sign-in-b2c/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/1-Authentication/2-sign-in-b2c/SPA/src/test.ts b/1-Authentication/2-sign-in-b2c/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/1-Authentication/2-sign-in-b2c/SPA/tsconfig.app.json b/1-Authentication/2-sign-in-b2c/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/tsconfig.json b/1-Authentication/2-sign-in-b2c/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/1-Authentication/2-sign-in-b2c/SPA/tsconfig.spec.json b/1-Authentication/2-sign-in-b2c/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/1-Authentication/2-sign-in-b2c/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/2-Authorization-I/1-call-graph/AppCreationScripts/AppCreationScripts.md b/2-Authorization-I/1-call-graph/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/2-Authorization-I/1-call-graph/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/2-Authorization-I/1-call-graph/AppCreationScripts/Cleanup.ps1 b/2-Authorization-I/1-call-graph/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index 8f2eda48..00000000 --- a/2-Authorization-I/1-call-graph/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,152 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'spa' (msal-angular-spa) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-angular-spa'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-angular-spa'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-angular-spa) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-angular-spa'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-angular-spa.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-angular-spa'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-angular-spa'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/2-Authorization-I/1-call-graph/AppCreationScripts/Configure.ps1 b/2-Authorization-I/1-call-graph/AppCreationScripts/Configure.ps1 deleted file mode 100644 index ce838c89..00000000 --- a/2-Authorization-I/1-call-graph/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,354 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -# Adds the requiredAccesses (expressed as a pipe separated string) to the requiredAccess structure -# The exposed permissions are in the $exposedPermissions collection, and the type of permission (Scope | Role) is -# described in $permissionType -Function AddResourcePermission($requiredAccess, ` - $exposedPermissions, [string]$requiredAccesses, [string]$permissionType) -{ - foreach($permission in $requiredAccesses.Trim().Split("|")) - { - foreach($exposedPermission in $exposedPermissions) - { - if ($exposedPermission.Value -eq $permission) - { - $resourceAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess - $resourceAccess.Type = $permissionType # Scope = Delegated permissions | Role = Application permissions - $resourceAccess.Id = $exposedPermission.Id # Read directory data - $requiredAccess.ResourceAccess += $resourceAccess - } - } - } -} - -# -# Example: GetRequiredPermissions "Microsoft Graph" "Graph.Read|User.Read" -# See also: http://stackoverflow.com/questions/42164581/how-to-configure-a-new-azure-ad-application-through-powershell -Function GetRequiredPermissions([string] $applicationDisplayName, [string] $requiredDelegatedPermissions, [string]$requiredApplicationPermissions, $servicePrincipal) -{ - # If we are passed the service principal we use it directly, otherwise we find it from the display name (which might not be unique) - if ($servicePrincipal) - { - $sp = $servicePrincipal - } - else - { - $sp = Get-MgServicePrincipal -Filter "DisplayName eq '$applicationDisplayName'" - } - $appid = $sp.AppId - $requiredAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess - $requiredAccess.ResourceAppId = $appid - $requiredAccess.ResourceAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess] - - # $sp.Oauth2Permissions | Select Id,AdminConsentDisplayName,Value: To see the list of all the Delegated permissions for the application: - if ($requiredDelegatedPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.Oauth2PermissionScopes -requiredAccesses $requiredDelegatedPermissions -permissionType "Scope" - } - - # $sp.AppRoles | Select Id,AdminConsentDisplayName,Value: To see the list of all the Application permissions for the application - if ($requiredApplicationPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.AppRoles -requiredAccesses $requiredApplicationPermissions -permissionType "Role" - } - return $requiredAccess -} - - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - - -<#.Description - This function takes a string as input and creates an instance of an Optional claim object -#> -Function CreateOptionalClaim([string] $name) -{ - <#.Description - This function creates a new Azure AD optional claims with default and provided values - #> - - $appClaim = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim - $appClaim.AdditionalProperties = New-Object System.Collections.Generic.List[string] - $appClaim.Source = $null - $appClaim.Essential = $false - $appClaim.Name = $name - return $appClaim -} - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the spa AAD application - Write-Host "Creating the AAD application (msal-angular-spa)" - # create the application - $spaAadApplication = New-MgApplication -DisplayName "msal-angular-spa" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200/", "http://localhost:4200/auth"; ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - $currentAppId = $spaAadApplication.AppId - $currentAppObjectId = $spaAadApplication.Id - - $tenantName = (Get-MgApplication -ApplicationId $currentAppObjectId).PublisherDomain - #Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @("https://$tenantName/msal-angular-spa") - - # create the service principal of the newly created application - $spaServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($spaServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "acct" - $optionalClaims.IdToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - Write-Host "Done creating the spa application (msal-angular-spa)" - - # URL of the AAD application in the Azure portal - # Future? $spaPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $spaPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "spa$currentAppIdmsal-angular-spa" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'spa' to 'Microsoft Graph') - Write-Host "Getting access from 'spa' to 'Microsoft Graph'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "Microsoft Graph"` - -requiredDelegatedPermissions "User.Read|Contacts.Read" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'Microsoft Graph' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-angular-spa' at `n $spaPortalUrl" -ForegroundColor Green - - # Update config file for 'spa' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $spaAadApplication.AppId;"Enter_the_Tenant_Info_Here" = $tenantId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host "- App spa - created at $spaPortalUrl" - - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/AppCreationScripts/sample.json b/2-Authorization-I/1-call-graph/AppCreationScripts/sample.json deleted file mode 100644 index 39246f33..00000000 --- a/2-Authorization-I/1-call-graph/AppCreationScripts/sample.json +++ /dev/null @@ -1,52 +0,0 @@ -{ - "Sample": { - "Title": "A Javascript Angular single-page application using MSAL Angular to sign-in users with Azure AD and call the Microsoft Graph Api", - "Level": 100, - "Client": "Angular SPA", - "Service": "Microsoft Graph", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Platform": "Javascript", - "Languages": ["javascript", "angular"], - "Products": ["azure-active-directory", "ms-graph", "msal-angular"], - "description": "This sample demonstrates an Angular single-page application (SPA) that uses Microsoft Authentication Library for Angular (MSAL Angular) to sign-in users with Azure Active Directory (Azure AD) and calls Microsoft Graph Api" - }, - "AADApps": [ - { - "Id": "spa", - "Name": "msal-angular-spa", - "Kind": "SinglePageApplication", - "SDK": "MsalAngular", - "HomePage": "http://localhost:4200/", - "ReplyUrls": "http://localhost:4200/, http://localhost:4200/auth", - "Audience": "AzureADMyOrg", - "SampleSubPath": "2-Authorization-I\\1-call-graph", - "RequiredResourcesAccess": [ - { - "Resource": "Microsoft Graph", - "DelegatedPermissions": ["User.Read", "Contacts.Read"] - } - ], - "OptionalClaims": { - "IdTokenClaims": ["acct"] - } - } - ], - "CodeConfiguration": [ - { - "App": "spa", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantId" - } - ] - } - ] -} \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/README.md b/2-Authorization-I/1-call-graph/README.md deleted file mode 100644 index 5dbb99a0..00000000 --- a/2-Authorization-I/1-call-graph/README.md +++ /dev/null @@ -1,436 +0,0 @@ ---- -page_type: sample -extensions: - services: ms-identity - platform: javascript -languages: - - javascript -products: - - azure-active-directory - - ms-graph - - msal-angular - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-graph -description: This sample demonstrates an Angular single-page application (SPA) that uses Microsoft Authentication Library for Angular (MSAL Angular) to sign-in users with Azure Active Directory (Azure AD) and calls Microsoft Graph API ---- - -# Angular single-page application using MSAL Angular to sign-in users with Azure AD and call the Microsoft Graph API - -* [Overview](#overview) -* [Scenario](#scenario) -* [Contents](#contents) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Next Steps](#next-steps) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with Azure Active Directory (Azure AD) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). In addition, this sample also demonstrates how to use [Microsoft Graph JavaScript SDK](https://github.com/microsoftgraph/msgraph-sdk-javascript) client with MSAL as a custom authentication provider to call the Graph API on behalf of a user. - -> :information_source: Note that you are not required to implement a custom provider, as the v3.0 of the SDK offers a [default provider](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/AuthCodeMSALBrowserAuthenticationProvider.md) that implements MSAL.js. - -Here you'll learn about [Access Tokens](https://aka.ms/access-tokens), [acquiring a token](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-acquire-token), [calling a protected web API](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-call-api), as well as [Dynamic Scopes and Incremental Consent](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent), **silent token acquisition**, **working with multiple resources** and more. - -> :information_source: See the community call: [An introduction to Microsoft Graph for developers](https://www.youtube.com/watch?v=EBbnpFdB92A) - -> :information_source: See the community call: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -## Scenario - -1. The client Angular SPA uses the Microsoft Authentication Library (MSAL) to sign-in a user with **Azure AD** and obtain a JWT access token for Ms Graph API. -1. The access token is used as a *bearer* token to authorize the user to call the Microsoft Graph Api. - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-----------------------------------------------------------|-----------------------------------------------------------------------| -| `src/app/auth-config.ts` | Authentication configuration parameters reside here. | -| `src/app/app.module.ts` | MSAL-Angular configuration parameters reside here. | -| `src/app/app-routing.module.ts` | Configure your MSAL-Guard here. | -| `src/app/graph.service.ts` | Class to call graph API. | -| `src/app/account-switch/account-switch.component.ts` | Contains logic to handle multiple account selection with MSAL.js. | - - -## Prerequisites - -* [Node.js](https://nodejs.org/en/download/) must be installed to run this sample. -* [Visual Studio Code](https://code.visualstudio.com/download) is recommended for running and editing this sample. -* [VS Code Azure Tools](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack) extension is recommended for interacting with Azure through VS Code Interface. -* A modern web browser. This sample uses **ES6** conventions and will not run on **Internet Explorer**. -* [Angular-CLI](https://cli.angular.io/) must be installed **globally** to run this sample. -* An **Azure AD** tenant. For more information, see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/test-setup-environment#get-a-test-tenant) -* A user account in your **Azure AD** tenant. This sample will not work with a **personal Microsoft account**. If you're signed in to the [Azure portal](https://portal.azure.com) with a personal Microsoft account and have not created a user account in your directory before, you will need to create one before proceeding. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2: Install project dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 2-Authorization-I/1-call-graph/SPA - npm install -``` - -### Step 3: Register the sample application(s) in your tenant - -There is one project in this sample. To register it, you can: - -* follow the steps below for manually register your apps -* or use PowerShell scripts that: - * **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - * modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Choose the Azure AD tenant where you want to create your applications - -To manually register the apps, as a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -#### Register the spa app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200/` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then, - 1. Ensure that the **Microsoft APIs** tab is selected. - 1. In the *Commonly used Microsoft APIs* section, select **Microsoft Graph** - * Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is requested by apps when signing-in users. - 1. In the **Delegated permissions** section, select the **User.Read**, **Contacts.Read** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **ID**. - 1. Select the optional claim **acct**. This claim provides user's account status in tenant. If the user is a member of the tenant, the value is 0. If they're a guest, the value is 1. - 1. Select **Add** to save your changes. - -##### Configure the spa app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant/directory ID. - -### Step 4: Running the sample - -From your shell or command line, execute the following commands: - -```console - cd 2-Authorization-I/1-call-graph/SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Click the **sign-in** button on the top right corner. -1. Once you authenticate, click the **Profile** button on the navigation bar.This will make a call to the Graph API -1. click the **Contacts** button on the navigation bar. This will make a call to the Graph API.(:warning: the user needs to have an Office subscription for this call to work). - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -## We'd love your feedback - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -
    - Expand for troubleshooting info - -> * Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `angular` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). -
    - -## About the code - -### Protected resources and scopes - -In order to access a protected resource (a web APis ike MS Graph usually) on behalf of a signed-in user, the app needs to present a valid **Access Token** to that resource owner (in this case, Microsoft Graph). **Access Token** requests to Azure AD in **MSAL** are meant to be *per-resource-per-scope(s)*. This means that an **Access Token** requested for resource **A** with scope `User.Read`: - -* cannot be used for accessing resource **A** API that expects a different scope, like `files.Read`, and, -* cannot be used for accessing resources in any other API, like **B** with any scope. - -The intended recipient of an **Access Token** is represented by the `aud` claim (in this case, it should be the Microsoft Graph API's App ID); in case the value for the `aud` claim does not mach the resource **APP ID URI**, the token will be considered invalid. Likewise, the permissions that an **Access Token** grants is represented by the `scp` claim (Delegated Permissions) and `roles` claim (App permissions). See [Access Token claims](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#payload-claims) for more information. - -MSAL Angular provides the `MsalInterceptor` for obtaining Access tokens for resources (MS Graph) and adding them to HTTP requests as *authorization* header. The `protectedResourceMap` is part of the `MsalInterceptorConfiguration` object, initialized in [app.module.ts](./SPA/src/app/app.module.ts). - -```typescript -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map>(); - - protectedResourceMap.set("https://graph.microsoft.com/v1.0/me", ["User.Read"]); - - return { - interactionType: InteractionType.Redirect, - protectedResourceMap - }; -} -``` - -See for more: [FAQ: Using the protectedResourceMap](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/FAQ.md#how-do-i-add-tokens-to-api-calls) - -### Acquire a Token - -Setting `protectedResourceMap` at app initialization takes care of acquiring tokens and attaching them to HTTP requests. Simply call your API using a HTTP client and MSAL Angular will handle attaching tokens to your call. - -```typescript -export class ProfileComponent implements OnInit { - profile!: ProfileType; - - constructor( - private http: HttpClient - ) { } - - ngOnInit() { - this.getProfile(); - } - - getProfile() { - this.http.get("https://graph.microsoft.com/v1.0/me") - .subscribe((profile: ProfileType) => { - console.log(profile); - }); - } -} -``` - -Alternatively, you can also explicitly acquire Access tokens using the *acquireToken* APIs. **MSAL.js** exposes 3 APIs for acquiring a token: `acquireTokenPopup()`, `acquireTokenRedirect()` and `acquireTokenSilent()`. For more information about *acquireToken* APIs please check the following [Acquiring and Using an Access Token](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/acquire-token.md) - -> :information_source: When using `acquireTokenRedirect`, you may want to set `navigateToLoginRequestUrl` in [msalConfig](./SPA/src/authConfig.js) to **true** if you wish to return back to the page where *acquireTokenRedirect* was called. - -### Working with multiple resources - -When you have to access multiple resources, initiate a separate token request for each: - - ```javascript - // "User.Read" stands as shorthand for "graph.microsoft.com/User.Read" - const graphToken = await msalInstance.acquireTokenSilent({ - scopes: [ "User.Read" ] - }); - const customApiToken = await msalInstance.acquireTokenSilent({ - scopes: [ "api:///My.Scope" ] - }); - ``` - -Bear in mind that you *can* request multiple scopes for the same resource (e.g. `User.Read`, `User.Write` and `Calendar.Read` for **MS Graph API**). - - ```javascript - const graphToken = await msalInstance.acquireTokenSilent({ - scopes: [ "User.Read", "User.Write", "Calendar.Read"] // all MS Graph API scopes - }); - ``` - -For more information, see: [Resources and Scopes](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md) - -### Handle Continuous Access Evaluation (CAE) challenge from Microsoft Graph - -Continuous access evaluation (CAE) enables applications to do just-in time token validation, for instance enforcing user session revocation in the case of password change/reset but there are other benefits. For details, see [Continuous access evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - -Microsoft Graph is now CAE-enabled. This means that it can ask its client apps for more claims when conditional access policies require it. Your can enable your application to be ready to consume CAE-enabled APIs by: - -1. Declaring that the client app is capable of handling [claims challenges](https://aka.ms/claimschallenge). -2. Processing the claim challenge when they are thrown by MS Graph Api. - -#### Declare the CAE capability in the configuration - -This sample app declares that it's CAE-capable by adding the `clientCapabilities` property in the configuration in `auth-config.ts`: - -```javascript - const msalConfig = { - auth: { - clientId: 'Enter_the_Application_Id_Here', - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', - redirectUri: "/", - postLogoutRedirectUri: "/", - navigateToLoginRequestUrl: true, - clientCapabilities: ["CP1"] // this lets the resource owner (MS Graph) know that this client is capable of handling claims challenge. - } - } - - const msalInstance = new PublicClientApplication(msalConfig); -``` - -#### Processing the CAE challenge from Microsoft Graph - -Once the client app receives the CAE claims challenge from Microsoft Graph, it needs to proces the challenge and redirect the user back to Azure AD for further processing. To do so, we use MSAL's `acquireToken` API and provide the claims challenge as a parameter in the token request. This is shown in [graph.service.ts](../SPA/src/app/graph.service.ts), where we handle the response from the Microsoft Graph API with the `handleClaimsChallenge` method: - -```typescript - handleClaimsChallenge(response: any, providerOptions: ProviderOptions): void { - const authenticateHeader: string = response.headers.get('www-authenticate'); - const claimsChallengeMap: any = this.parseChallenges(authenticateHeader); - let account: AccountInfo = this.authService.instance.getActiveAccount()!; - addClaimsToStorage( - claimsChallengeMap.claims, - `cc.${msalConfig.auth.clientId}.${account?.idTokenClaims?.oid}.${ - new URL(providerOptions.endpoint).hostname - }` - ); - - new MsalAuthenticationProvider(providerOptions, this.authService).getAccessToken() - } - - parseChallenges(header: string): T { - const schemeSeparator = header.indexOf(' '); - const challenges = header.substring(schemeSeparator + 1).split(','); - const challengeMap = {} as any; - - challenges.forEach((challenge: string) => { - const [key, value] = challenge.split('='); - challengeMap[key.trim()] = window.decodeURI(value.replace(/['"]+/g, '')); - }); - - return challengeMap; - } -``` - -After that, we require a new access token via the `MsalAuthenticationProvider` Class, fetch the claims challenge from the browser's localStorage, and pass it to the `acquireToken` API in the request parameter. This is shown in [graph.service.ts](../SPA/src/app/graph.service.ts) - -### Access Token validation - -Clients should treat access tokens as opaque strings, as the contents of the token are intended for the **resource only** (such as a web API or Microsoft Graph). For validation and debugging purposes, developers can decode **JWT**s (*JSON Web Tokens*) using a site like [jwt.ms](https://jwt.ms). - -### Calling the Microsoft Graph API - -[Microsoft Graph JavaScript SDK](https://github.com/microsoftgraph/msgraph-sdk-javascript) provides various utility methods to query the Graph API. While the SDK has a default *authentication provider* that can be used in basic scenarios, it can also be extended to use with a custom authentication provider such as the MSAL SDK. To do so, we will initialize the Graph SDK client with [clientOptions](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CreatingClientInstance.md) method, which contains an `authProvider` object of class **MyAuthenticationProvider** that handles the token acquisition process for the client. We offer this as a service to other components as shown below: - -```typescript -export class GraphService { - constructor(private authService: MsalService) { } - - getGraphClient = (providerOptions: ProviderOptions) => { - let clientOptions = { - authProvider: new MyAuthenticationProvider(providerOptions, this.authService), - }; - const graphClient = Client.initWithMiddleware(clientOptions); - return graphClient; - } -} -``` - -**MyAuthenticationProvider** class needs to implement the [IAuthenticationProvider](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/IAuthenticationProvider.ts) interface, which can be done as shown in [graph.service.ts](./SPA/src/app/graph.service.ts). The Graph client then can be used in your components as shown below: - -```typescript -getProfile(providerOptions: ProviderOptions) { - this.graphService - .getGraphClient(providerOptions) - .api('/me') - .responseType(ResponseType.RAW) - .get() - .then((response: any) => { - if (response.status === 200) return response.json(); - if (response.status === 401) { - if (response.headers.get('www-authenticate')) { - this.graphService.handleClaimsChallenge(response, providerOptions); - } - } - }) - .then((profileResponse: Profile) => { - // do something with response - }) - .catch((error: any) => { - // do something with response - }); -} -``` - -## Next Steps - -Learn how to: - -* [Use MSAL Angular to sign-in users with Azure Active Directory and call a .NET Core web API](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/blob/main/3-Authorization-II/1-call-api/README.md) -* [Use MSAL Angular TO authenticate users with Azure AD B2C and calls a protected .NET Core web API](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/blob/main/3-Authorization-II/2-call-api-b2c/README.md) - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -* [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -* [Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -* [Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -* [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -* [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -* [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals) -* [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -* [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) -* [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -* [Single sign-on with MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso) -* [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -* [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -* [Pass custom state in authentication requests using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-pass-custom-state-authentication-request) -* [Prompt behavior in MSAL.js interactive requests](https://docs.microsoft.com/azure/active-directory/develop/msal-js-prompt-behavior) -* [Use MSAL.js to work with Azure AD B2C](https://docs.microsoft.com/azure/active-directory/develop/msal-b2c-overview) \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/Readme-incremental.md b/2-Authorization-I/1-call-graph/Readme-incremental.md deleted file mode 100644 index 51279313..00000000 --- a/2-Authorization-I/1-call-graph/Readme-incremental.md +++ /dev/null @@ -1,359 +0,0 @@ -# Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory and call the Microsoft Graph API - - 1. [Overview](#overview) - 1. [Scenario](#scenario) - 1. [Contents](#contents) - 1. [Setup](#setup) - 1. [Registration](#registration) - 1. [Running the sample](#running-the-sample) - 1. [Explore the sample](#explore-the-sample) - 1. [About the code](#about-the-code) - 1. [More information](#more-information) - 1. [Community Help and Support](#community-help-and-support) - 1. [Contributing](#contributing) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) that lets users sign-in with Azure Active Directory (Azure AD) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). In addition, this sample also demonstrates how to use [Microsoft Graph JavaScript SDK](https://github.com/microsoftgraph/msgraph-sdk-javascript) client with MSAL as a custom authentication provider to call the Graph API. - -> :information_source: Note that you are not required to implement a custom provider, as the v3.0 of the SDK offers a [default provider](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/AuthCodeMSALBrowserAuthenticationProvider.md) that implements MSAL.js. - -Here you'll learn about [Access Tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens), [acquiring a token](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-acquire-token), [calling a protected web API](https://docs.microsoft.com/azure/active-directory/develop/scenario-spa-call-api), as well as [Dynamic Scopes and Incremental Consent](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent), **silent token acquisition**, **working with multiple resources** and more. - -> :information_source: See the community call: [An introduction to Microsoft Graph for developers](https://www.youtube.com/watch?v=EBbnpFdB92A) - -> :information_source: See the community call: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to sign-in and obtain a JWT access token from **Azure AD**. -2. The access token is used as a *bearer token* to authorize the user to call the Microsoft Graph protected **Azure AD**. - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|---------------------------------|-----------------------------------------------------------------------| -| `src/app/auth-config.ts` | Authentication parameters reside here. | -| `src/app/app.module.ts` | MSAL-Angular configuration parameters reside here. | -| `src/app/app-routing.module.ts` | Configure your MSAL-Guard here. | -| `src/app/graph.service.ts` | Class to call graph API. | - -## Setup - -Install project dependencies: - -```console - cd ms-identity-javascript-angular-tutorial - cd 2-Authorization-I/1-call-graph/SPA - npm install -``` - -## Registration - -There is one project in this sample. To register it, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - -> :warning: If you have never used **Azure AD Powershell** before, we recommend you go through the [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - -1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory -1. If you have never used Azure AD Powershell before, we recommend you go through the [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. -1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. -1. In PowerShell run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 - ``` - - > Other ways of running the scripts are described in [App Creation Scripts](./AppCreationScripts/AppCreationScripts.md) - > The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -### Update the app registration (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure AD** service. -1. Select the **App Registrations** blade on the left, then find and select the application that you have registered in the previous tutorial (`msal-angular-spa`). -1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs. - - Select the **Add a permission** button and then, - - Ensure that the **Microsoft APIs** tab is selected. - - In the *Commonly used Microsoft APIs* section, select **Microsoft Graph** - - In the **Delegated permissions** section, select the **User.Read**, **Contacts.Read** in the list. Use the search box if necessary. - - Select the **Add permissions** button at the bottom. - -#### Configure the app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant name. - -## Running the sample - -```console - cd 2-Authorization-I/1-call-graph/SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Click the **sign-in** button on the top right corner. -1. Once you authenticate, click the **Profile** button on the navigation bar.This will make a call to the Graph API -1. click the **Contacts** button on the navigation bar. This will make a call to the Graph API.(:warning: the user needs to have an Office subscription for this call to work). - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -## We'd love your feedback - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## About the code - -### Protected resources and scopes - -In order to access a protected resource (a web APis ike MS Graph usually) on behalf of a signed-in user, the app needs to present a valid **Access Token** to that resource owner (in this case, Microsoft Graph). **Access Token** requests to Azure AD in **MSAL** are meant to be *per-resource-per-scope(s)*. This means that an **Access Token** requested for resource **A** with scope `User.Read`: - -* cannot be used for accessing resource **A** API that expects a different scope, like `files.Read`, and, -* cannot be used for accessing resources in any other API, like **B** with any scope. - -The intended recipient of an **Access Token** is represented by the `aud` claim (in this case, it should be the Microsoft Graph API's App ID); in case the value for the `aud` claim does not mach the resource **APP ID URI**, the token will be considered invalid. Likewise, the permissions that an **Access Token** grants is represented by the `scp` claim (Delegated Permissions) and `roles` claim (App permissions). See [Access Token claims](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#payload-claims) for more information. - -MSAL Angular provides the `MsalInterceptor` for obtaining Access tokens for resources (MS Graph) and adding them to HTTP requests as *authorization* header. The `protectedResourceMap` is part of the `MsalInterceptorConfiguration` object, initialized in [app.module.ts](./SPA/src/app/app.module.ts). - -```typescript -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map>(); - - protectedResourceMap.set("https://graph.microsoft.com/v1.0/me", ["User.Read"]); - - return { - interactionType: InteractionType.Redirect, - protectedResourceMap - }; -} -``` - -See for more: [FAQ: Using the protectedResourceMap](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/FAQ.md#how-do-i-add-tokens-to-api-calls) - -### Acquire a Token - -Setting `protectedResourceMap` at app initialization takes care of acquiring tokens and attaching them to HTTP requests. Simply call your API using a HTTP client and MSAL Angular will handle attaching tokens to your call. - -```typescript -export class ProfileComponent implements OnInit { - profile!: ProfileType; - - constructor( - private http: HttpClient - ) { } - - ngOnInit() { - this.getProfile(); - } - - getProfile() { - this.http.get("https://graph.microsoft.com/v1.0/me") - .subscribe((profile: ProfileType) => { - console.log(profile); - }); - } -} -``` - -Alternatively, you can also explicitly acquire Access tokens using the *acquireToken* APIs. **MSAL.js** exposes 3 APIs for acquiring a token: `acquireTokenPopup()`, `acquireTokenRedirect()` and `acquireTokenSilent()`. For more information about *acquireToken* APIs please check the following [Acquiring and Using an Access Token](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/acquire-token.md) - -> :information_source: When using `acquireTokenRedirect`, you may want to set `navigateToLoginRequestUrl` in [msalConfig](./SPA/src/authConfig.js) to **true** if you wish to return back to the page where *acquireTokenRedirect* was called. - -### Working with multiple resources - -When you have to access multiple resources, initiate a separate token request for each: - - ```javascript - // "User.Read" stands as shorthand for "graph.microsoft.com/User.Read" - const graphToken = await msalInstance.acquireTokenSilent({ - scopes: [ "User.Read" ] - }); - const customApiToken = await msalInstance.acquireTokenSilent({ - scopes: [ "api:///My.Scope" ] - }); - ``` - -Bear in mind that you *can* request multiple scopes for the same resource (e.g. `User.Read`, `User.Write` and `Calendar.Read` for **MS Graph API**). - - ```javascript - const graphToken = await msalInstance.acquireTokenSilent({ - scopes: [ "User.Read", "User.Write", "Calendar.Read"] // all MS Graph API scopes - }); - ``` - -For more information, see: [Resources and Scopes](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md) - -### Handle Continuous Access Evaluation (CAE) challenge from Microsoft Graph - -Continuous access evaluation (CAE) enables applications to do just-in time token validation, for instance enforcing user session revocation in the case of password change/reset but there are other benefits. For details, see [Continuous access evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - -Microsoft Graph is now CAE-enabled. This means that it can ask its client apps for more claims when conditional access policies require it. Your can enable your application to be ready to consume CAE-enabled APIs by: - -1. Declaring that the client app is capable of handling [claims challenges](https://aka.ms/claimschallenge). -2. Processing the claim challenge when they are thrown by MS Graph Api. - -#### Declare the CAE capability in the configuration - -This sample app declares that it's CAE-capable by adding the `clientCapabilities` property in the configuration in `auth-config.ts`: - -```javascript - const msalConfig = { - auth: { - clientId: 'Enter_the_Application_Id_Here', - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', - redirectUri: "/", - postLogoutRedirectUri: "/", - navigateToLoginRequestUrl: true, - clientCapabilities: ["CP1"] // this lets the resource owner (MS Graph) know that this client is capable of handling claims challenge. - } - } - - const msalInstance = new PublicClientApplication(msalConfig); -``` - -#### Processing the CAE challenge from Microsoft Graph - -Once the client app receives the CAE claims challenge from Microsoft Graph, it needs to proces the challenge and redirect the user back to Azure AD for further processing. To do so, we use MSAL's `acquireToken` API and provide the claims challenge as a parameter in the token request. This is shown in [graph.service.ts](../SPA/src/app/graph.service.ts), where we handle the response from the Microsoft Graph API with the `handleClaimsChallenge` method: - -```typescript - handleClaimsChallenge(response: any, providerOptions: ProviderOptions): void { - const authenticateHeader: string = response.headers.get('www-authenticate'); - const claimsChallengeMap: any = this.parseChallenges(authenticateHeader); - let account: AccountInfo = this.authService.instance.getActiveAccount()!; - addClaimsToStorage( - claimsChallengeMap.claims, - `cc.${msalConfig.auth.clientId}.${account?.idTokenClaims?.oid}.${ - new URL(providerOptions.endpoint).hostname - }` - ); - - new MsalAuthenticationProvider(providerOptions, this.authService).getAccessToken() - } - - parseChallenges(header: string): T { - const schemeSeparator = header.indexOf(' '); - const challenges = header.substring(schemeSeparator + 1).split(','); - const challengeMap = {} as any; - - challenges.forEach((challenge: string) => { - const [key, value] = challenge.split('='); - challengeMap[key.trim()] = window.decodeURI(value.replace(/['"]+/g, '')); - }); - - return challengeMap; - } -``` - -After that, we require a new access token via the `MsalAuthenticationProvider` Class, fetch the claims challenge from the browser's localStorage, and pass it to the `acquireToken` API in the request parameter. This is shown in [graph.service.ts](../SPA/src/app/graph.service.ts) - -### Access Token validation - -Clients should treat access tokens as opaque strings, as the contents of the token are intended for the **resource only** (such as a web API or Microsoft Graph). For validation and debugging purposes, developers can decode **JWT**s (*JSON Web Tokens*) using a site like [jwt.ms](https://jwt.ms). - -### Calling the Microsoft Graph API - -[Microsoft Graph JavaScript SDK](https://github.com/microsoftgraph/msgraph-sdk-javascript) provides various utility methods to query the Graph API. While the SDK has a default *authentication provider* that can be used in basic scenarios, it can also be extended to use with a custom authentication provider such as the MSAL SDK. To do so, we will initialize the Graph SDK client with [clientOptions](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CreatingClientInstance.md) method, which contains an `authProvider` object of class **MyAuthenticationProvider** that handles the token acquisition process for the client. We offer this as a service to other components as shown below: - -```typescript -export class GraphService { - constructor(private authService: MsalService) { } - - getGraphClient = (providerOptions: ProviderOptions) => { - let clientOptions = { - authProvider: new MyAuthenticationProvider(providerOptions, this.authService), - }; - const graphClient = Client.initWithMiddleware(clientOptions); - return graphClient; - } -} -``` - -**MyAuthenticationProvider** class needs to implement the [IAuthenticationProvider](https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/IAuthenticationProvider.ts) interface, which can be done as shown in [graph.service.ts](./SPA/src/app/graph.service.ts). The Graph client then can be used in your components as shown below: - -```typescript -getProfile(providerOptions: ProviderOptions) { - this.graphService - .getGraphClient(providerOptions) - .api('/me') - .responseType(ResponseType.RAW) - .get() - .then((response: any) => { - if (response.status === 200) return response.json(); - if (response.status === 401) { - if (response.headers.get('www-authenticate')) { - this.graphService.handleClaimsChallenge(response, providerOptions); - } - } - }) - .then((profileResponse: Profile) => { - // do something with response - }) - .catch((error: any) => { - // do something with response - }); -} -``` - -## Next Tutorial - -Continue with the next tutorial: [Protect and call a web API](../../3-Authorization-II/1-call-api/README-incremental.md). - -## More information - -- [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -- [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -- [Quickstart: Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -- [Quickstart: Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -- [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -- [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -- [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -- [Single sign-on with MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-sso) -- [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -- [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -- [Pass custom state in authentication requests using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-pass-custom-state-authentication-request) -- [Prompt behavior in MSAL.js interactive requests](https://docs.microsoft.com/azure/active-directory/develop/msal-js-prompt-behavior) -- [Use MSAL.js to work with Azure AD B2C](https://docs.microsoft.com/azure/active-directory/develop/msal-b2c-overview) - -For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. diff --git a/2-Authorization-I/1-call-graph/ReadmeFiles/screenshot.png b/2-Authorization-I/1-call-graph/ReadmeFiles/screenshot.png deleted file mode 100644 index 097e8664fad3cb5d5ce4bf40d6640e9bfe41c6fb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 56650 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ǩ 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 diff --git a/2-Authorization-I/1-call-graph/ReadmeFiles/topology.png b/2-Authorization-I/1-call-graph/ReadmeFiles/topology.png deleted file mode 100644 index 1c1f6b01f5bce30e01df6d915886ec2c65ed2857..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43661 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 Mw6avGgu&PU06nxmXaE2J diff --git a/2-Authorization-I/1-call-graph/SPA/.browserslistrc b/2-Authorization-I/1-call-graph/SPA/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/2-Authorization-I/1-call-graph/SPA/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# 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 - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/2-Authorization-I/1-call-graph/SPA/.editorconfig b/2-Authorization-I/1-call-graph/SPA/.editorconfig deleted file mode 100644 index 59d9a3a3..00000000 --- a/2-Authorization-I/1-call-graph/SPA/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/2-Authorization-I/1-call-graph/SPA/.gitignore b/2-Authorization-I/1-call-graph/SPA/.gitignore deleted file mode 100644 index 0711527e..00000000 --- a/2-Authorization-I/1-call-graph/SPA/.gitignore +++ /dev/null @@ -1,42 +0,0 @@ -# See http://help.github.com/ignore-files/ for more about ignoring files. - -# Compiled output -/dist -/tmp -/out-tsc -/bazel-out - -# Node -/node_modules -npm-debug.log -yarn-error.log - -# IDEs and editors -.idea/ -.project -.classpath -.c9/ -*.launch -.settings/ -*.sublime-workspace - -# Visual Studio Code -.vscode/* -!.vscode/settings.json -!.vscode/tasks.json -!.vscode/launch.json -!.vscode/extensions.json -.history/* - -# Miscellaneous -/.angular/cache -.sass-cache/ -/connect.lock -/coverage -/libpeerconnection.log -testem.log -/typings - -# System files -.DS_Store -Thumbs.db diff --git a/2-Authorization-I/1-call-graph/SPA/angular.json b/2-Authorization-I/1-call-graph/SPA/angular.json deleted file mode 100644 index 856444b4..00000000 --- a/2-Authorization-I/1-call-graph/SPA/angular.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "ms-identity-angular-c2s1": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/ms-identity-angular-c2s1", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "ms-identity-angular-c2s1:build:production" - }, - "development": { - "browserTarget": "ms-identity-angular-c2s1:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "ms-identity-angular-c2s1:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - } - } - } - } - }, - "cli": { - "analytics": "f820434e-2515-48e0-8dac-546048032f4b" - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/karma.conf.js b/2-Authorization-I/1-call-graph/SPA/karma.conf.js deleted file mode 100644 index 9562b172..00000000 --- a/2-Authorization-I/1-call-graph/SPA/karma.conf.js +++ /dev/null @@ -1,50 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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"), - require("@angular-devkit/build-angular/plugins/karma"), - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false, // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true, // removes the duplicated traces - }, - coverageReporter: { - dir: require("path").join( - __dirname, - "./coverage/ms-identity-angular-c2s1" - ), - subdir: ".", - reporters: [{ type: "html" }, { type: "text-summary" }], - }, - reporters: ["progress", "kjhtml"], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true, - }); -}; diff --git a/2-Authorization-I/1-call-graph/SPA/package-lock.json b/2-Authorization-I/1-call-graph/SPA/package-lock.json deleted file mode 100644 index a01cb9ac..00000000 --- a/2-Authorization-I/1-call-graph/SPA/package-lock.json +++ /dev/null @@ -1,8530 +0,0 @@ -{ - "name": "ms-identity-angular-c2s1", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "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", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/architect": { - "version": "0.1402.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1402.1.tgz", - "integrity": "sha512-OZ5mkVHSrk5WX6wIfvkxJUCqJRtfQh1S476qHIi80llhJufFTwoOwJrcz7XtNRvbZMLRMztf0aIhEDaUtEBRZQ==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.2.1", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/build-angular": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.2.1.tgz", - "integrity": "sha512-6FeIe2nsNH/fslZmTfbo+RCjLk3HuCQa5rb/SFf3w0mwzWCrhV0/SqnQ4+YYgkKrohmTX+q5JmJPwWnkqgdIgQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1402.1", - "@angular-devkit/build-webpack": "0.1402.1", - "@angular-devkit/core": "14.2.1", - "@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.1", - "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.0", - "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": "14.1.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.10.0", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "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" - } - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1402.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1402.1.tgz", - "integrity": "sha512-S9WvNKrHVgOWNqGCytJNPBEMojB9j6cgl5XlUMEQ+4NV5geOlDNiZltQ/gbC1jz19OU5N+Ky374mPI5IeIBqZg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1402.1", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.2.1.tgz", - "integrity": "sha512-lW8oNGuJqr4r31FWBjfWQYkSXdiOHBGOThIEtHvUVBKfPF/oVrupLueCUgBPel+NvxENXdo93uPsqHN7bZbmsQ==", - "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" - } - }, - "@angular-devkit/schematics": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.1.3.tgz", - "integrity": "sha512-i1vuuClGvBzmgQi3qAUWTwLdnGJZ/C8xVeFMHXmgVNZhck9/8xGGusi500SYsGcVzEfetGSJt5hOfUHmVrcpbg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.3", - "jsonc-parser": "3.1.0", - "magic-string": "0.26.2", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", - "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", - "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" - } - } - } - }, - "@angular/animations": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.0.tgz", - "integrity": "sha512-T54F5NvX0XMj6L7hdqYYORFjY6EckOWaK96bF9QqJLKwIRViCEGR5YzaHGhQaAipvUJ+kEwN+bnRBJWOaNbmUw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cdk": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.2.0.tgz", - "integrity": "sha512-rAeQXUSbOJSKLVizueRKoZmRb0An5qJUMigsF8wJwJjySUIcJ8uSIOMV+G1rxkvxVVY0HRAVi2rIkJbeq3+WKQ==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.3.0" - } - }, - "@angular/cli": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.1.3.tgz", - "integrity": "sha512-JAvxOXXGf4VCJUQLe3g0pDNnOnE5E7tJfhqsn77+TGrhFpYPMmZ8z747ohiFXrTqbSe0dWTwOfqwpAA41R1CeA==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1401.3", - "@angular-devkit/core": "14.1.3", - "@angular-devkit/schematics": "14.1.3", - "@schematics/angular": "14.1.3", - "@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.1", - "resolve": "1.22.1", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.5.1" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.3.tgz", - "integrity": "sha512-DQvKfl8Q9c02jpGqZX1nOL4mAnRBU6BSqPlhi1q17ZrB8sQpYtDBb8Epn2DDq48l7SQVFnRg6Zgje9L1LObURg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.3", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", - "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", - "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" - } - } - } - }, - "@angular/common": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.0.tgz", - "integrity": "sha512-dXCGuM/Yh9B8OVVHHfPuXLYdu0olemKmuYLZXGoqyzeYU5OpQ6+qcHYTrlREkWpF9QY+pk2ewfM9Hke1UENEHA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.0.tgz", - "integrity": "sha512-csnvopy5a6ctdT7sHgwgn3wRni+UIk2zvs7WYsx+gtLTdH7SPg78CN0XZR/KQ142qLtuMnmkVON3D3ejmqC9xg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.0.tgz", - "integrity": "sha512-cMjMVmAitY4GIn45pIqzhy4GKWfVAJSktCtuAebaAYC6Nqo9LbvqF2dnHK0MHoqjAf98e5zmz9WeBOQ7YlRZFQ==", - "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" - } - }, - "@angular/core": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.0.tgz", - "integrity": "sha512-m00WZL+df90QjrNmA43W8oSP1hyePoEXgw36JcFLQ+2ISO1HvqoeuKXIccyIQKpCuQ9VLNv5ptlTio6pjmcCqg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.0.tgz", - "integrity": "sha512-KVAd4ITEUnP/MLNTDbTWEMoYIZgKawvoaNu4nBP0DAcZsADmB5a6IPYcg6GrgJ+teN0SnpiCxKvq1hRITj3d7g==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/material": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.2.0.tgz", - "integrity": "sha512-Lh7Ccc6zi5ClFnr5w1ZFVHb5QnOye1si0xWvS5nMQG3e0OPFAt0oOhjILFIBMK7n2jq4kv6erqNX2fLkyRvTQw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.0.tgz", - "integrity": "sha512-zYWB9FtZQZEhPV2PuzaoXWChWS+7o4SP+0sF8hLddGNOezf1FsKKrqDhyYtQYgZ2qQPsS+uDFfkVry5dppALUQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.0.tgz", - "integrity": "sha512-CRSWbJiohfz4KBU4ts2kq2B2lATApMeG6uuxgXwNJAEUkn63EYbrFVY9JTaApyZ7X+3dUDZZtcsfNmQruK2UxQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.0.tgz", - "integrity": "sha512-SvtmSlRCIWeLhbXYh09W7luPKTtpZL16PB4DbT3VVfZlt2PfMys/tAmOCvChNxjkOgV7yEGaqklWw/1wKxeRlg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.1.tgz", - "integrity": "sha512-Wf92m8ayIoiJVkKJ8wJ8RmWdwoyLq0xrnEt2p1ffJC7m8/zFV9Ezaqkvzf4sWjaMWNZZWDPQAojDGAohm63ceg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.28.1", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.28.1.tgz", - "integrity": "sha512-5uAfwpNGBSRzBGTSS+5l4Zw6msPV7bEmq99n0U3n/N++iTcha+nIp1QujxTPuOLHmTNCeySdMx9qzGqWuy22zQ==", - "requires": { - "@azure/msal-common": "^7.3.0" - } - }, - "@azure/msal-common": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.3.0.tgz", - "integrity": "sha512-revxB3z+QLjwAtU1d04nC1voFr+i3LfqTpUfgrWZVqKh/sSgg0mZZUvw4vKVWB57qtL95sul06G+TfdFZny1Xw==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.13.tgz", - "integrity": "sha512-5yUzC5LqyTFp2HLmDoxGQelcdYgSpP9xsnMWBphAscOdFrHSAVbLNzWiy32sVNDqJRDiJK6klfDnAgu6PAGSHw==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.13.tgz", - "integrity": "sha512-hDvXp+QYxSRL+23mpAlSGxHMDyIGChm0/AwTfTAAK5Ufe40nCsyNdaYCGuK91phn/fVu9kqayImRDkvNAgdrsA==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.2.tgz", - "integrity": "sha512-r9QJJ+uDWrd+94BSPcP6/de67ygLtvVy6cK4luE6MOuDsZIdoaPBnfSpbO/+LTifjPckbKXRuI9BB/Z2/y3iTg==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "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.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.18.10", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz", - "integrity": "sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.18.11", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.11.tgz", - "integrity": "sha512-oBUlbv+rjZLh2Ks9SKi4aL7eKaAXBWleHzU89mP0G6BMUlRxSckk9tSIkgDGydhgFxHuGSlBQZfnaD47oBEB7w==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.18.11", - "@babel/types": "^7.18.10" - } - }, - "@babel/helpers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.9.tgz", - "integrity": "sha512-Jf5a+rbrLoR4eNdUmnFu8cN5eNJT6qdTdOg5IHIzq87WwyRw9PwguLFOWYgktN/60IP4fgDUawJvs7PjQIzELQ==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.13.tgz", - "integrity": "sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg==", - "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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@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.18.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.13.tgz", - "integrity": "sha512-TodpQ29XekIsex2A+YJPj5ax2plkGa8YYY6mFjCohk/IG9IY42Rtuj1FuDeemfg2ipxIFLzPeA83SIBnlhSIow==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@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==", - "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.18.13", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.13.tgz", - "integrity": "sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.13", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.13", - "@babel/types": "^7.18.13", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.13.tgz", - "integrity": "sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ==", - "dev": true, - "requires": { - "@babel/types": "^7.18.13", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@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/types": { - "version": "7.18.13", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.13.tgz", - "integrity": "sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.18.10", - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", - "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 - }, - "@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 - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.15", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.15.tgz", - "integrity": "sha512-oWZNOULl+UbhsgB51uuZzglikfIKSUBO/M9W2OfEjn7cmqoAiCgmv9lyACTUacZwBz0ITnJ2NqjU8Tx0DHL88g==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@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 - }, - "@microsoft/microsoft-graph-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.2.tgz", - "integrity": "sha512-eYDiApYmiGsm1s1jfAa/rhB2xQCsX4pWt0vCTd1LZmiApMQfT/c0hXj2hvpuGz5GrcLdugbu05xB79rIV57Pjw==", - "requires": { - "@babel/runtime": "^7.12.5", - "tslib": "^2.2.0" - } - }, - "@ngtools/webpack": { - "version": "14.2.1", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.2.1.tgz", - "integrity": "sha512-9tsfx2ZQscnpszVkdoJIIxZZDwitgmbPNrsQmyfHhwqPeJ8UUnAk6RNTfHjtX31VCmIM+qdGJsX7vDR9ye3/uA==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "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" - } - }, - "@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.1.3", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.1.3.tgz", - "integrity": "sha512-hhH4MGfBD1oxrd9PFZwgaqXAT9dYTK/6AtoIcr40OwEbnS5ZoZwzrgb0OOT2NW3bmL0dg3YeJei3Sf89hlI5eg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.3", - "@angular-devkit/schematics": "14.1.3", - "jsonc-parser": "3.1.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.1.3", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.3.tgz", - "integrity": "sha512-YBxhRl7hKgirjcKeurfejVrIgmw31GcfKKCyQiIudoLCYjonnSMdDEx2y8BNMANvxe5YmuZsIYJtgVlqp3mMDg==", - "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" - } - } - } - }, - "@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 - }, - "@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/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.6", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.6.tgz", - "integrity": "sha512-/fqTbjxyFUaYNO7VcW5g+4npmqVACz1bB7RTHYuLj+PRjw9hrCwrUXVQFpChUS0JsyEFvMZ7U/PfmvWgxJhI9g==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.30", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.30.tgz", - "integrity": "sha512-gstzbTWro2/nFed1WXtf+TtrpwxH7Ggs4RLYTLbeVgIkUQOI3WG/JKjgeOU1zXDvezllupjrf8OPIdvTbIaVOQ==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "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": "18.7.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.7.14.tgz", - "integrity": "sha512-6bbDaETVi8oyIARulOE9qF1/Qdi/23z6emrUh0fNJRUmjznqrixD4MpGDdgOFk5Xb0m2H6Xu42JGdvAxaJR/wA==", - "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/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/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/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.8.tgz", - "integrity": "sha512-75Jr6Q/XpTqEf6D2ltS5uMewJIx5irCU1oBYJrWjFenq/m12WRRrz6g15L1EIoYvPLXTbEry7rDOwrcYNj77xw==", - "dev": true, - "requires": { - "browserslist": "^4.21.3", - "caniuse-lite": "^1.0.30001373", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-polyfill-corejs2": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.2.tgz", - "integrity": "sha512-LPnodUl3lS0/4wN3Rb+m+UK8s7lj2jcLRrjho4gLw+OJs+I4bvGXshINesY5xx/apM+biTnQ9reDI8yj+0M5+Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.17.7", - "@babel/helper-define-polyfill-provider": "^0.3.2", - "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.0", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.0.tgz", - "integrity": "sha512-RW1cnryiADFeHmfLS+WW/G431p1PsW5qdRdz0SDRi7TKcUgc7Oh/uXkT7MZ/+tGsT1BkczEAmD5XjUyJ5SWDTw==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.2" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "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.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "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 - } - } - }, - "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.3.tgz", - "integrity": "sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001370", - "electron-to-chromium": "^1.4.202", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.5" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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.0.0", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", - "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001385", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001385.tgz", - "integrity": "sha512-MpiCqJGhBkHgpyimE9GWmZTnyHyEEM35u115bD3QBrXpjvL/JgcP8cUhKJshfmg4OtEHFenifcK5sZayEw5tvQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "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": { - "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 - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "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" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "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": { - "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" - } - }, - "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-compat": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.25.0.tgz", - "integrity": "sha512-extKQM0g8/3GjFx9US12FAgx8KJawB7RCQ5y8ipYLbmfzEzmFRWdDjIlxDx82g7ygcNG85qMVUSRyABouELdow==", - "dev": true, - "requires": { - "browserslist": "^4.21.3", - "semver": "7.0.0" - }, - "dependencies": { - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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 - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "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 - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.0.1.tgz", - "integrity": "sha512-pT3nzyGM78poCKLAEy2zWIVX2hikq6dIrjuZzLV98MumBg+xMTNYfHx7paUlfiRTgg91O/vR889CIf+qiv79Rw==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.13", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.13.tgz", - "integrity": "sha512-bnYCwf8Emc3pTD8pXnre+wfnjGtfi5ncMDKy7+cWZXbmRAsdWkOQHrfC1yz/KiwP5thDp2kCHWYWKBX4HP1hoQ==", - "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" - } - }, - "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.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.236", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.236.tgz", - "integrity": "sha512-41wPRcb9OIpB0RMLnIIDbfbJ5IXwuQ2qAr0jCTSpv5s7M61MazcBGS5kovW5E28SGxum/KR3fm2imswjdlTWmw==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "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": { - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true - } - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "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.10.3", - "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 - }, - "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.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "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" - }, - "dependencies": { - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - } - } - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "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" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "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", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.1.0.tgz", - "integrity": "sha512-Ek+QmMEqZF8XrbFdwoDjSbm7rT23pCgEMOJmz6GPk/s4yH//RQfNPArhIxbguNxROq/+5lNBwCDHMhA903Kx1Q==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "requires": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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 - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "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" - } - } - } - }, - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.10.0.tgz", - "integrity": "sha512-Erxj2n/LDAZ7H8WNJXd9tw38GYM3dv8rk8Zcs+jJuxYTW7sozH+SS8NtrSjVL1/vpLvWi1hxy96IzjJ3EHTJJg==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.2.0.tgz", - "integrity": "sha512-OcFpBrIhnbmb9wfI8cqPSJ50pv3Wg4/NSgoZIqHzIwO/2a9qivJWzv8hUvaREIMYYJBas6AvfXATFdVuzzCqVw==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "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 - }, - "karma": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.4.0.tgz", - "integrity": "sha512-s8m7z0IF5g/bS5ONT7wsOavhW4i4aFkzD4u4wgzAQWT4HGUeWI3i21cK2Yz6jndMAeHETp5XuNsRoyGJZXVd4w==", - "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": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - }, - "dependencies": { - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "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" - } - } - } - }, - "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 - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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" - } - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.6.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.1.tgz", - "integrity": "sha512-J8VYFH2UQq/xucdNu71io4Fo+purYYudyErgBbswWKO0MC6QVOERRomt5su/z6d3RJSmLyTGmXl3Q/XjKCf+/A==", - "dev": true, - "requires": { - "date-format": "^4.0.13", - "debug": "^4.3.4", - "flatted": "^3.2.6", - "rfdc": "^1.3.0", - "streamroller": "^3.1.2" - } - }, - "lru-cache": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.14.0.tgz", - "integrity": "sha512-EIRtP1GrSJny0dqb50QXRUNBxHJhcpxHC++M5tD7RYbvLLn5KVWKsbyswSSqDuU15UFi3bgTQIY8nhDMeF6aDQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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" - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": { - "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" - } - }, - "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": "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" - }, - "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" - } - } - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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.1.0", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-9.1.0.tgz", - "integrity": "sha512-HkmN0ZpQJU7FLbJauJTHkHlSVAXlNGDAzH/VYFZGDOnFyn/Na3GlNJfkudmufOdS6/jNFhy88ObzL7ERz9es1g==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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": { - "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", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.6.1", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.6.1.tgz", - "integrity": "sha512-L+2BI1ougAPsFjXRyBhcKmfT016NscRFLv6Pz5EiNf1CCFJFU0pSKKQwsZTyAQB+sTuUL4TyFyp6J1Ork3dOqw==", - "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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": 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 - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "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.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", - "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 - }, - "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 - }, - "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": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-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 - }, - "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 - }, - "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 - }, - "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 - }, - "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.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", - "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 - }, - "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 - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - }, - "dependencies": { - "retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true - } - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "dependencies": { - "bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - } - } - }, - "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" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "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": { - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "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-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, - "reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true - }, - "rfdc": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "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 - } - } - }, - "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 - }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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 - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true - } - } - }, - "serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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 - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.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" - } - }, - "socks": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.0.tgz", - "integrity": "sha512-scnOe9y4VuiNUULJN72GrM26BNOjVsfPXI+j+98PkyEfsIXroa5ofyjT+FzGvn/xHs73U2JtoBYAVx9Hl4quSA==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - }, - "streamroller": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.2.tgz", - "integrity": "sha512-wZswqzbgGGsXYIrBYhOE0yP+nQ6XRk7xDcYwuQAGTYXdyAUmvgVFE0YU1g5pvQT0m7GBaQfYcSnlHbapuK0H0A==", - "dev": true, - "requires": { - "date-format": "^4.0.13", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "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" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "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", - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.5.tgz", - "integrity": "sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "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", - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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": { - "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" - } - }, - "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.10.0", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.10.0.tgz", - "integrity": "sha512-7dezwAs+k6yXVFZ+MaL8VnE+APobiO3zvpp3rBHe/HmWQ+avwh0Q3d0xxacOiBybZZ3syTZw9HXzpa3YNbAZDQ==", - "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": { - "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" - } - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.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 - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/package.json b/2-Authorization-I/1-call-graph/SPA/package.json deleted file mode 100644 index 4350d5a3..00000000 --- a/2-Authorization-I/1-call-graph/SPA/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "ms-identity-angular-c2s1", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.1.0", - "@angular/cdk": "^14.1.2", - "@angular/common": "^14.1.0", - "@angular/compiler": "^14.1.0", - "@angular/core": "^14.1.0", - "@angular/forms": "^14.1.0", - "@angular/material": "^14.1.2", - "@angular/platform-browser": "^14.1.0", - "@angular/platform-browser-dynamic": "^14.1.0", - "@angular/router": "^14.1.0", - "@azure/msal-angular": "^2.4.1", - "@azure/msal-browser": "^2.28.1", - "@microsoft/microsoft-graph-client": "^3.0.2", - "rxjs": "^6.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.2", - "@angular/cli": "~14.1.2", - "@angular/compiler-cli": "^14.1.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.2.0", - "karma": "~6.4.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.1.0", - "karma-jasmine-html-reporter": "~2.0.0", - "typescript": "~4.7.2" - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.css b/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.css deleted file mode 100644 index 8da98b0b..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.css +++ /dev/null @@ -1,13 +0,0 @@ -ul { - list-style-type: none; - -} - -li { - cursor: pointer; -} - -span { - font-size: medium; - margin: 0 .5rem; -} \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.html b/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.html deleted file mode 100644 index f3271fe5..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.html +++ /dev/null @@ -1,21 +0,0 @@ -

    Pick an account

    -
    -
      -
    • - account_circle - {{account.username}} -
    • -
    • - library_add - New account -
    • -
    -
    - - - - - - diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.ts b/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.ts deleted file mode 100644 index 19f4d327..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/account-switch/account-switch.component.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { Component, OnInit, Inject } from '@angular/core'; -import { - MsalService, - MSAL_GUARD_CONFIG, - MsalGuardConfiguration, - -} from '@azure/msal-angular'; -import { MAT_DIALOG_DATA } from '@angular/material/dialog'; -import { - RedirectRequest, - InteractionRequiredAuthError, - SilentRequest, - AccountInfo, -} from '@azure/msal-browser'; -import { -PromptValue -} from '@azure/msal-common'; - -@Component({ - selector: 'app-account-switch-component', - templateUrl: './account-switch.component.html', - styleUrls: ['./account-switch.component.css'], -}) -export class AccountSwitchComponent implements OnInit { - accounts: AccountInfo[] = []; - constructor( - @Inject(MAT_DIALOG_DATA) public data: any, - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService - ) {} - - ngOnInit(): void {} - - switchAccount(account: AccountInfo | null) { - const activeAccount = this.authService.instance.getActiveAccount(); - this.authService.instance.setActiveAccount(account); - if (!account) { - this.authService.instance.loginRedirect({ - ...this.msalGuardConfig.authRequest, - prompt: PromptValue.LOGIN, - } as RedirectRequest); - } else if ( - account && - activeAccount?.homeAccountId !== account.homeAccountId - ) { - this.authService.instance - .ssoSilent({ - ...this.msalGuardConfig.authRequest, - account: account, - } as SilentRequest) - .then(() => { - window.location.reload(); - }) - .catch((error) => { - if (error instanceof InteractionRequiredAuthError) { - this.authService.instance.loginRedirect({ - ...this.msalGuardConfig.authRequest, - prompt: PromptValue.LOGIN, - } as RedirectRequest); - } - }); - } - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/app-routing.module.ts b/2-Authorization-I/1-call-graph/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 47291b9c..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { NgModule } from '@angular/core'; -import { RouterModule, Routes } from '@angular/router'; -import { BrowserUtils } from '@azure/msal-browser'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; - -import { ProfileComponent } from './profile/profile.component'; -import { ContactsComponent } from './contacts/contacts.component'; -import { HomeComponent } from './home/home.component'; - -/** - * MSAL Angular can protect routes in your application - * using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'profile', - component: ProfileComponent, - canActivate: [MsalGuard], - }, - { - path: 'contacts', - component: ContactsComponent, - canActivate: [MsalGuard], - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent, - }, - { - path: '', - component: HomeComponent, - }, -]; - -@NgModule({ - imports: [ - RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: - !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() - ? 'enabledNonBlocking' - : 'disabled', // Set to enabledBlocking to use Angular Universal - }), - ], - exports: [RouterModule], -}) -export class AppRoutingModule { } diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/app.component.css b/2-Authorization-I/1-call-graph/SPA/src/app/app.component.css deleted file mode 100644 index 2087b8b1..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/app.component.css +++ /dev/null @@ -1,13 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/app.component.html b/2-Authorization-I/1-call-graph/SPA/src/app/app.component.html deleted file mode 100644 index 17417c5a..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/app.component.html +++ /dev/null @@ -1,40 +0,0 @@ - -
    {{ title }} -
    - - Profile - Contacts - - - - - - - - - - - - - -
    - - -
    - - - \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/app.component.ts b/2-Authorization-I/1-call-graph/SPA/src/app/app.component.ts deleted file mode 100644 index fb45992d..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/app.component.ts +++ /dev/null @@ -1,169 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { - MsalService, - MsalBroadcastService, - MSAL_GUARD_CONFIG, - MsalGuardConfiguration, -} from '@azure/msal-angular'; -import { - AuthenticationResult, - InteractionStatus, - InteractionType, - PopupRequest, - RedirectRequest, - AccountInfo, - EventMessage, - EventType -} from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; -import { clearStorage } from './utils/storage-utils'; -import { MatDialog } from '@angular/material/dialog'; -import { AccountSwitchComponent } from "./account-switch/account-switch.component" - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'], -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - loginDisplay = false; - isIframe = false; - name: string | undefined; - accounts: AccountInfo[] = []; - - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService, - public dialog: MatDialog - ) {} - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - this.msalBroadcastService.inProgress$ - .pipe( - filter( - (status: InteractionStatus) => status === InteractionStatus.None - ), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }); - - this.msalBroadcastService.msalSubject$ - .pipe( - filter( - (msg: EventMessage) => msg.eventType === EventType.LOGOUT_SUCCESS - ), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }); - - - this.msalBroadcastService.msalSubject$ - .pipe( - filter( - (msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS - ), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - this.name = this.authService.instance.getActiveAccount() - ? this.authService.instance.getActiveAccount()?.username - : 'Unknown'; - this.accounts = this.authService.instance.getAllAccounts(); - } - - openDialog(): void { - let dialogRef = this.dialog.open(AccountSwitchComponent, { - data: { - accounts: this.accounts, - }, - }); - dialogRef.afterClosed().subscribe((result) => { - console.log(result); - }); - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if ( - !activeAccount && - this.authService.instance.getAllAccounts().length > 0 - ) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService - .loginPopup({ - ...this.msalGuardConfig.authRequest, - } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService - .loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ - ...this.msalGuardConfig.authRequest, - } as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - clearStorage(this.authService.instance.getActiveAccount()); - this.authService.logoutRedirect({ - account: this.authService.instance.getActiveAccount(), - }); - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/app.module.ts b/2-Authorization-I/1-call-graph/SPA/src/app/app.module.ts deleted file mode 100644 index a0501dc7..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/app.module.ts +++ /dev/null @@ -1,149 +0,0 @@ -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; - -import { MatToolbarModule } from "@angular/material/toolbar"; -import { MatButtonModule } from '@angular/material/button'; -import { MatCardModule } from '@angular/material/card'; -import { MatTableModule } from '@angular/material/table'; -import { MatMenuModule } from '@angular/material/menu'; -import { MatDialogModule } from '@angular/material/dialog'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { MatIconModule } from '@angular/material/icon'; - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { ProfileComponent } from './profile/profile.component'; -import { HomeComponent } from './home/home.component'; -import { ContactsComponent } from './contacts/contacts.component'; -import { AccountSwitchComponent } from './account-switch/account-switch.component'; - -import { - IPublicClientApplication, - PublicClientApplication, - InteractionType, -} from '@azure/msal-browser'; - -import { - MSAL_INSTANCE, - MsalGuardConfiguration, - MSAL_GUARD_CONFIG, - MsalService, - MsalBroadcastService, - MsalGuard, - MsalRedirectComponent, - MsalInterceptor, - MSAL_INTERCEPTOR_CONFIG, - MsalInterceptorConfiguration, - MsalModule, -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; -import { getClaimsFromStorage } from './utils/storage-utils'; -import { GraphService } from './graph.service'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MsalGuardConfigurationFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map>(); - - protectedResourceMap.set(protectedResources.graphMe.endpoint, protectedResources.graphMe.scopes); - protectedResourceMap.set(protectedResources.graphContacts.endpoint, protectedResources.graphContacts.scopes); - - return { - interactionType: InteractionType.Redirect, - protectedResourceMap, - authRequest: (msalService, httpReq, originalAuthRequest) => { - const resource = new URL(httpReq.url).hostname; - let claim = - msalService.instance.getActiveAccount()! && - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${msalService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ? window.atob( - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${msalService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ) - : undefined; // claims challenge e.g {"access_token":{"xms_cc":{"values":["cp1"]}}} - return { - ...originalAuthRequest, - claims: claim, - }; - }, - }; -} - -@NgModule({ - declarations: [ - AppComponent, - ProfileComponent, - HomeComponent, - ContactsComponent, - AccountSwitchComponent, - ], - entryComponents: [AccountSwitchComponent], - imports: [ - BrowserModule, - AppRoutingModule, - MatToolbarModule, - MatButtonModule, - MatCardModule, - MatTableModule, - MatMenuModule, - HttpClientModule, - BrowserAnimationsModule, - MatDialogModule, - MatIconModule, - MsalModule, - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true, - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory, - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MsalGuardConfigurationFactory, - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory, - }, - MsalService, - MsalBroadcastService, - MsalGuard, - GraphService, - ], - bootstrap: [AppComponent, MsalRedirectComponent], -}) -export class AppModule {} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/auth-config.ts b/2-Authorization-I/1-call-graph/SPA/src/app/auth-config.ts deleted file mode 100644 index b91abbd5..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,70 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { - LogLevel, - Configuration, - BrowserCacheLocation, -} from '@azure/msal-browser'; - -const isIE = - window.navigator.userAgent.indexOf('MSIE ') > -1 || - window.navigator.userAgent.indexOf('Trident/') > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ - -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - clientCapabilities: ['CP1'], // This lets the resource server know that this client can handle claim challenges. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false, - }, - }, -}; - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ -export const protectedResources = { - graphMe: { - endpoint: 'https://graph.microsoft.com/v1.0/me', - scopes: ['User.Read'], - }, - graphContacts: { - endpoint: 'https://graph.microsoft.com/v1.0/me/contacts', - scopes: ['Contacts.Read'], - }, -}; - -/** - * Scopes you add here will be prompted for user consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest = { - scopes: ['User.Read', 'Contacts.Read'], -}; diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/contacts.ts b/2-Authorization-I/1-call-graph/SPA/src/app/contacts.ts deleted file mode 100644 index 8b915b3f..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/contacts.ts +++ /dev/null @@ -1,34 +0,0 @@ -export type Contact = { - birthday?: string; - businessAddress?: { [key: string]: string }; - businessHomePage?: string; - businessPhones?: Array; - categories?: Array; - changeKey?: string; - children?: Array; - companyName?: string; - createdDateTime?: string; - department?: string; - displayName?: string; - emailAddresses?: { [key: string]: string }; - generation?: string; - givenName?: string; - homeAddress?: { [key: string]: string }; - homePhones?: Array; - id?: string; - imAddresses?: Array; - initials?: string; - jobTitle?: string; - lastModifiedDateTime?: string; - manager?: string; - middleName?: string; - mobilePhone?: string; - nickName?: string; - officeLocation?: string; - otherAddress?: { [key: string]: string }; - parentFolderId?: string; - personalNotes?: string; - profession?: string; - surname?: string; - title?: string; -}; \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.css b/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.css deleted file mode 100644 index bf4bd6d0..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.css +++ /dev/null @@ -1,9 +0,0 @@ -table { - width: 70%; - margin: 1% auto auto auto; -} - -.card-section { - margin: 10% 10% 1% 10%; - padding: 4%; -} \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.html b/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.html deleted file mode 100644 index 70d1807f..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.html +++ /dev/null @@ -1,16 +0,0 @@ -
    -

    Calling Microsoft Graph API...

    -
      -
    • resource: User object
    • -
    • endpoint: https://graph.microsoft.com/v1.0/me/contacts
    • -
    • scope: Contacts.Read
    • -
    -

    Contents of the response is below:

    - - - {{contact?.displayName}} - {{contact?.personalNotes}} - - -

    User has no contacts

    -
    \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.ts b/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.ts deleted file mode 100644 index ad4f5567..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/contacts/contacts.component.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { MsalService } from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; -import { ResponseType } from '@microsoft/microsoft-graph-client'; - -import { GraphService, ProviderOptions } from '../graph.service'; -import { protectedResources } from '../auth-config'; -import { Contact } from '../contacts'; - -@Component({ - selector: 'app-contacts', - templateUrl: './contacts.component.html', - styleUrls: ['./contacts.component.css'], -}) -export class ContactsComponent implements OnInit { - contacts: Contact[] = []; - hasContacts: boolean = false; - - constructor( - private graphService: GraphService, - private authService: MsalService - ) { } - - ngOnInit(): void { - const providerOptions: ProviderOptions = { - account: this.authService.instance.getActiveAccount()!, - scopes: protectedResources.graphContacts.scopes, - interactionType: InteractionType.Redirect, - endpoint: protectedResources.graphContacts.endpoint, - }; - - this.getContacts(providerOptions); - } - - getContacts(providerOptions: ProviderOptions) { - this.graphService - .getGraphClient(providerOptions) - .api('/me/contacts') - .responseType(ResponseType.RAW) - .get() - .then((response: any) => { - if (response.status === 200) return response.json(); - if (response.status === 401) { - if (response.headers.get('WWW-Authenticate')) { - this.graphService.handleClaimsChallenge(response, providerOptions); - } - } - }) - .then((contactsResponse: any) => { - this.contacts = contactsResponse.value; - this.setHasContacts(); - }) - .catch((error: any) => { - console.log(error); - }); - } - - setHasContacts() { - this.hasContacts = this.contacts.length > 0; - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/graph.service.ts b/2-Authorization-I/1-call-graph/SPA/src/app/graph.service.ts deleted file mode 100644 index d98458d5..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/graph.service.ts +++ /dev/null @@ -1,184 +0,0 @@ -import { Injectable } from '@angular/core'; -import { - AccountInfo, - AuthenticationResult, - InteractionRequiredAuthError, - InteractionType, -} from '@azure/msal-browser'; -import { MsalService } from '@azure/msal-angular'; -import { - Client, - AuthenticationProvider, - AuthenticationProviderOptions, -} from '@microsoft/microsoft-graph-client'; -import { - addClaimsToStorage, - getClaimsFromStorage, -} from './utils/storage-utils'; -import { parseChallenges } from './utils/claim-utils'; - -import { msalConfig } from './auth-config'; -/** - * The code below demonstrates how you can use MSAL as a custom authentication provider for the Microsoft Graph JavaScript SDK. - * You do NOT need to implement a custom provider. Microsoft Graph JavaScript SDK v3.0 (preview) offers AuthCodeMSALBrowserAuthenticationProvider - * which handles token acquisition and renewal for you automatically. For more information on how to use it, visit: - * https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/AuthCodeMSALBrowserAuthenticationProvider.md - */ - -export interface ProviderOptions extends AuthenticationProviderOptions { - account: AccountInfo; // user account object to be used when attempting silent token acquisition - scopes: string[]; // array of scopes required for this resource endpoint - interactionType: InteractionType; // type of interaction to fallback to when silent token acquisition fails - endpoint: string; -} - -@Injectable({ - providedIn: 'root', -}) -export class GraphService { - constructor(private authService: MsalService) { } - - /** - * Returns a graph client object with the provided token acquisition options - * @param {ProviderOptions} providerOptions: object containing user account, required scopes and interaction type - */ - getGraphClient = (providerOptions: ProviderOptions) => { - /** - * Pass the instance as authProvider in ClientOptions to instantiate the Client which will create and set the default middleware chain. - * For more information, visit: https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/docs/CreatingClientInstance.md - */ - let clientOptions = { - authProvider: new MsalAuthenticationProvider( - providerOptions, - this.authService - ), - }; - - const graphClient = Client.initWithMiddleware(clientOptions); - - return graphClient; - }; - - /** - * This method inspects the HTTPS response from a http call for the "WWW-Authenticate header" - * If present, it grabs the claims challenge from the header and store it in the sessionStorage - * For more information, visit: https://docs.microsoft.com/en-us/azure/active-directory/develop/claims-challenge#claims-challenge-header-format - * @param response - */ - handleClaimsChallenge(response: any, providerOptions: ProviderOptions): void { - const authenticateHeader: string = response.headers.get('WWW-Authenticate'); - const claimsChallengeMap: any = parseChallenges(authenticateHeader); - let account: AccountInfo = this.authService.instance.getActiveAccount()!; - - /** - * This method stores the claim challenge to the session storage in the browser to be used when acquiring a token. - * To ensure that we are fetching the correct claim from the storage, we are using the clientId - * of the application and oid (user’s object id) as the key identifier of the claim with schema - * cc.. - */ - addClaimsToStorage( - claimsChallengeMap.claims, - `cc.${msalConfig.auth.clientId}.${account?.idTokenClaims?.oid}.${new URL(providerOptions.endpoint).hostname - }` - ); - - new MsalAuthenticationProvider( - providerOptions, - this.authService - ).getAccessToken(); - } -} - -/** - * This class implements the IAuthenticationProvider interface, which allows a custom auth provider to be - * used with the Graph client. See: https://github.com/microsoftgraph/msgraph-sdk-javascript/blob/dev/src/IAuthenticationProvider.ts - */ -class MsalAuthenticationProvider implements AuthenticationProvider { - account; - scopes; - interactionType; - endpoint; - - constructor( - providerOptions: ProviderOptions, - private authService: MsalService - ) { - this.account = providerOptions.account; - this.scopes = providerOptions.scopes; - this.interactionType = providerOptions.interactionType; - this.endpoint = providerOptions.endpoint; - } - - /** - * This method will get called before every request to the ms graph server - * This should return a Promise that resolves to an accessToken (in case of success) or rejects with error (in case of failure) - * Basically this method will contain the implementation for getting and refreshing accessTokens - */ - getAccessToken(): Promise { - return new Promise(async (resolve, reject) => { - let response: AuthenticationResult; - let resource = new URL(this.endpoint).hostname; - let claim = - this.authService.instance.getActiveAccount()! && - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${this.authService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ? window.atob( - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${this.authService.instance.getActiveAccount()?.idTokenClaims - ?.oid - }.${resource}` - ) - ) - : undefined; // e.g {"access_token":{"xms_cc":{"values":["cp1"]}}} - try { - response = await this.authService.instance.acquireTokenSilent({ - account: this.account, - scopes: this.scopes, - claims: claim, - }); - - if (response.accessToken) { - resolve(response.accessToken); - } else { - reject(Error('Failed to acquire an access token')); - } - } catch (error) { - // in case if silent token acquisition fails, fallback to an interactive method - if (error instanceof InteractionRequiredAuthError) { - switch (this.interactionType) { - case InteractionType.Popup: - response = await this.authService.instance.acquireTokenPopup({ - scopes: this.scopes, - claims: claim, - }); - - if (response.accessToken) { - resolve(response.accessToken); - } else { - reject(Error('Failed to acquire an access token')); - } - - break; - - case InteractionType.Redirect: - /** - * This will cause the app to leave the current page and redirect to the consent screen. - * Once consent is provided, the app will return back to the current page and then the - * silent token acquisition will succeed. - */ - this.authService.instance.acquireTokenRedirect({ - scopes: this.scopes, - claims: claim, - }); - break; - - default: - break; - } - } - } - }); - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.css b/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.css deleted file mode 100644 index f27fd449..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,27 +0,0 @@ -#table-container { - height: 500px; - overflow: auto; -} - -table { - margin: 3% auto 1% auto; - width: 70%; - -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.html b/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.html deleted file mode 100644 index ce3bccc0..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,41 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and call Microsoft Graph - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and acquire an access - token for the Microsoft Graph API - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    -
    ApplicationAppIdUrl in the Azure portal
    - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    - - - diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.ts b/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.ts deleted file mode 100644 index 0d962e46..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { - EventMessage, - EventType, - AuthenticationResult, - InteractionStatus, -} from '@azure/msal-browser'; - -import { createClaimsTable } from '../utils/claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'], -}) -export class HomeComponent implements OnInit { - loginDisplay = false; - dataSource: any = []; - displayedColumns: string[] = ['claim', 'value', 'description']; - - private readonly _destroying$ = new Subject(); - - constructor( - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) {} - - ngOnInit(): void { - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims( - this.authService.instance.getActiveAccount()?.idTokenClaims - ); - }); - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/profile.ts b/2-Authorization-I/1-call-graph/SPA/src/app/profile.ts deleted file mode 100644 index b2642957..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/profile.ts +++ /dev/null @@ -1,13 +0,0 @@ -export type Profile = { - id?: string; - userPrincipalName?: string; - businessPhones?: Array; - displayName?: string; - givenName?: string; - jobTitle?: string; - mail?: string; - mobilePhone?: string; - officeLocation?: string; - preferredLanguage?: string; - surname?: string; -}; diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.css b/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.css deleted file mode 100644 index 9ec25fcf..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.css +++ /dev/null @@ -1,9 +0,0 @@ -table { - width: 70%; - margin: 1% auto auto auto; -} - -.card-section { - margin: 10% 10% 1% 10%; - padding: 4%; -} \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.html b/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.html deleted file mode 100644 index 6ce281a8..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.html +++ /dev/null @@ -1,27 +0,0 @@ -
    -

    Calling Microsoft Graph API...

    -
      -
    • resource: User object
    • -
    • endpoint: https://graph.microsoft.com/v1.0/me
    • -
    • scope: User.Read
    • -
    -

    Contents of the response is below:

    -
    - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}}
    \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.ts b/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.ts deleted file mode 100644 index 86def47a..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/profile/profile.component.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { InteractionType } from '@azure/msal-browser'; -import { MsalService } from '@azure/msal-angular'; -import { ResponseType } from '@microsoft/microsoft-graph-client'; - -import { GraphService, ProviderOptions } from '../graph.service'; -import { protectedResources } from '../auth-config'; -import { Profile } from '../profile'; - -@Component({ - selector: 'app-profile', - templateUrl: './profile.component.html', - styleUrls: ['./profile.component.css'], -}) -export class ProfileComponent implements OnInit { - profile!: Profile; - displayedColumns: string[] = ['claim', 'value']; - dataSource: any = []; - - constructor( - private graphService: GraphService, - private authService: MsalService - ) { } - - ngOnInit() { - const providerOptions: ProviderOptions = { - account: this.authService.instance.getActiveAccount()!, - scopes: protectedResources.graphMe.scopes, - interactionType: InteractionType.Redirect, - endpoint: protectedResources.graphMe.endpoint, - }; - - this.getProfile(providerOptions); - } - - getProfile(providerOptions: ProviderOptions) { - this.graphService - .getGraphClient(providerOptions) - .api('/me') - .responseType(ResponseType.RAW) - .get() - .then((response: any) => { - if (response.status === 200) return response.json(); - if (response.status === 401) { - if (response.headers.get('WWW-Authenticate')) { - this.graphService.handleClaimsChallenge(response, providerOptions); - } - } - }) - .then((profileResponse: Profile) => { - Object.entries(profileResponse).forEach((claim: [string, unknown]) => { - this.dataSource = [...this.dataSource, { claim: claim[0], value: claim[1] }]; - }); - }) - .catch((error: any) => { - console.log(error); - }); - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/sample.spec.ts b/2-Authorization-I/1-call-graph/SPA/src/app/sample.spec.ts deleted file mode 100644 index 3dc3c0c8..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration, MsalRedirectComponent} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/profile')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/utils/claim-utils.ts b/2-Authorization-I/1-call-graph/SPA/src/app/utils/claim-utils.ts deleted file mode 100644 index 744cf0c5..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/utils/claim-utils.ts +++ /dev/null @@ -1,212 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case 'login_hint': - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case 'idtyp': - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** - * Populates claim, description, and value into an claimsObject - * @param {String} claim - * @param {String} value - * @param {String} description - * @param {Array} claimsObject - */ -const populateClaim = ( - claim: string, - value: string, - description: string, - claimsTable: any[] -): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description, - }); -}; - -/** - * Transforms Unix timestamp to date and returns a string value of that date - * @param {number} date Unix timestamp - * @returns - */ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; - -/** - * This method parses WWW-Authenticate authentication headers - * @param header - * @return {Object} challengeMap - */ -export const parseChallenges = (header: string): Record => { - const schemeSeparator = header.indexOf(' '); - const challenges = header.substring(schemeSeparator + 1).split(', '); - const challengeMap = {} as any; - - challenges.forEach((challenge: string) => { - const [key, value] = challenge.split('='); - challengeMap[key.trim()] = window.decodeURI(value.replace(/(^"|"$)/g, '')); - }); - - return challengeMap; -} diff --git a/2-Authorization-I/1-call-graph/SPA/src/app/utils/storage-utils.ts b/2-Authorization-I/1-call-graph/SPA/src/app/utils/storage-utils.ts deleted file mode 100644 index c202b560..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/app/utils/storage-utils.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { msalConfig } from '../auth-config'; - -/** - * This method stores the claim challenge to the localStorage in the browser to be used when acquiring a token - * @param {String} claimsChallenge - */ -export const addClaimsToStorage = ( - claimsChallenge: string, - claimsChallengeId: string -): void => { - isBase64String(claimsChallenge) ? sessionStorage.setItem(claimsChallengeId, claimsChallenge) - : sessionStorage.setItem(claimsChallengeId, window.btoa(claimsChallenge)); -}; - -/** - * This method fetches the claim challenge from localStorage - * @param {string} claimsChallengeId - * @returns - */ -export const getClaimsFromStorage = (claimsChallengeId: string): any => { - return sessionStorage.getItem(claimsChallengeId); -}; - -/** - * This method clears localStorage of any claims challenge entry - * @param {Object} account - */ -export const clearStorage = (account: any): void => { - for (var key in sessionStorage) { - if (key.startsWith(`cc.${msalConfig.auth.clientId}.${account.idTokenClaims.oid}`)) { - sessionStorage.removeItem(key); - } - } -}; - -/** - * Checks if a string is base64 encoded - * @param str a string to be checked if it is base64 encoded - * @returns {boolean} true if the string is base64 encoded, false otherwise - */ -export const isBase64String = (str: string): boolean => { - const base64regex = /[A-Za-z0-9+/=]/; - return base64regex.test(str); -}; diff --git a/2-Authorization-I/1-call-graph/SPA/src/assets/.gitkeep b/2-Authorization-I/1-call-graph/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/2-Authorization-I/1-call-graph/SPA/src/environments/environment.prod.ts b/2-Authorization-I/1-call-graph/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/2-Authorization-I/1-call-graph/SPA/src/environments/environment.ts b/2-Authorization-I/1-call-graph/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/2-Authorization-I/1-call-graph/SPA/src/favicon.ico b/2-Authorization-I/1-call-graph/SPA/src/favicon.ico deleted file mode 100644 index 997406ad22c29aae95893fb3d666c30258a09537..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 948 zcmV;l155mgP)CBYU7IjCFmI-B}4sMJt3^s9NVg!P0 z6hDQy(L`XWMkB@zOLgN$4KYz;j0zZxq9KKdpZE#5@k0crP^5f9KO};h)ZDQ%ybhht z%t9#h|nu0K(bJ ztIkhEr!*UyrZWQ1k2+YkGqDi8Z<|mIN&$kzpKl{cNP=OQzXHz>vn+c)F)zO|Bou>E z2|-d_=qY#Y+yOu1a}XI?cU}%04)zz%anD(XZC{#~WreV!a$7k2Ug`?&CUEc0EtrkZ zL49MB)h!_K{H(*l_93D5tO0;BUnvYlo+;yss%n^&qjt6fZOa+}+FDO(~2>G z2dx@=JZ?DHP^;b7*Y1as5^uphBsh*s*z&MBd?e@I>-9kU>63PjP&^#5YTOb&x^6Cf z?674rmSHB5Fk!{Gv7rv!?qX#ei_L(XtwVqLX3L}$MI|kJ*w(rhx~tc&L&xP#?cQow zX_|gx$wMr3pRZIIr_;;O|8fAjd;1`nOeu5K(pCu7>^3E&D2OBBq?sYa(%S?GwG&_0-s%_v$L@R!5H_fc)lOb9ZoOO#p`Nn`KU z3LTTBtjwo`7(HA6 z7gmO$yTR!5L>Bsg!X8616{JUngg_@&85%>W=mChTR;x4`P=?PJ~oPuy5 zU-L`C@_!34D21{fD~Y8NVnR3t;aqZI3fIhmgmx}$oc-dKDC6Ap$Gy>a!`A*x2L1v0 WcZ@i?LyX}70000 - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/2-Authorization-I/1-call-graph/SPA/src/main.ts b/2-Authorization-I/1-call-graph/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/2-Authorization-I/1-call-graph/SPA/src/polyfills.ts b/2-Authorization-I/1-call-graph/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/2-Authorization-I/1-call-graph/SPA/src/styles.css b/2-Authorization-I/1-call-graph/SPA/src/styles.css deleted file mode 100644 index f413adaf..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/styles.css +++ /dev/null @@ -1,6 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ -@import '~@angular/material/prebuilt-themes/deeppurple-amber.css'; - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } -.container { margin: 1%; } \ No newline at end of file diff --git a/2-Authorization-I/1-call-graph/SPA/src/test.ts b/2-Authorization-I/1-call-graph/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/2-Authorization-I/1-call-graph/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/2-Authorization-I/1-call-graph/SPA/tsconfig.app.json b/2-Authorization-I/1-call-graph/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/2-Authorization-I/1-call-graph/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/2-Authorization-I/1-call-graph/SPA/tsconfig.json b/2-Authorization-I/1-call-graph/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/2-Authorization-I/1-call-graph/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/2-Authorization-I/1-call-graph/SPA/tsconfig.spec.json b/2-Authorization-I/1-call-graph/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/2-Authorization-I/1-call-graph/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI.Tests/ConfigurationTests.cs b/3-Authorization-II/1-call-api/API/TodoListAPI.Tests/ConfigurationTests.cs deleted file mode 100644 index 5b2477c2..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI.Tests/ConfigurationTests.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Xunit; -using Microsoft.Extensions.Configuration; - -namespace TodoListAPI.Tests -{ - public class ConfigurationTests - { - public static IConfiguration InitConfiguration() - { - var config = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .Build(); - - return config; - } - - [Fact] - public void ShouldNotContainClientId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var clientId = myConfiguration.GetSection("AzureAd")["ClientId"]; - - Assert.False(Guid.TryParse(clientId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainTenantId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var tenantId = myConfiguration.GetSection("AzureAd")["TenantId"]; - - Assert.False(Guid.TryParse(tenantId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainDomain() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var domain = $"https://{myConfiguration.GetSection("AzureAd")["Domain"]}"; - - Assert.False(Uri.TryCreate(domain, UriKind.Absolute, out var uri)); - } - } -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj b/3-Authorization-II/1-call-api/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj deleted file mode 100644 index 66ff194e..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - net6.0 - - false - - - - - Always - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI.sln b/3-Authorization-II/1-call-api/API/TodoListAPI.sln deleted file mode 100644 index b8b6a92e..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31005.135 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI", "TodoListAPI\TodoListAPI.csproj", "{3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI.Tests", "TodoListAPI.Tests\TodoListAPI.Tests.csproj", "{FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.Build.0 = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {44AB506D-AF3A-4AE5-90E9-CFECC92533A6} - EndGlobalSection -EndGlobal diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/Controllers/TodoListController.cs b/3-Authorization-II/1-call-api/API/TodoListAPI/Controllers/TodoListController.cs deleted file mode 100644 index c13fec83..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/Controllers/TodoListController.cs +++ /dev/null @@ -1,206 +0,0 @@ -using System.Linq; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Authorization; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.Identity.Web.Resource; -using TodoListAPI.Models; - -namespace TodoListAPI.Controllers -{ - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class TodoListController : ControllerBase - { - private readonly TodoContext _context; - - public TodoListController(TodoContext context) - { - _context = context; - } - - /// - /// Indicates if the AT presented has application or delegated permissions. - /// - /// - private bool IsAppOnlyToken() - { - // Add in the optional 'idtyp' claim to check if the access token is coming from an application or user. - // See: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - if (HttpContext.User.Claims.Any(c => c.Type == "idtyp")) - { - return HttpContext.User.Claims.Any(c => c.Type == "idtyp" && c.Value == "app"); - } - else - { - // alternatively, if an AT contains the roles claim but no scp claim, that indicates it's an app token - return HttpContext.User.Claims.Any(c => c.Type == "roles") && !HttpContext.User.Claims.Any(c => c.Type == "scp"); - } - } - - // GET: api/TodoItems - [HttpGet] - /// - /// Access tokens that have neither the 'scp' (for delegated permissions) nor - /// 'roles' (for application permissions) claim are not to be honored. - /// - /// An access token issued by Azure AD will have at least one of the two claims. Access tokens - /// issued to a user will have the 'scp' claim. Access tokens issued to an application will have - /// the roles claim. Access tokens that contain both claims are issued only to users, where the scp - /// claim designates the delegated permissions, while the roles claim designates the user's role. - /// - /// To determine whether an access token was issued to a user (i.e delegated) or an application - /// more easily, we recommend enabling the optional claim 'idtyp'. For more information, see: - /// https://docs.microsoft.com/azure/active-directory/develop/access-tokens#user-and-application-tokens - /// - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Read", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Read" - )] - public async Task>> GetTodoItems() - { - if (!IsAppOnlyToken()) - { - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _context.TodoItems.Where(x => x.Owner == HttpContext.User.GetObjectId()).ToListAsync(); - } - else - { - return await _context.TodoItems.ToListAsync(); - } - } - - // GET: api/TodoItems/5 - [HttpGet("{id}")] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Read", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Read" - )] - public async Task> GetTodoItem(int id) - { - // if it only has delegated permissions, then it will be t.id==id && x.Owner == owner - // if it has app permissions the it will return t.id==id - if (!IsAppOnlyToken()) - { - return await _context.TodoItems.FirstOrDefaultAsync(t => t.Id == id && t.Owner == HttpContext.User.GetObjectId()); - } - else - { - return await _context.TodoItems.FirstOrDefaultAsync(t => t.Id == id); - } - } - - // PUT: api/TodoItems/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPut("{id}")] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Write", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Write" - )] - public async Task PutTodoItem(int id, TodoItem todoItem) - { - if (id != todoItem.Id || !_context.TodoItems.Any(x => x.Id == id)) - { - return NotFound(); - } - - - if ((!IsAppOnlyToken() && _context.TodoItems.Any(x => x.Id == id && x.Owner == HttpContext.User.GetObjectId())) - || - IsAppOnlyToken()) - { - if (_context.TodoItems.Any(x => x.Id == id && x.Owner == HttpContext.User.GetObjectId())) - { - _context.Entry(todoItem).State = EntityState.Modified; - - try - { - await _context.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!_context.TodoItems.Any(e => e.Id == id)) - { - return NotFound(); - } - else - { - throw; - } - } - } - } - - return NoContent(); - } - - // POST: api/TodoItems - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Write", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Write" - )] - public async Task> PostTodoItem(TodoItem todoItem) - { - string owner = HttpContext.User.GetObjectId(); - - if (IsAppOnlyToken()) - { - // with such a permission any owner name is accepted - owner = todoItem.Owner; - } - - todoItem.Owner = owner; - todoItem.Status = false; - - _context.TodoItems.Add(todoItem); - await _context.SaveChangesAsync(); - - return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); - } - - // DELETE: api/TodoItems/5 - [HttpDelete("{id}")] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Write", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Write" - )] - public async Task> DeleteTodoItem(int id) - { - TodoItem todoItem = await _context.TodoItems.FindAsync(id); - - if (todoItem == null) - { - return NotFound(); - } - - if ((!IsAppOnlyToken() && _context.TodoItems.Any(x => x.Id == id && x.Owner == HttpContext.User.GetObjectId())) - || - IsAppOnlyToken()) - { - _context.TodoItems.Remove(todoItem); - await _context.SaveChangesAsync(); - } - - return NoContent(); - } - } -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoContext.cs b/3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoContext.cs deleted file mode 100644 index a84bbfcc..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoContext.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace TodoListAPI.Models -{ - public class TodoContext : DbContext - { - public TodoContext(DbContextOptions options) - : base(options) - { - - } - - public DbSet TodoItems { get; set; } - } -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoItem.cs b/3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoItem.cs deleted file mode 100644 index b591aae4..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/Models/TodoItem.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace TodoListAPI.Models -{ - public class TodoItem - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string Owner { get; set; } - public string Description { get; set; } - public bool Status { get; set; } - } -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/Program.cs b/3-Authorization-II/1-call-api/API/TodoListAPI/Program.cs deleted file mode 100644 index f1246907..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ - -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace TodoListAPI -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/Properties/launchSettings.json b/3-Authorization-II/1-call-api/API/TodoListAPI/Properties/launchSettings.json deleted file mode 100644 index c832a603..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44351", - "sslPort": 44351 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "https://localhost:44351/api/todolist", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "TodoListAPI": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44351/", - "sslPort": 44351 - } - } -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/Startup.cs b/3-Authorization-II/1-call-api/API/TodoListAPI/Startup.cs deleted file mode 100644 index 9a534802..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/Startup.cs +++ /dev/null @@ -1,104 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.IdentityModel.Logging; - -using TodoListAPI.Models; - -namespace TodoListAPI -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - { - Configuration.Bind("AzureAd", options); - options.Events = new JwtBearerEvents(); - - /// - /// Below you can do extended token validation and check for additional claims, such as: - /// - /// - check if the caller's tenant is in the allowed tenants list via the 'tid' claim (for multi-tenant applications) - /// - check if the caller's account is homed or guest via the 'acct' optional claim - /// - check if the caller belongs to right roles or groups via the 'roles' or 'groups' claim, respectively - /// - /// Bear in mind that you can do any of the above checks within the individual routes and/or controllers as well. - /// For more information, visit: https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validate-the-user-has-permission-to-access-this-data - /// - - //options.Events.OnTokenValidated = async context => - //{ - // string[] allowedClientApps = { /* list of client ids to allow */ }; - - // string clientappId = context?.Principal?.Claims - // .FirstOrDefault(x => x.Type == "azp" || x.Type == "appid")?.Value; - - // if (!allowedClientApps.Contains(clientappId)) - // { - // throw new System.Exception("This client is not authorized"); - // } - //}; - }, options => { Configuration.Bind("AzureAd", options); }); - - // The following flag can be used to get more descriptive errors in development environments - IdentityModelEventSource.ShowPII = false; - - services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); - - services.AddControllers(); - - // Allowing CORS for all domains and HTTP methods for the purpose of the sample - // In production, modify this with the actual domains and HTTP methods you want to allow - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - // Since IdentityModel version 5.2.1 (or since Microsoft.AspNetCore.Authentication.JwtBearer version 2.2.0), - // Personal Identifiable Information is not written to the logs by default, to be compliant with GDPR. - // For debugging/development purposes, one can enable additional detail in exceptions by setting IdentityModelEventSource.ShowPII to true. - // Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true; - app.UseDeveloperExceptionPage(); - } - else - { - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } - - app.UseCors("default"); - app.UseHttpsRedirection(); - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/TodoListAPI.csproj b/3-Authorization-II/1-call-api/API/TodoListAPI/TodoListAPI.csproj deleted file mode 100644 index 4eab0792..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/TodoListAPI.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net6.0 - aspnet-TodoListAPI-BA938C29-8BAB-4664-A688-8FD54049C1C3 - 1 - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.Development.json b/3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.Development.json deleted file mode 100644 index 8983e0fc..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } -} diff --git a/3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.json b/3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.json deleted file mode 100644 index de3d0d0c..00000000 --- a/3-Authorization-II/1-call-api/API/TodoListAPI/appsettings.json +++ /dev/null @@ -1,25 +0,0 @@ -{ - "AzureAd": { - "Instance": "https://login.microsoftonline.com/", - "Domain": "Enter the domain of your Azure AD tenant, e.g. 'contoso.onmicrosoft.com'", - "TenantId": "Enter the tenant ID", - "ClientId": "Enter the Client ID (aka 'Application ID')", - "Scopes": { - "Read": ["TodoList.Read", "TodoList.ReadWrite"], - "Write": ["TodoList.ReadWrite"] - }, - "AppPermissions": { - "Read": ["TodoList.Read.All", "TodoList.ReadWrite.All"], - "Write": ["TodoList.ReadWrite.All"] - } - }, - "https_port": 44351, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" -} diff --git a/3-Authorization-II/1-call-api/AppCreationScripts/AppCreationScripts.md b/3-Authorization-II/1-call-api/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/3-Authorization-II/1-call-api/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/3-Authorization-II/1-call-api/AppCreationScripts/Cleanup.ps1 b/3-Authorization-II/1-call-api/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index 5fa70a98..00000000 --- a/3-Authorization-II/1-call-api/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,189 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'service' (msal-dotnet-api) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-dotnet-api'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-dotnet-api'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-dotnet-api) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-dotnet-api'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-dotnet-api.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-dotnet-api'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-dotnet-api'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } - Write-Host "Removing 'client' (msal-angular-spa) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-angular-spa'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-angular-spa'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-angular-spa) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-angular-spa'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-angular-spa.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-angular-spa'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-angular-spa'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/3-Authorization-II/1-call-api/AppCreationScripts/Configure.ps1 b/3-Authorization-II/1-call-api/AppCreationScripts/Configure.ps1 deleted file mode 100644 index a64bfe3c..00000000 --- a/3-Authorization-II/1-call-api/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,495 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -# Adds the requiredAccesses (expressed as a pipe separated string) to the requiredAccess structure -# The exposed permissions are in the $exposedPermissions collection, and the type of permission (Scope | Role) is -# described in $permissionType -Function AddResourcePermission($requiredAccess, ` - $exposedPermissions, [string]$requiredAccesses, [string]$permissionType) -{ - foreach($permission in $requiredAccesses.Trim().Split("|")) - { - foreach($exposedPermission in $exposedPermissions) - { - if ($exposedPermission.Value -eq $permission) - { - $resourceAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess - $resourceAccess.Type = $permissionType # Scope = Delegated permissions | Role = Application permissions - $resourceAccess.Id = $exposedPermission.Id # Read directory data - $requiredAccess.ResourceAccess += $resourceAccess - } - } - } -} - -# -# Example: GetRequiredPermissions "Microsoft Graph" "Graph.Read|User.Read" -# See also: http://stackoverflow.com/questions/42164581/how-to-configure-a-new-azure-ad-application-through-powershell -Function GetRequiredPermissions([string] $applicationDisplayName, [string] $requiredDelegatedPermissions, [string]$requiredApplicationPermissions, $servicePrincipal) -{ - # If we are passed the service principal we use it directly, otherwise we find it from the display name (which might not be unique) - if ($servicePrincipal) - { - $sp = $servicePrincipal - } - else - { - $sp = Get-MgServicePrincipal -Filter "DisplayName eq '$applicationDisplayName'" - } - $appid = $sp.AppId - $requiredAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess - $requiredAccess.ResourceAppId = $appid - $requiredAccess.ResourceAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess] - - # $sp.Oauth2Permissions | Select Id,AdminConsentDisplayName,Value: To see the list of all the Delegated permissions for the application: - if ($requiredDelegatedPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.Oauth2PermissionScopes -requiredAccesses $requiredDelegatedPermissions -permissionType "Scope" - } - - # $sp.AppRoles | Select Id,AdminConsentDisplayName,Value: To see the list of all the Application permissions for the application - if ($requiredApplicationPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.AppRoles -requiredAccesses $requiredApplicationPermissions -permissionType "Role" - } - return $requiredAccess -} - - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function creates a new Azure AD scope (OAuth2Permission) with default and provided values -#> -Function CreateScope( [string] $value, [string] $userConsentDisplayName, [string] $userConsentDescription, [string] $adminConsentDisplayName, [string] $adminConsentDescription, [string] $consentType) -{ - $scope = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope - $scope.Id = New-Guid - $scope.Value = $value - $scope.UserConsentDisplayName = $userConsentDisplayName - $scope.UserConsentDescription = $userConsentDescription - $scope.AdminConsentDisplayName = $adminConsentDisplayName - $scope.AdminConsentDescription = $adminConsentDescription - $scope.IsEnabled = $true - $scope.Type = $consentType - return $scope -} - -<#.Description - This function creates a new Azure AD AppRole with default and provided values -#> -Function CreateAppRole([string] $types, [string] $name, [string] $description) -{ - $appRole = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole - $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string] - $typesArr = $types.Split(',') - foreach($type in $typesArr) - { - $appRole.AllowedMemberTypes += $type; - } - $appRole.DisplayName = $name - $appRole.Id = New-Guid - $appRole.IsEnabled = $true - $appRole.Description = $description - $appRole.Value = $name; - return $appRole -} - -<#.Description - This function takes a string as input and creates an instance of an Optional claim object -#> -Function CreateOptionalClaim([string] $name) -{ - <#.Description - This function creates a new Azure AD optional claims with default and provided values - #> - - $appClaim = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim - $appClaim.AdditionalProperties = New-Object System.Collections.Generic.List[string] - $appClaim.Source = $null - $appClaim.Essential = $false - $appClaim.Name = $name - return $appClaim -} - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the service AAD application - Write-Host "Creating the AAD application (msal-dotnet-api)" - # create the application - $serviceAadApplication = New-MgApplication -DisplayName "msal-dotnet-api" ` - -Web ` - @{ ` - } ` - -Api ` - @{ ` - RequestedAccessTokenVersion = 2 ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - $currentAppId = $serviceAadApplication.AppId - $currentAppObjectId = $serviceAadApplication.Id - - $serviceIdentifierUri = 'api://'+$currentAppId - Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @($serviceIdentifierUri) - - # create the service principal of the newly created application - $serviceServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($serviceServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "idtyp" - $optionalClaims.AccessToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - - # Publish Application Permissions - $appRoles = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole] - $newRole = CreateAppRole -types "Application" -name "TodoList.Read.All" -description "e.g. Allows the app to read the signed-in user's files." - $appRoles.Add($newRole) - $newRole = CreateAppRole -types "Application" -name "TodoList.ReadWrite.All" -description "e.g. Allows the app to read the signed-in user's files." - $appRoles.Add($newRole) - Update-MgApplication -ApplicationId $currentAppObjectId -AppRoles $appRoles - - # rename the user_impersonation scope if it exists to match the readme steps or add a new scope - - # delete default scope i.e. User_impersonation - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = $serviceAadApplication.Api.Oauth2PermissionScopes | Where-Object { $_.Value -eq "User_impersonation" } - - if($scope -ne $null) - { - # disable the scope - $scope.IsEnabled = $false - $scopes.Add($scope) - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - - # clear the scope - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @()} - } - - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = CreateScope -value TodoList.Read ` - -userConsentDisplayName "TodoList.Read" ` - -userConsentDescription "eg. Allows the app to read your files." ` - -adminConsentDisplayName "TodoList.Read" ` - -adminConsentDescription "e.g. Allows the app to read the signed-in user's files." ` - -consentType "User" ` - - - $scopes.Add($scope) - $scope = CreateScope -value TodoList.ReadWrite ` - -userConsentDisplayName "TodoList.ReadWrite" ` - -userConsentDescription "eg. Allows the app to read your files." ` - -adminConsentDisplayName "TodoList.ReadWrite" ` - -adminConsentDescription "e.g. Allows the app to read the signed-in user's files." ` - -consentType "User" ` - - - $scopes.Add($scope) - - # add/update scopes - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - Write-Host "Done creating the service application (msal-dotnet-api)" - - # URL of the AAD application in the Azure portal - # Future? $servicePortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $servicePortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "service$currentAppIdmsal-dotnet-api" -Path createdApps.html - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-dotnet-api' at `n $servicePortalUrl" -ForegroundColor Green - # Create the client AAD application - Write-Host "Creating the AAD application (msal-angular-spa)" - # create the application - $clientAadApplication = New-MgApplication -DisplayName "msal-angular-spa" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200", "https://localhost:4200/auth"; ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - $currentAppId = $clientAadApplication.AppId - $currentAppObjectId = $clientAadApplication.Id - - $tenantName = (Get-MgApplication -ApplicationId $currentAppObjectId).PublisherDomain - #Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @("https://$tenantName/msal-angular-spa") - - # create the service principal of the newly created application - $clientServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($clientServicePrincipal.DisplayName)'" - } - Write-Host "Done creating the client application (msal-angular-spa)" - - # URL of the AAD application in the Azure portal - # Future? $clientPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $clientPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "client$currentAppIdmsal-angular-spa" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'client' to 'service') - Write-Host "Getting access from 'client' to 'service'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "msal-dotnet-api"` - -requiredDelegatedPermissions "TodoList.Read|TodoList.ReadWrite" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'service' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-angular-spa' at `n $clientPortalUrl" -ForegroundColor Green - - # Update config file for 'service' - # $configFile = $pwd.Path + "\..\API\TodoListAPI\appsettings.json" - $configFile = $(Resolve-Path ($pwd.Path + "\..\API\TodoListAPI\appsettings.json")) - - $dictionary = @{ "Enter the domain of your Azure AD tenant, e.g. 'contoso.onmicrosoft.com'" = $tenantName;"Enter the Client ID (aka 'Application ID')" = $serviceAadApplication.AppId;"Enter the tenant ID" = $tenantId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $clientAadApplication.AppId;"Enter_the_Tenant_Info_Here" = $tenantId;"Enter_the_Web_Api_Application_Id_Here" = $serviceAadApplication.AppId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - Write-Host "IMPORTANT: Please follow the instructions below to complete a few manual step(s) in the Azure portal": - Write-Host "- For service" - Write-Host " - Navigate to $servicePortalUrl" - Write-Host " - Application 'service' publishes application permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host " - Application 'service' publishes delegated permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/AppCreationScripts/sample.json b/3-Authorization-II/1-call-api/AppCreationScripts/sample.json deleted file mode 100644 index 81caa858..00000000 --- a/3-Authorization-II/1-call-api/AppCreationScripts/sample.json +++ /dev/null @@ -1,104 +0,0 @@ -{ - "Sample": { - "Author": "derisen", - "Title": "An Angular SPA using MSAL Angular to sign-in users with Azure Active Directory and call a protected .NET Core web API", - "Level": 200, - "Client": "Angular SPA", - "Service": ".NET Core web API", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Platform": "javascript", - "Languages": [ - "typescript", - "csharp" - ], - "Products": [ - "azure-active-directory", - "aspnet-core", - "msal-angular" - ], - "Description": "An Angular SPA using MSAL Angular to sign-in users with Azure Active Directory and call a protected .NET Core web API" - }, - "AADApps": [ - { - "Id": "service", - "Name": "msal-dotnet-api", - "Kind": "WebApi", - "SDK": "MicrosoftIdentityWeb", - "Audience": "AzureADMyOrg", - "SampleSubPath": "3-Authorization-II\\1-call-api\\API", - "Scopes": ["TodoList.Read", "TodoList.ReadWrite"], - "AppRoles": [ - { - "AllowedMemberTypes": ["Application"], - "Name": "TodoList.Read.All", - "Description": "Allow this application to read every users TodoList items" - }, - { - "AllowedMemberTypes": ["Application"], - "Name": "TodoList.ReadWrite.All", - "Description": "Allow this application to read and write every users TodoList items" - } - ], - "OptionalClaims": { - "AccessTokenClaims": ["idtyp"] - } - }, - { - "Id": "client", - "Name": "msal-angular-spa", - "Kind": "SinglePageApplication", - "SDK": "MsalAngular", - "Audience": "AzureADMyOrg", - "HomePage": "https://localhost:4200", - "ReplyUrls": "http://localhost:4200, https://localhost:4200/auth", - "SampleSubPath": "3-Authorization-II\\1-call-api\\SPA", - "RequiredResourcesAccess": [ - { - "Resource": "service", - "DelegatedPermissions": ["TodoList.Read", "TodoList.ReadWrite"] - } - ] - } - ], - "CodeConfiguration": [ - { - "App": "service", - "SettingKind": "Replace", - "SettingFile": "\\..\\API\\TodoListAPI\\appsettings.json", - "Mappings": [ - { - "key": "Enter the domain of your Azure AD tenant, e.g. 'contoso.onmicrosoft.com'", - "value": "$tenantName" - }, - { - "key": "Enter the Client ID (aka 'Application ID')", - "value": ".AppId" - }, - { - "key": "Enter the tenant ID", - "value": "$tenantId" - } - ] - }, - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantId" - }, - { - "key": "Enter_the_Web_Api_Application_Id_Here", - "value": "service.AppId" - } - ] - } - ] -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/README-incremental.md b/3-Authorization-II/1-call-api/README-incremental.md deleted file mode 100644 index 7ad1dbd8..00000000 --- a/3-Authorization-II/1-call-api/README-incremental.md +++ /dev/null @@ -1,364 +0,0 @@ -# Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory and call a .NET Core web API - -* [Overview](#overview) -* [Scenario](#scenario) -* [Contents](#contents) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) to sign-in users and call a ASP.NET Core web API secured with [Azure Active Directory](https://aka.ms/identityplatform) (Azure AD) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular) for the SPA and the [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) (MIW) for the web API. - -> :information_source: See the community call: [Implement authorization in your applications with the Microsoft identity platform](https://www.youtube.com/watch?v=LRoc-na27l0) - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to sign-in and obtain a JWT [access token](https://aka.ms/access-tokens) from **Azure AD**. -2. The access token is used as a bearer token to authorize the user to call the .NET Core web API protected by **Azure AD**. -3. The web API responds with the currently signed-in user's todolist. - -![Topology](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-------------------------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `API/TodoListAPI/appsettings.json` | Authentication parameters for API project reside here. | -| `API/TodoListAPI/Startup.cs` | Microsoft.Identity.Web is initialized here. | -| `API/TodoListAPI/Controllers/TodoListController.cs` | Contains logic for controlling access to data. | - -## Setup the sample - -### Step 1. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 3-Authorization-II/1-call-api/API/TodoListAPI - dotnet restore -``` - -The .NET Core project runs on HTTPS. You might need to trust the development certificates if this is your first time running a project. To do so, execute the following from your shell or command line: - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 2. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -### Step 3: Register the sample application(s) in your tenant - -There are two projects in this sample. Each needs to be separately registered in your Azure AD tenant. To register these projects, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Register the service app (msal-dotnet-api) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-dotnet-api`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`api://{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client's to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, use `TodoList.Read`. - 1. Select **Admins and users** options for **Who can consent?**. - 1. For **Admin consent display name** type in the details, `e.g. Allows to read Todolist items`. - 1. For **Admin consent description** type in the details `e.g. Allow the app to read Todolist items on your behalf.` - 1. For **User consent display name** type in the details `e.g. Allows to read Todolist items`. - 1. For **User consent description** type in the details `e.g. Allow the app to read Todolist items on your behalf.` - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. - > Repeat the steps above for another scope named **TodoList.ReadWrite** -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -##### Publish Application Permissions - -1. All APIs should publish a minimum of one [App role](https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps#assign-app-roles-to-applications), also called [Application Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token as *themselves*, i.e. when they are not signing-in a user. **Application permissions** are the type of permissions that APIs should publish when they want to enable client applications to successfully authenticate as themselves and not need to sign-in users. To publish an application permission, follow these steps: -1. Still on the same app registration, select the **App roles** blade to the left. -1. Select **Create app role**: - 1. For **Display name**, enter a suitable name for your application permission, for instance **TodoList.Read.All**. - 1. For **Allowed member types**, choose **Application** to ensure other applications can be granted this permission. - 1. For **Value**, enter **TodoList.Read.All**. - 1. For **Description**, enter **Allow this application to read every users Todo list items**. - 1. Select **Apply** to save your changes. - > Repeat the steps above for another app permission named **TodoList.ReadWrite.All** - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **idtyp**. - 1. Select **Add** to save your changes. - -> :information_source: Be aware of [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access) whenever you are publishing permissions for a web API. - -##### Configure the service app (msal-dotnet-api) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Enter the domain of your Azure AD tenant, e.g. 'contoso.onmicrosoft.com'` and replace the existing value with your Azure AD tenant name. -1. Find the key `Enter the Client ID (aka 'Application ID')` and replace the existing value with the application ID (clientId) of `msal-dotnet-api` app copied from the Azure portal. -1. Find the key `Enter the tenant ID` and replace the existing value with your Azure AD tenant ID. - -#### Update the client app's registration (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure AD** service. -1. Select the **App Registrations** blade on the left, then find and select the application that you have registered in the previous tutorial (`msal-angular-spa`). -1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs. - 1. Select the **Add a permission** button and then, - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-dotnet-api`. - 1. In the **Delegated permissions** section, select the **TodoList.Read** and **TodoList.ReadWrite** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Configure the client app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant ID. -1. Find the key `Enter_the_Web_Api_Application_Id_Here` and replace the existing value(s) with the application ID (client ID) of the web API project that you've registered earlier, e.g. `api:///TodoList.Read` - -### Step 4: Running the sample - -From your shell or command line, execute the following commands: - -```console - cd 3-Authorization-II\1-call-api\API - dotnet run -``` - -Then, open a separate command line and run: - -```console - cd 3-Authorization-II\1-call-api\SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Select the **Sign In** button on the top right corner. -1. Select the **TodoList** button on the navigation bar. This will make a call to the TodoList web API. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../issues) page. - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. Make sure that your questions or comments are tagged with [`azure-active-directory` `angular` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -## About the code - -### CORS settings - -You need to set **cross-origin resource sharing** (CORS) policy to be able to call the **TodoListAPI** in [Startup.cs](./API/TodoListAPI/Startup.cs). For the purpose of the sample, **CORS** is enabled for **all** domains and methods. This is insecure and only used for demonstration purposes here. In production, you should modify this as to allow only the domains that you designate. If your web API is going to be hosted on **Azure App Service**, we recommend configuring CORS on the App Service itself. - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // ... - - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); -} -``` - -### Access token validation - -On the web API side, the `AddMicrosoftIdentityWebApiAuthentication` method in [Startup.cs](./API/TodoListAPI/Startup.cs) protects the web API by [validating access tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) sent tho this API. Check out [Protected web API: Code configuration](https://docs.microsoft.com/azure/active-directory/develop/scenario-protected-web-api-app-configuration) which explains the inner workings of this method in more detail. Simply add the following line under the `ConfigureServices` method: - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddMicrosoftIdentityWebApiAuthentication(Configuration); - - // ... -} -``` - -For validation and debugging purposes, developers can decode **JWT**s (*JSON Web Tokens*) using [jwt.ms](https://jwt.ms). - -### Verifying permissions - -Access tokens that have neither the **scp** (for delegated permissions) nor **roles** (for application permissions) claim with the required scopes/permissions should not be accepted. In the sample, this is illustrated via the `RequiredScopeOrAppPermission` attribute in [TodoListController.cs](./API/TodoListAPI/Controllers/TodoListController.cs): - -```csharp -[HttpGet] -/// -/// An access token issued by Azure AD will have at least one of the two claims. Access tokens -/// issued to a user will have the 'scp' claim. Access tokens issued to an application will have -/// the roles claim. Access tokens that contain both claims are issued only to users, where the scp -/// claim designates the delegated permissions, while the roles claim designates the user's role. -/// -[RequiredScopeOrAppPermission( - AcceptedScope = new string[] { _todoListRead, _todoListReadWrite }, - AcceptedAppPermission = new string[] { _todoListReadAll, _todoListReadWriteAll } -)] -public async Task>> GetTodoItems() -{ - // route logic ... -} -``` - -### Access to data - -Web API endpoints should be prepared to accept calls from both users and applications, and should have control structures in place to respond to each accordingly. For instance, a call from a user via delegated permissions should be responded with user's data, while a call from an application via application permissions might be responded with the entire todolist. This is illustrated in the [TodoListController](./API/TodoListAPI/Controllers/TodoListController.cs) controller: - -```csharp -// GET: api/TodoItems -[HttpGet] -[RequiredScopeOrAppPermission( - AcceptedScope = new string[] { _todoListRead, _todoListReadWrite }, - AcceptedAppPermission = new string[] { _todoListReadAll, _todoListReadWriteAll } -)] -public async Task>> GetTodoItems() -{ - if (!IsAppOnlyToken()) - { - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _context.TodoItems.Where(x => x.Owner == HttpContext.User.GetObjectId()).ToListAsync(); - } - else - { - return await _context.TodoItems.ToListAsync(); - } -} - -/// -/// Indicates if the AT presented has application or delegated permissions. -/// -/// -private bool IsAppOnlyToken() -{ - // Add in the optional 'idtyp' claim to check if the access token is coming from an application or user. - // See: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - if (HttpContext.User.Claims.Any(c => c.Type == "idtyp")) - { - return HttpContext.User.Claims.Any(c => c.Type == "idtyp" && c.Value == "app"); - } - else - { - // alternatively, if an AT contains the roles claim but no scp claim, that indicates it's an app token - return HttpContext.User.Claims.Any(c => c.Type == "roles") && !HttpContext.User.Claims.Any(c => c.Type == "scp"); - } -} -``` - -When granting access to data based on scopes, be sure to follow [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access). - -### Debugging the sample - -To debug the .NET Core web API that comes with this sample, install the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) for Visual Studio Code. - -Learn more about using [.NET Core with Visual Studio Code](https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code). - -## Next Tutorial - -Continue with the next tutorial: [Deploy your apps to Azure](../../4-Deployment/README-incremental.md). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -- [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -- [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -- [Quickstart: Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -- [Quickstart: Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -- [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -- [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -- [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -- [Microsoft Identity Web authentication library](https://docs.microsoft.com/azure/active-directory/develop/microsoft-identity-web) -- [Logging in MSAL.NET applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging-dotnet) -- [Handle errors and exceptions in MSAL.NET](https://docs.microsoft.com/azure/active-directory/develop/msal-error-handling-dotnet) -- [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -- [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -- [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/README.md b/3-Authorization-II/1-call-api/README.md deleted file mode 100644 index a062f76f..00000000 --- a/3-Authorization-II/1-call-api/README.md +++ /dev/null @@ -1,417 +0,0 @@ ---- -page_type: sample -extensions: - services: ms-identity - platform: javascript -languages: - - typescript - - csharp -products: - - azure-active-directory - - aspnet-core - - msal-angular - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-netcore -description: This sample demonstrates an Angular single-page application (SPA) to sign-in users and call a ASP.NET Core web API secured with Azure Active Directory (Azure AD) using the Microsoft Authentication Library for Angular (MSAL Angular) for the SPA and the Microsoft.Identity.Web (MIW) for the web API. ---- - -# Angular single-page application using MSAL Angular to sign-in users with Azure Active Directory and call a .NET Core web API - -* [Overview](#overview) -* [Scenario](#scenario) -* [Contents](#contents) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) to sign-in users and call a ASP.NET Core web API secured with [Azure Active Directory](https://aka.ms/identityplatform) (Azure AD) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular) for the SPA and the [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) (MIW) for the web API. - -> :information_source: See the community call: [Implement authorization in your applications with the Microsoft identity platform](https://www.youtube.com/watch?v=LRoc-na27l0) - -## Scenario - -1. The client Angular SPA uses **MSAL Angular** to sign-in and obtain a JWT [access token](https://aka.ms/access-tokens) from **Azure AD**. -2. The access token is used as a bearer token to authorize the user to call the .NET Core web API protected by **Azure AD**. -3. The web API responds with the currently signed-in user's todolist. - -![Topology](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-------------------------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `API/TodoListAPI/appsettings.json` | Authentication parameters for API project reside here. | -| `API/TodoListAPI/Startup.cs` | Microsoft.Identity.Web is initialized here. | -| `API/TodoListAPI/Controllers/TodoListController.cs` | Contains logic for controlling access to data. | - -## Prerequisites - -* Either [Visual Studio](https://visualstudio.microsoft.com/downloads/) or [Visual Studio Code](https://code.visualstudio.com/download) and [.NET Core SDK](https://www.microsoft.com/net/learn/get-started) -* An **Azure AD** tenant. For more information, see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/test-setup-environment#get-a-test-tenant) -* A user account in your **Azure AD** tenant. This sample will not work with a **personal Microsoft account**. If you're signed in to the [Azure portal](https://portal.azure.com) with a personal Microsoft account and have not created a user account in your directory before, you will need to create one before proceeding. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 3-Authorization-II/1-call-api/API/TodoListAPI - dotnet restore -``` - -The .NET Core project runs on HTTPS. You might need to trust the development certificates if this is your first time running a project. To do so, execute the following from your shell or command line: - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 3. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -### Step 4: Register the sample application(s) in your tenant - -There are two projects in this sample. Each needs to be separately registered in your Azure AD tenant. To register these projects, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Choose the Azure AD tenant where you want to create your applications - -To manually register the apps, as a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -#### Register the service app (msal-dotnet-api) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-dotnet-api`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`api://{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client's to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, enter **TodoList.Read** (case-sensitive). - 1. Select **Admins and users** options for **Who can consent?**. - 1. For **Admin consent display name** type in the details, `e.g. Allow the users of the app msal-dotnet-api to read Todolist items`. - 1. For **Admin consent description** type in the details `e.g. Allows the app msal-dotnet-api to read the signed-in users Todolist items.` - 1. For **User consent display name** type in the details `e.g. Read Todolist items as yourself`. - 1. For **User consent description** type in the details `e.g. Allow the app msal-dotnet-api to read Todolist items on your behalf.` - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. - > Repeat the steps above for another scope named **TodoList.ReadWrite** -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -> :information_source: Follow [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access) whenever you are publishing permissions for a web API. - -##### Publish Application Permissions - -1. All APIs should publish a minimum of one [App role](https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps#assign-app-roles-to-applications), also called [Application Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token as *themselves*, i.e. when they are not signing-in a user. **Application permissions** are the type of permissions that APIs should publish when they want to enable client applications to successfully authenticate as themselves and not need to sign-in users. To publish an application permission, follow these steps: -1. Still on the same app registration, select the **App roles** blade to the left. -1. Select **Create app role**: - 1. For **Display name**, enter a suitable name for your application permission, for instance **TodoList.Read.All**. - 1. For **Allowed member types**, choose **Application** to ensure other applications can be granted this permission. - 1. For **Value**, enter **TodoList.Read.All** (case-sensitive). - 1. For **Description**, enter **Allow this application to read every users Todo list items**. - 1. Select **Apply** to save your changes. - > Repeat the steps above for another app permission named **TodoList.ReadWrite.All** - -> :information_source: See how to use **application permissions** in a client app here: [.NET Core daemon console application calling a protected web API with its own identity](https://github.com/Azure-Samples/active-directory-dotnetcore-daemon-v2/tree/master/2-Call-OwnApi). - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **idtyp**. - 1. Select **Add** to save your changes. - -##### Configure the service app (msal-dotnet-api) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Enter the domain of your Azure AD tenant, e.g. 'contoso.onmicrosoft.com'` and replace the existing value with your Azure AD tenant name. -1. Find the key `Enter the Client ID (aka 'Application ID')` and replace the existing value with the application ID (clientId) of `msal-dotnet-api` app copied from the Azure portal. -1. Find the key `Enter the tenant ID` and replace the existing value with your Azure AD tenant ID. - -#### Register the client app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200/` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. -1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then, - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-dotnet-api`. - 1. In the **Delegated permissions** section, select the **TodoList.Read**, **TodoList.ReadWrite** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Configure the client app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant ID. -1. Find the key `Enter_the_Web_Api_Application_Id_Here` and replace the existing value(s) with the application ID (client ID) of the web API project that you've registered earlier, e.g. `api:///TodoList.Read` - -### Step 5: Running the sample - -From your shell or command line, execute the following commands: - -```console - cd 3-Authorization-II\1-call-api\API - dotnet run -``` - -Then, open a separate command line and run: - -```console - cd 3-Authorization-II\1-call-api\SPA - npm start -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -1. Select the **Sign In** button on the top right corner. -1. Select the **TodoList** button on the navigation bar. This will make a call to the TodoList web API. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../issues) page. - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. Make sure that your questions or comments are tagged with [`azure-active-directory` `angular` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -## About the code - -### CORS settings - -You need to set **cross-origin resource sharing** (CORS) policy to be able to call the **TodoListAPI** in [Startup.cs](./API/TodoListAPI/Startup.cs). For the purpose of the sample, **CORS** is enabled for **all** domains and methods. This is insecure and only used for demonstration purposes here. In production, you should modify this as to allow only the domains that you designate. If your web API is going to be hosted on **Azure App Service**, we recommend configuring CORS on the App Service itself. - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // ... - - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); -} -``` - -### Access token validation - -On the web API side, the `AddMicrosoftIdentityWebApiAuthentication` method in [Startup.cs](./API/TodoListAPI/Startup.cs) protects the web API by [validating access tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) sent tho this API. Check out [Protected web API: Code configuration](https://docs.microsoft.com/azure/active-directory/develop/scenario-protected-web-api-app-configuration) which explains the inner workings of this method in more detail. Simply add the following line under the `ConfigureServices` method: - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddMicrosoftIdentityWebApiAuthentication(Configuration); - - // ... -} -``` - -For validation and debugging purposes, developers can decode **JWT**s (*JSON Web Tokens*) using [jwt.ms](https://jwt.ms). - -### Verifying permissions - -Access tokens that have neither the **scp** (for delegated permissions) nor **roles** (for application permissions) claim with the required scopes/permissions should not be accepted. In the sample, this is illustrated via the `RequiredScopeOrAppPermission` attribute in [TodoListController.cs](./API/TodoListAPI/Controllers/TodoListController.cs): - -```csharp -[HttpGet] -/// -/// An access token issued by Azure AD will have at least one of the two claims. Access tokens -/// issued to a user will have the 'scp' claim. Access tokens issued to an application will have -/// the roles claim. Access tokens that contain both claims are issued only to users, where the scp -/// claim designates the delegated permissions, while the roles claim designates the user's role. -/// -[RequiredScopeOrAppPermission( - AcceptedScope = new string[] { _todoListRead, _todoListReadWrite }, - AcceptedAppPermission = new string[] { _todoListReadAll, _todoListReadWriteAll } -)] -public async Task>> GetTodoItems() -{ - // route logic ... -} -``` - -### Access to data - -Web API endpoints should be prepared to accept calls from both users and applications, and should have control structures in place to respond to each accordingly. For instance, a call from a user via delegated permissions should be responded with user's data, while a call from an application via application permissions might be responded with the entire todolist. This is illustrated in the [TodoListController](./API/TodoListAPI/Controllers/TodoListController.cs) controller: - -```csharp -// GET: api/TodoItems -[HttpGet] -[RequiredScopeOrAppPermission( - AcceptedScope = new string[] { _todoListRead, _todoListReadWrite }, - AcceptedAppPermission = new string[] { _todoListReadAll, _todoListReadWriteAll } -)] -public async Task>> GetTodoItems() -{ - if (!IsAppOnlyToken()) - { - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _context.TodoItems.Where(x => x.Owner == HttpContext.User.GetObjectId()).ToListAsync(); - } - else - { - return await _context.TodoItems.ToListAsync(); - } -} - -/// -/// Indicates if the AT presented has application or delegated permissions. -/// -/// -private bool IsAppOnlyToken() -{ - // Add in the optional 'idtyp' claim to check if the access token is coming from an application or user. - // See: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - if (HttpContext.User.Claims.Any(c => c.Type == "idtyp")) - { - return HttpContext.User.Claims.Any(c => c.Type == "idtyp" && c.Value == "app"); - } - else - { - // alternatively, if an AT contains the roles claim but no scp claim, that indicates it's an app token - return HttpContext.User.Claims.Any(c => c.Type == "roles") && !HttpContext.User.Claims.Any(c => c.Type == "scp"); - } -} -``` - -When granting access to data based on scopes, be sure to follow [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access). - -### Debugging the sample - -To debug the .NET Core web API that comes with this sample, install the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) for Visual Studio Code. - -Learn more about using [.NET Core with Visual Studio Code](https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -- [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -- [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -- [Quickstart: Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -- [Quickstart: Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -- [Initialize client applications using MSAL.js](https://docs.microsoft.com/azure/active-directory/develop/msal-js-initializing-client-applications) -- [Handle MSAL.js exceptions and errors](https://docs.microsoft.com/azure/active-directory/develop/msal-handling-exceptions?tabs=javascript) -- [Logging in MSAL.js applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging?tabs=javascript) -- [Microsoft Identity Web authentication library](https://docs.microsoft.com/azure/active-directory/develop/microsoft-identity-web) -- [Logging in MSAL.NET applications](https://docs.microsoft.com/azure/active-directory/develop/msal-logging-dotnet) -- [Handle errors and exceptions in MSAL.NET](https://docs.microsoft.com/azure/active-directory/develop/msal-error-handling-dotnet) -- [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -- [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -- [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) diff --git a/3-Authorization-II/1-call-api/ReadmeFiles/screenshot.png b/3-Authorization-II/1-call-api/ReadmeFiles/screenshot.png deleted file mode 100644 index 59b90786fc2bde9121adf40c2f881e9d3078a683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22291 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 sbY+zN<{9 diff --git a/3-Authorization-II/1-call-api/ReadmeFiles/topology.png b/3-Authorization-II/1-call-api/ReadmeFiles/topology.png deleted file mode 100644 index 6abec2db4ba34f11a0ba683c6f57783a162a1a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26517 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 C6uvhA diff --git a/3-Authorization-II/1-call-api/SPA/angular.json b/3-Authorization-II/1-call-api/SPA/angular.json deleted file mode 100644 index 8d2fb7c3..00000000 --- a/3-Authorization-II/1-call-api/SPA/angular.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "SPA": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/spa", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "SPA:build:production" - }, - "development": { - "browserTarget": "SPA:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "SPA:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - } - } - } - } - } -} diff --git a/3-Authorization-II/1-call-api/SPA/karma.conf.js b/3-Authorization-II/1-call-api/SPA/karma.conf.js deleted file mode 100644 index af0f20e5..00000000 --- a/3-Authorization-II/1-call-api/SPA/karma.conf.js +++ /dev/null @@ -1,50 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/spa'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/3-Authorization-II/1-call-api/SPA/package-lock.json b/3-Authorization-II/1-call-api/SPA/package-lock.json deleted file mode 100644 index 3befc75f..00000000 --- a/3-Authorization-II/1-call-api/SPA/package-lock.json +++ /dev/null @@ -1,9477 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/architect": { - "version": "0.1400.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.5.tgz", - "integrity": "sha512-A5sRLPK3qGJAehYtX4ayUDwxQZ02yvsrxcpf3sv492IxbF7ymdMhcxIp+0UG6wIsLvpQkpW9ekJUdKmFB6GVAw==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "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.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.1", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild": "0.14.49", - "esbuild-wasm": "0.14.49", - "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.0", - "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.14", - "postcss-import": "14.1.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.53.0", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.58.1", - "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.73.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.0", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", - "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" - } - }, - "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@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" - } - }, - "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 - }, - "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "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" - } - }, - "esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", - "dev": true, - "optional": true, - "requires": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" - } - }, - "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" - } - }, - "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 - }, - "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", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.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 - } - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1401.0", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.0", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", - "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" - } - }, - "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 - }, - "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" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "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 - } - } - }, - "@angular-devkit/core": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.5.tgz", - "integrity": "sha512-/CUGi6QLwh79FvsOY7M+1LQL3asZsbQW/WBd5f1iu5y7TLNqCwo+wOb0ZXLDNPw45vYBxFajtt3ob3U7qx3jNg==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/schematics": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.5.tgz", - "integrity": "sha512-sufxITBkn2MvgEREt9JQ3QCKHS+sue1WsVzLE+TWqG5MC/RPk0f9tQ5VoHk6ZTzDKUvOtSoc7G+n0RscQsyp5g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "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/animations": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.4.tgz", - "integrity": "sha512-+Qe+wLA0DOHlOdFRQSEJoenhFm5zcKwkDItqAFT5NVYOT04yxXq8NFRIHSbqn468qR70EkX514lKi6pr6nxGYQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cdk": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.4.tgz", - "integrity": "sha512-zPM4VZadoKzTF9TZ7Yx5gJ7GtQpt62f8ofdH/BF2atG+TaNzOEFqtzogP4WuJDFAxJXOPMePobhth4YjUk0Wbw==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - } - } - }, - "@angular/cli": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.5.tgz", - "integrity": "sha512-/Iqvy3vRqakHdxNi+Qo18xXQr8E1cCaKzMBnxR2wHNdlu1lyaw0p20E8LumoueXCrs+/SK6aKDvN6ek0R/q8Jg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1400.5", - "@angular-devkit/core": "14.0.5", - "@angular-devkit/schematics": "14.0.5", - "@schematics/angular": "14.0.5", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.1" - } - }, - "@angular/common": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.4.tgz", - "integrity": "sha512-CvlFa2lCxen0LB3N45IzZDdMIqpcasXfVUhiAkLxZgT+kSTunc/rg8hMoLHVfmFpkQKCQmPVyuzNXnSwIFhYkQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.4.tgz", - "integrity": "sha512-WdRpZFTX2vt71sSfQ89C1K5l2zhYtn8ON+ZlAVxyZ5uT0nA/Z/vuMLfNZB1WmcGVDOc7JmQduSiSaI0hhQqXqw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.4.tgz", - "integrity": "sha512-j3T0dOwNov6rKcaxLMSlPLRvrBT6MyBTum18x6XvZRqb75RUAJ/yV+PXgtA//XZ2hjuy87+CvZy3tBKktvY7bA==", - "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" - } - }, - "@angular/core": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.4.tgz", - "integrity": "sha512-uMS/X+/5RokF3uiiD1IAr6Ha9k7QPegHrAB3QW0x6WRUTMq0K+08F+AeF5COmbfYMMaxofD6x8XmM+BLeg/0hw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.4.tgz", - "integrity": "sha512-u/9y09WQ00y6BQeNo69hMa/Fx+xKHGnmcjMtS3xkZtmoCP+A0ebumG0Y9DfXs2olJY2//O5di7Qu3fwlBg+3Cw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/material": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.4.tgz", - "integrity": "sha512-Ysz6oPbpLH7CvRR6oxQwpUImSbFqxL4+eiH0LPc7vkaOSrvGdZ/7cWhAfT6hVnw3bEY+eq5qBSMgyVUB44z4eg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.4.tgz", - "integrity": "sha512-VFeFpQ+248m8GiCqcsHwH4PET7tR1cyXnhsep1EeI4MDaO+aIbsUcESqXzMm5+ChOmNyiCtLQu8QvfHZK0uDVA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.4.tgz", - "integrity": "sha512-snVbAKfnBuCUMgop6ln111B/ouMnDR1ZzMzpiKefdJDGUvASCLbR8XAioY+zXUI82QbNg5masUPia1Fy+yTvGw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.4.tgz", - "integrity": "sha512-aqtOjIjVNtWbpedDdni0yGfGR6sEb8S3jJB9jf43ththmHKxAlW7PKP2NgEmx0uJ2xY2iGET7Gkpl8RBwvoHgQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.0.tgz", - "integrity": "sha512-aOYy1LMrMnssq4GNfUCFo5nOJ+gIsG6iS3nEVEBJGNDAG1rWQHQ42Sre9NbZX26kzeCLaos0J+Vkn2Kc2NI5Hg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.28.0.tgz", - "integrity": "sha512-d83BBMT6id+eAdox+M37PCVWYDiqd6BrXxvjAVI2xJluRoSJCZQvB02Bcg6QCSe3ruLUK6vGwMTe8p1cDExePQ==", - "requires": { - "@azure/msal-common": "^7.2.0" - } - }, - "@azure/msal-common": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.2.0.tgz", - "integrity": "sha512-+Oz8LKTOACDHqDmv+MZy/z+DZRH8RZbMjhadmvp0scQ0R75OrzZro+HkxifWhtDG8l1ViYkvV9NHb4pEZyajAQ==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", - "dev": true - }, - "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - } - }, - "@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" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "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" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "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.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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/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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.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/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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", - "@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.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", - "@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.6", - "@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.6", - "@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.6", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@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/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", - "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-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-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 - }, - "@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 - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@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.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "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.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", - "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": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", - "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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@schematics/angular": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.5.tgz", - "integrity": "sha512-xZjXHLn1djIvKJFiOfspTrzAomtDGRqGgsOo06glBkC+cqKCyyXU1Hgxnd3S5V+8a6TpYgX25AXihtE3BeCJzg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "@angular-devkit/schematics": "14.0.5", - "jsonc-parser": "3.0.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@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/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", - "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", - "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/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/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "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.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.7.tgz", - "integrity": "sha512-a4zfQpp5vm4Ipdvbj+ZrPonikRhm6WBEd4zT1Yc1DXsmAxrPgDwWBLF/u/wTVXSFPIgOJ1U3ghSa2Xm4s3h28w==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "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 - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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 - } - } - }, - "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" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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": { - "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" - } - }, - "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-compat": { - "version": "3.23.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.5.tgz", - "integrity": "sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg==", - "dev": true, - "requires": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" - } - }, - "caniuse-lite": { - "version": "1.0.30001368", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz", - "integrity": "sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.198", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.198.tgz", - "integrity": "sha512-jwqQPdKGeAslcq8L+1SZZgL6uDiIDmTe9Gq4brsdWAH27y7MJ2g9Ue6MyST3ogmSM49EAQP7bype1V5hsuNrmQ==", - "dev": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "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 - } - } - }, - "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 - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", - "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" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "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.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.180", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.180.tgz", - "integrity": "sha512-7at5ash3FD9U5gPa3/wPr6OdiZd/zBjvDZaaHBpcqFOFUhZiWnb7stkqk8xUFL9H9nk7Yok5vCCNK8wyC/+f8A==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "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" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "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.10.3", - "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 - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", - "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "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", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "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", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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 - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "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 - }, - "karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "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": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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 - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.0.tgz", - "integrity": "sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==", - "dev": true, - "requires": { - "date-format": "^4.0.11", - "debug": "^4.3.4", - "flatted": "^3.2.5", - "rfdc": "^1.3.0", - "streamroller": "^3.1.1" - } - }, - "lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", - "dev": true - }, - "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": { - "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" - } - }, - "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": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "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" - }, - "dependencies": { - "@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 - }, - "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "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" - } - }, - "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" - } - }, - "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", - "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" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "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" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": 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 - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "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.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", - "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 - }, - "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 - }, - "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": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-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 - }, - "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 - }, - "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 - }, - "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 - }, - "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.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", - "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 - }, - "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.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", - "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.3", - "postcss-image-set-function": "^4.0.6", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", - "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 - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", - "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": "^1.0.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "requires": { - "tslib": "^2.1.0" - } - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "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 - } - } - }, - "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 - }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.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" - } - }, - "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-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-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", - "dev": true, - "requires": { - "date-format": "^4.0.10", - "debug": "^4.3.4", - "fs-extra": "^10.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", - "dev": true, - "requires": { - "css": "^3.0.0", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "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.3.1", - "webpack-sources": "^3.2.3" - }, - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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": { - "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" - } - }, - "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.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", - "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": { - "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" - } - }, - "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" - } - }, - "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true - }, - "zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/3-Authorization-II/1-call-api/SPA/package.json b/3-Authorization-II/1-call-api/SPA/package.json deleted file mode 100644 index f61f24db..00000000 --- a/3-Authorization-II/1-call-api/SPA/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.4.0", - "@azure/msal-browser": "^2.28.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } -} diff --git a/3-Authorization-II/1-call-api/SPA/src/app/app-routing.module.ts b/3-Authorization-II/1-call-api/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 6afa5649..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'todo-edit/:id', - component: TodoEditComponent, - canActivate: [ - MsalGuard - ] - }, - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - MsalGuard - ] - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/3-Authorization-II/1-call-api/SPA/src/app/app.component.css b/3-Authorization-II/1-call-api/SPA/src/app/app.component.css deleted file mode 100644 index 43d668de..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/app.component.html b/3-Authorization-II/1-call-api/SPA/src/app/app.component.html deleted file mode 100644 index d0d06d6b..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/app.component.html +++ /dev/null @@ -1,24 +0,0 @@ - - {{ title }} - -
    - - TodoList - - - -
    -
    - - -
    - - \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/app.component.ts b/3-Authorization-II/1-call-api/SPA/src/app/app.component.ts deleted file mode 100644 index 862a3926..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/app.component.ts +++ /dev/null @@ -1,118 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - const activeAccount = this.authService.instance.getActiveAccount() || this.authService.instance.getAllAccounts()[0]; - - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.logoutPopup({ - account: activeAccount, - }); - } else { - this.authService.logoutRedirect({ - account: activeAccount, - }); - } - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/3-Authorization-II/1-call-api/SPA/src/app/app.module.ts b/3-Authorization-II/1-call-api/SPA/src/app/app.module.ts deleted file mode 100644 index 2e45c563..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/app.module.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon' -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field' - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoService } from './todo.service'; - -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent, ProtectedResourceScopes -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map | null>(); - - protectedResourceMap.set(protectedResources.apiTodoList.endpoint, [ - { - httpMethod: 'GET', - scopes: [...protectedResources.apiTodoList.scopes.read] - }, - { - httpMethod: 'POST', - scopes: [...protectedResources.apiTodoList.scopes.write] - }, - { - httpMethod: 'PUT', - scopes: [...protectedResources.apiTodoList.scopes.write] - }, - { - httpMethod: 'DELETE', - scopes: [...protectedResources.apiTodoList.scopes.write] - } - ]); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - }; -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - TodoViewComponent, - TodoEditComponent - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - MatInputModule, - MatFormFieldModule, - MatCheckboxModule, - MatIconModule, - HttpClientModule, - FormsModule, - MsalModule - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory - }, - MsalService, - MsalGuard, - MsalBroadcastService, - TodoService - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/3-Authorization-II/1-call-api/SPA/src/app/auth-config.ts b/3-Authorization-II/1-call-api/SPA/src/app/auth-config.ts deleted file mode 100644 index 14570754..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - clientCapabilities: ['CP1'] // This lets the resource server know that this client can handle claim challenges. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ -export const protectedResources = { - apiTodoList: { - endpoint: "https://localhost:44351/api/todolist", - scopes: { - read: ["api://Enter_the_Web_Api_Application_Id_Here/TodoList.Read"], - write: ["api://Enter_the_Web_Api_Application_Id_Here/TodoList.ReadWrite"] - } - } -} - -/** - * Scopes you add here will be prompted for user consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest = { - scopes: [] -}; diff --git a/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.css b/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.css deleted file mode 100644 index e4a58e48..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,26 +0,0 @@ -#table-container { - height: 500px; - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.html b/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.html deleted file mode 100644 index 3e752449..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and call a protected web API - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and acquire an access - token for a protected web API - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    -
    ApplicationAppIdUrl in the Azure portal
    - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    - \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.ts b/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.ts deleted file mode 100644 index 6cc0ff84..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../utils/claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/3-Authorization-II/1-call-api/SPA/src/app/sample.spec.ts b/3-Authorization-II/1-call-api/SPA/src/app/sample.spec.ts deleted file mode 100644 index 536fd997..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/todo-view')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.css b/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.css deleted file mode 100644 index 9295c096..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.css +++ /dev/null @@ -1,14 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} - -.form-field { - min-width: 100px; - max-width: 800px; - width: 100%; -} - -.input-field { - width: 100%; -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.html b/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.html deleted file mode 100644 index bc0853b4..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.html +++ /dev/null @@ -1,14 +0,0 @@ - -
    -

    Edit a task

    -
    -
    -
    -
    - - - - -
    -
    \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.ts b/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.ts deleted file mode 100644 index f3a98fc4..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo-edit/todo-edit.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TodoService } from './../todo.service'; -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { Todo } from '../todo'; - -@Component({ - selector: 'app-todo-edit', - templateUrl: './todo-edit.component.html', - styleUrls: ['./todo-edit.component.css'] -}) -export class TodoEditComponent implements OnInit { - - todo: Todo = { - id: 1, - description: "undefined", - status: false, - }; - - constructor(private route: ActivatedRoute, private router: Router, private service: TodoService) { } - - ngOnInit(): void { - this.route.paramMap.subscribe((params) => { - let id = +params.get('id')!; - this.service.getTodo(+id).subscribe((response: Todo) => { - this.todo = response; - }) - }) - } - - editTodo(todo: Todo): void { - this.todo.description = todo.description; - this.service.editTodo(this.todo).subscribe(() => { - this.router.navigate(['/todo-view']); - }) - } - -} diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.css b/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.css deleted file mode 100644 index 6e93921c..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.css +++ /dev/null @@ -1,26 +0,0 @@ -table { - min-width: 100px; - width: 100%; -} - -.form-field { - min-width: 100px; - width: 90%; -} - -.input-field { - width: 90%; -} - -.card-section { - margin-top: 5%; -} - -#submit-button { - margin-left: 1%; -} - -.material-icons:hover { - color: orange !important; - cursor: pointer -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.html b/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.html deleted file mode 100644 index db724480..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.html +++ /dev/null @@ -1,45 +0,0 @@ - -
    - - Enter a task - - - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Status - - Description {{todo.description}} Edit - edit - Remove - delete -
    -
    \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.ts b/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.ts deleted file mode 100644 index 19c5b94e..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo-view/todo-view.component.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { NgForm } from '@angular/forms'; - -import { TodoService } from './../todo.service'; -import { Todo } from '../todo'; - -@Component({ - selector: 'app-todo-view', - templateUrl: './todo-view.component.html', - styleUrls: ['./todo-view.component.css'] -}) -export class TodoViewComponent implements OnInit { - - todo?: Todo; - - todos: Todo[] = []; - - displayedColumns = ['status', 'description', 'edit', 'remove']; - - constructor(private service: TodoService) { } - - ngOnInit(): void { - this.getTodos(); - } - - getTodos(): void { - this.service.getTodos() - .subscribe((todos: Todo[]) => { - this.todos = todos; - }); - } - - addTodo(add: NgForm): void { - this.service.postTodo(add.value).subscribe(() => { - this.getTodos(); - }) - add.resetForm(); - } - - checkTodo(todo: Todo): void { - this.service.editTodo(todo).subscribe(); - } - - removeTodo(id: string): void { - this.service.deleteTodo(+id).subscribe(() => { - this.getTodos(); - }) - } -} diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo.service.ts b/3-Authorization-II/1-call-api/SPA/src/app/todo.service.ts deleted file mode 100644 index a399906f..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo.service.ts +++ /dev/null @@ -1,34 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Todo } from './todo'; - -import { protectedResources } from './auth-config'; - -@Injectable({ - providedIn: 'root' -}) -export class TodoService { - url = protectedResources.apiTodoList.endpoint; - - constructor(private http: HttpClient) { } - - getTodos() { - return this.http.get(this.url); - } - - getTodo(id: number) { - return this.http.get(this.url + '/' + id); - } - - postTodo(todo: Todo) { - return this.http.post(this.url, todo); - } - - deleteTodo(id: number) { - return this.http.delete(this.url + '/' + id); - } - - editTodo(todo: Todo) { - return this.http.put(this.url + '/' + todo.id, todo); - } -} diff --git a/3-Authorization-II/1-call-api/SPA/src/app/todo.ts b/3-Authorization-II/1-call-api/SPA/src/app/todo.ts deleted file mode 100644 index 68342188..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/todo.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface Todo { - id: number; - description: string; - status: boolean; -} \ No newline at end of file diff --git a/3-Authorization-II/1-call-api/SPA/src/app/utils/claim-utils.ts b/3-Authorization-II/1-call-api/SPA/src/app/utils/claim-utils.ts deleted file mode 100644 index 231ad388..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/app/utils/claim-utils.ts +++ /dev/null @@ -1,189 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/3-Authorization-II/1-call-api/SPA/src/assets/.gitkeep b/3-Authorization-II/1-call-api/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/3-Authorization-II/1-call-api/SPA/src/environments/environment.prod.ts b/3-Authorization-II/1-call-api/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/3-Authorization-II/1-call-api/SPA/src/environments/environment.ts b/3-Authorization-II/1-call-api/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/3-Authorization-II/1-call-api/SPA/src/favicon.svg b/3-Authorization-II/1-call-api/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/3-Authorization-II/1-call-api/SPA/src/index.html b/3-Authorization-II/1-call-api/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/3-Authorization-II/1-call-api/SPA/src/main.ts b/3-Authorization-II/1-call-api/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/3-Authorization-II/1-call-api/SPA/src/polyfills.ts b/3-Authorization-II/1-call-api/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/3-Authorization-II/1-call-api/SPA/src/styles.css b/3-Authorization-II/1-call-api/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/3-Authorization-II/1-call-api/SPA/src/test.ts b/3-Authorization-II/1-call-api/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/3-Authorization-II/1-call-api/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/3-Authorization-II/1-call-api/SPA/tsconfig.app.json b/3-Authorization-II/1-call-api/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/3-Authorization-II/1-call-api/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/3-Authorization-II/1-call-api/SPA/tsconfig.json b/3-Authorization-II/1-call-api/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/3-Authorization-II/1-call-api/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/3-Authorization-II/1-call-api/SPA/tsconfig.spec.json b/3-Authorization-II/1-call-api/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/3-Authorization-II/1-call-api/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/ConfigurationTests.cs b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/ConfigurationTests.cs deleted file mode 100644 index c76cb7a9..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/ConfigurationTests.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System; -using Xunit; -using Microsoft.Extensions.Configuration; - -namespace TodoListAPI.Tests -{ - public class ConfigurationTests - { - public static IConfiguration InitConfiguration() - { - var config = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .Build(); - - return config; - } - - [Fact] - public void ShouldContainClientId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var clientId = myConfiguration.GetSection("AzureAdB2C")["ClientId"]; - - Assert.True(Guid.TryParse(clientId, out var theGuid)); - } - - [Fact] - public void ShouldContainDomain() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var domain = $"https://{myConfiguration.GetSection("AzureAdB2C")["Domain"]}"; - - Assert.True(Uri.TryCreate(domain, UriKind.Absolute, out var uri)); - } - - [Fact] - public void ShouldContainInstance() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - - Assert.True(Uri.TryCreate(myConfiguration.GetSection("AzureAdB2C")["Instance"], UriKind.Absolute, out var uri)); - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj deleted file mode 100644 index 66ff194e..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - net6.0 - - false - - - - - Always - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.sln b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.sln deleted file mode 100644 index b8b6a92e..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31005.135 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI", "TodoListAPI\TodoListAPI.csproj", "{3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI.Tests", "TodoListAPI.Tests\TodoListAPI.Tests.csproj", "{FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.Build.0 = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {44AB506D-AF3A-4AE5-90E9-CFECC92533A6} - EndGlobalSection -EndGlobal diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Controllers/TodoListController.cs b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Controllers/TodoListController.cs deleted file mode 100644 index e9cb4f8d..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Controllers/TodoListController.cs +++ /dev/null @@ -1,206 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Security.Claims; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.Identity.Web.Resource; -using TodoListAPI.Models; - -namespace TodoListAPI.Controllers -{ - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class TodoListController : ControllerBase - { - private readonly TodoContext _TodoListContext; - private readonly IHttpContextAccessor _contextAccessor; - private ClaimsPrincipal _currentPrincipal; - - /// - /// We store the object id of the user/app derived from the presented Access token - /// - private string _currentPrincipalId = string.Empty; - - public TodoListController(TodoContext context, IHttpContextAccessor contextAccessor) - { - _TodoListContext = context; - _contextAccessor = contextAccessor; - - // We seek the details of the user/app represented by the access token presented to this API, This can be empty unless authN succeeded - // If a user signed-in, the value will be the unique identifier of the user. - _currentPrincipal = GetCurrentClaimsPrincipal(); - - if (!IsAppOnlyToken() && _currentPrincipal != null) - { - // The default behavior of the JwtSecurityTokenHandler is to map inbound claim names to new values in the generated ClaimsPrincipal. - // The result is that "sub" claim that identifies the subject of the incoming JWT token is mapped to a claim - // named "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier". An alternative approach is to - // disable this mapping by setting JwtSecurityTokenHandler.DefaultMapInboundClaims to false in Startup.cs and - // then calling _currentPrincipal.FindFirstValue(ClaimConstants.Sub) to obtain the value of the unmapped "sub" claim. - _currentPrincipalId = _currentPrincipal.GetNameIdentifierId(); // use "sub" claim as a unique identifier in B2C - PopulateDefaultToDos(_currentPrincipalId); - } - } - - // GET: api/todolist/getAll - [HttpGet] - [Route("getAll")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAdB2C:Scopes:Read")] - public async Task>> GetAll() - { - return await _TodoListContext.TodoItems.ToListAsync(); - } - - // GET: api/TodoItems - [HttpGet] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAdB2C:Scopes:Read")] - public async Task>> GetTodoItems() - { - /// - /// The 'oid' (object id) is the only claim (alternatively "sub" claim in B2C) that should be used to uniquely - /// identify a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _TodoListContext.TodoItems.Where(x => x.Owner == _currentPrincipalId).ToListAsync(); - } - - // GET: api/TodoItems/5 - [HttpGet("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAdB2C:Scopes:Read")] - public async Task> GetTodoItem(int id) - { - return await _TodoListContext.TodoItems.FirstOrDefaultAsync(t => t.Id == id && t.Owner == _currentPrincipalId); - } - - // PUT: api/TodoItems/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPut("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAdB2C:Scopes:Write")] - public async Task PutTodoItem(int id, TodoItem todoItem) - { - if (id != todoItem.Id || !_TodoListContext.TodoItems.Any(x => x.Id == id)) - { - return NotFound(); - } - - if (_TodoListContext.TodoItems.Any(x => x.Id == id && x.Owner == _currentPrincipalId)) - { - _TodoListContext.Entry(todoItem).State = EntityState.Modified; - - try - { - await _TodoListContext.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!_TodoListContext.TodoItems.Any(e => e.Id == id)) - { - return NotFound(); - } - else - { - throw; - } - } - } - - return NoContent(); - } - - // POST: api/TodoItems - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAdB2C:Scopes:Write")] - public async Task> PostTodoItem(TodoItem todoItem) - { - todoItem.Owner = _currentPrincipalId; - todoItem.Status = false; - - _TodoListContext.TodoItems.Add(todoItem); - await _TodoListContext.SaveChangesAsync(); - - return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); - } - - // DELETE: api/TodoItems/5 - [HttpDelete("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAdB2C:Scopes:Write")] - public async Task> DeleteTodoItem(int id) - { - TodoItem todoItem = await _TodoListContext.TodoItems.FindAsync(id); - - if (todoItem == null) - { - return NotFound(); - } - - if (_TodoListContext.TodoItems.Any(x => x.Id == id && x.Owner == _currentPrincipalId)) - { - _TodoListContext.TodoItems.Remove(todoItem); - await _TodoListContext.SaveChangesAsync(); - } - - return NoContent(); - } - - private async void PopulateDefaultToDos(string _currentPrincipalId) - { - //Pre - populate with sample data - if (_TodoListContext.TodoItems.Count() == 0 && !string.IsNullOrEmpty(_currentPrincipalId)) - { - _TodoListContext.TodoItems.Add(new TodoItem() { Owner = $"{_currentPrincipalId}", Description = "Pick up groceries", Status = false }); - _TodoListContext.TodoItems.Add(new TodoItem() { Owner = $"{_currentPrincipalId}", Description = "Finish invoice report", Status = false }); - - await _TodoListContext.SaveChangesAsync(); - } - } - - /// - /// returns the current claimsPrincipal (user/Client app) dehydrated from the Access token - /// - /// - private ClaimsPrincipal GetCurrentClaimsPrincipal() - { - // Irrespective of whether a user signs in or not, the AspNet security middleware dehydrates - // the claims in the HttpContext.User.Claims collection - if (_contextAccessor.HttpContext != null && _contextAccessor.HttpContext.User != null) - { - return _contextAccessor.HttpContext.User; - } - - return null; - } - - /// - /// Indicates of the AT presented was for an app-only token or not. - /// - /// - private bool IsAppOnlyToken() - { - // Add in the optional 'idtyp' claim to check if the access token is coming from an application or user. - // - // See: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - - if (GetCurrentClaimsPrincipal() != null) - { - return GetCurrentClaimsPrincipal().Claims.Any(c => c.Type == "idtyp" && c.Value == "app"); - } - - return false; - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoContext.cs b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoContext.cs deleted file mode 100644 index a84bbfcc..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoContext.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace TodoListAPI.Models -{ - public class TodoContext : DbContext - { - public TodoContext(DbContextOptions options) - : base(options) - { - - } - - public DbSet TodoItems { get; set; } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoItem.cs b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoItem.cs deleted file mode 100644 index b591aae4..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Models/TodoItem.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace TodoListAPI.Models -{ - public class TodoItem - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string Owner { get; set; } - public string Description { get; set; } - public bool Status { get; set; } - } -} \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Program.cs b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Program.cs deleted file mode 100644 index f1246907..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ - -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace TodoListAPI -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Properties/launchSettings.json b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Properties/launchSettings.json deleted file mode 100644 index c832a603..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44351", - "sslPort": 44351 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "https://localhost:44351/api/todolist", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "TodoListAPI": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44351/", - "sslPort": 44351 - } - } -} \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Startup.cs b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Startup.cs deleted file mode 100644 index 00b53add..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/Startup.cs +++ /dev/null @@ -1,104 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.IdentityModel.Logging; - -using TodoListAPI.Models; - -namespace TodoListAPI -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - - { - Configuration.Bind("AzureAdB2C", options); - options.Events = new JwtBearerEvents(); - - /// - /// Below you can do extended token validation and check for additional claims, such as: - /// - /// - check if the caller's account is homed or guest via the 'acct' optional claim - /// - check if the caller belongs to right roles or groups via the 'roles' or 'groups' claim, respectively - /// - /// Bear in mind that you can do any of the above checks within the individual routes and/or controllers as well. - /// For more information, visit: https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validate-the-user-has-permission-to-access-this-data - /// - - //options.Events.OnTokenValidated = async context => - //{ - // string[] allowedClientApps = { /* list of client ids to allow */ }; - - // string clientAppId = context?.Principal?.Claims - // .FirstOrDefault(x => x.Type == "azp" || x.Type == "appid")?.Value; - - // if (!allowedClientApps.Contains(clientAppId)) - // { - // throw new System.Exception("This client is not authorized"); - // } - //}; - }, options => { Configuration.Bind("AzureAdB2C", options); }); - - // The following flag can be used to get more descriptive errors in development environments - IdentityModelEventSource.ShowPII = false; - - services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); - - services.AddControllers(); - - // Allowing CORS for all domains and HTTP methods for the purpose of the sample - // In production, modify this with the actual domains and HTTP methods you want to allow - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - // Since IdentityModel version 5.2.1 (or since Microsoft.AspNetCore.Authentication.JwtBearer version 2.2.0), - // Personal Identifiable Information is not written to the logs by default, to be compliant with GDPR. - // For debugging/development purposes, one can enable additional detail in exceptions by setting IdentityModelEventSource.ShowPII to true. - // Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true; - app.UseDeveloperExceptionPage(); - } - else - { - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } - - app.UseCors("default"); - app.UseHttpsRedirection(); - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/TodoListAPI.csproj b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/TodoListAPI.csproj deleted file mode 100644 index 4eab0792..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/TodoListAPI.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net6.0 - aspnet-TodoListAPI-BA938C29-8BAB-4664-A688-8FD54049C1C3 - 1 - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.Development.json b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.Development.json deleted file mode 100644 index 8983e0fc..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.json b/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.json deleted file mode 100644 index 9df23682..00000000 --- a/3-Authorization-II/2-call-api-b2c/API/TodoListAPI/appsettings.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "AzureAdB2C": { - "Instance": "https://fabrikamb2c.b2clogin.com", - "ClientId": "Enter_the_Application_Id_Here", - "Domain": "fabrikamb2c.onmicrosoft.com", - "SignUpSignInPolicyId": "b2c_1_susi_v2", - "Scopes": { - "Read": [ "ToDoList.Read", "ToDoList.ReadWrite" ], - "Write": [ "ToDoList.ReadWrite" ] - } - }, - "https_port": 44351, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" -} diff --git a/3-Authorization-II/2-call-api-b2c/AppCreationScripts/sample.json b/3-Authorization-II/2-call-api-b2c/AppCreationScripts/sample.json deleted file mode 100644 index f688f1ce..00000000 --- a/3-Authorization-II/2-call-api-b2c/AppCreationScripts/sample.json +++ /dev/null @@ -1,92 +0,0 @@ -{ - "Sample": { - "Author": "derisen", - "Title": "Angular single-page application that authenticates users with Azure AD B2C and calls a protected .NET Core web API", - "Level": 200, - "Client": "Angular SPA", - "Service": ".NET Core web API", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Description": "An Angular single-page application that authenticates users with Azure AD B2C and calls a protected .NET Core web API", - "Languages": [ - "javascript", - "typescript", - "csharp" - ], - "Products": [ - "azure-active-directory-b2c", - "msal-js", - "msal-angular", - "microsoft-identity-web" - ], - "Platform": "JavaScript", - "Provider": "B2C" - }, - "AADApps": [ - { - "Id": "service", - "Name": "msal-dotnet-api", - "Kind": "WebApi", - "SampleSubPath": "3-Authorization-II\\2-call-api-b2c\\API\\TodoListAPI", - "Audience": "AzureADandPersonalMicrosoftAccount", - "Scopes": [ - "ToDoList.Read", - "ToDoList.ReadWrite" - ] - }, - { - "Id": "client", - "Name": "msal-angular-spa", - "Kind": "SinglePageApplication", - "SampleSubPath": "3-Authorization-II\\2-call-api-b2c\\SPA", - "Audience": "AzureADandPersonalMicrosoftAccount", - "HomePage": "http://localhost:4200", - "ReplyUrls": "http://localhost:4200, http://localhost:4200/auth", - "RequiredResourcesAccess": [ - { - "Resource": "service", - "DelegatedPermissions": [ - "ToDoList.Read", - "ToDoList.ReadWrite" - ] - } - ] - } - ], - "CodeConfiguration": [ - { - "App": "service", - "SettingKind": "Replace", - "SettingFile": "\\..\\API\\TodoListAPI\\appsettings.json", - "Mappings": [ - { - "key": "Enter the domain of your Azure AD tenant, e.g. 'contoso.onmicrosoft.com'", - "value": "$tenantName" - }, - { - "key": "Enter the Client ID (aka 'Application ID')", - "value": ".AppId" - }, - { - "key": "Enter the tenant ID", - "value": "$tenantId" - } - ] - }, - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantName" - } - ] - } - ] -} \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/README-incremental.md b/3-Authorization-II/2-call-api-b2c/README-incremental.md deleted file mode 100644 index 47474c4c..00000000 --- a/3-Authorization-II/2-call-api-b2c/README-incremental.md +++ /dev/null @@ -1,284 +0,0 @@ -# Angular single-page application that authenticates users with Azure AD B2C and calls a protected .NET Core web API - -* [Overview](#overview) -* [Scenario](#scenario) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Next tutorial](#next-tutorial) -* [Contributing](#contributing) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) calling a ASP.NET Core web API secured with [Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/overview) using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular) for the SPA and the [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) (M.I.W) for the web API. - -> :information_source: See the community call: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -## Scenario - -1. The client Angular SPA uses [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) to sign-in a user and obtain a JWT [Access Token](https://aka.ms/access-tokens) from **Azure AD B2C**. -1. The access token is used as a *bearer* token to authorize the user to call the .NET Core web API protected by **Azure AD B2C**. -1. The service uses the [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) to protect the Web api, check permissions and validate tokens. - -![Scenario Image](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-------------------------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `API/TodoListAPI/appsettings.json` | Authentication parameters for API project reside here. | -| `API/TodoListAPI/Startup.cs` | Microsoft.Identity.Web is initialized here. | -| `API/TodoListAPI/Controllers/TodoListController.cs` | Contains logic for controlling access to data. | - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console -git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 3-Authorization-II/2-call-api-b2c/API/TodoListAPI - dotnet restore -``` - -### Step 3. Trust development certificates - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 4. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -### Step 5: Register the sample application(s) in your tenant - -> :warning: This sample comes with a pre-registered application for demo purposes. If you would like to use your own **Azure AD B2C** tenant and application, follow the steps below to register and configure the application on **Azure portal**. Otherwise, continue with the steps for [Explore the sample](#explore-the-sample). - -#### Choose the Azure AD B2C tenant where you want to create your applications - -As a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD B2C tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD B2C tenant. - -#### Create User Flows and Custom Policies - -Please refer to: [Tutorial: Create user flows in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-user-flows) - -#### Add External Identity Providers - -Please refer to: [Tutorial: Add identity providers to your applications in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-add-identity-providers) - -#### Register the service app (msal-dotnet-api) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory B2C** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-dotnet-api`. - 1. Under **Supported account types**, select **Accounts in any identity provider or organizational directory (for authenticating users with user flows)** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`https://{tenantName}.onmicrosoft.com/{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, use `ToDoList.Read`. - 1. For **Admin consent display name** type in *Read users ToDo list using the 'msal-dotnet-api'*. - 1. For **Admin consent description** type in *Allow the app to read the user's ToDo list using the 'msal-dotnet-api'*. - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. - > Repeat the steps above for another scope named **ToDoList.ReadWrite** -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -> :information_source: Follow [the principle of least privilege when publishing permissions](https://learn.microsoft.com/security/zero-trust/develop/protected-api-example) for a web API. - -##### Configure the service app (msal-dotnet-api) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Instance` and replace the existing value with your Azure AD B2C tenant name e.g.`https://{tenantName}.b2clogin.com`. -1. Find the key `ClientId` and replace the existing value with the application ID (clientId) of `msal-dotnet-api` app copied from the Azure portal. -1. Find the key `Domain` and replace the existing value with your Azure AD B2C tenant name e.g.`{tenantName}.onmicrosoft.com` -1. Find the key `SignUpSignInPolicyId` and replace the existing value with the user-flow/custom policy Id that you will call this API with e.g. `b2c_1_susi` (:warning: this should match the policy ID in the default authority in SPA project configuration). - -#### Register the client app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure AD B2C** service. -1. Select the **App Registrations** blade on the left, then find and select the application that you have registered in the previous tutorial (`msal-angular-spa`). -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-dotnet-api`. - 1. Select **delegated permissions**, which is requested by apps that signs-in users. - 1. In the **Delegated permissions** section, select **ToDoList.Read** and **ToDoList.ReadWrite** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Configure the client app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `msalConfig.clientId` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `protectedResources.scopes.read` and replace the existing value with the `ToDoList.Read` scope you have exposed in the `msal-dotnet-api` registration steps earlier e.g. `https://fabrikamb2c.onmicrosoft.com/TodoList/ToDoList.Read` -1. Find the key `protectedResources.scopes.write` and replace the existing value with the `ToDoList.ReadWrite` scope you have exposed in the `msal-dotnet-api` registration steps earlier e.g. `https://fabrikamb2c.onmicrosoft.com/TodoList/ToDoList.ReadWrite` - -### Step 6: Running the sample - -From your shell or command line, execute the following commands: - -```console - cd SPA - npm start -``` - -Then, open a separate command line and run: - -```console - cd API/TodoListAPI - dotnet run -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -2. Sign-in using the button on the top-right corner. -3. Select the **TodoList** button on the navigation bar to access your todo list. - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -> :information_source: if you believe your issue is with the B2C service itself rather than with the sample, please file a support ticket with the B2C team by following the instructions [here](https://docs.microsoft.com/azure/active-directory-b2c/support-options). - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. Make sure that your questions or comments are tagged with [`azure-active-directory` `angular` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -## About the code - -### CORS settings - -You need to set **cross-origin resource sharing** (CORS) policy to be able to call the **TodoListAPI** in [Startup.cs](./API/TodoListAPI/Startup.cs). For the purpose of the sample, **CORS** is enabled for **all** domains and methods. This is insecure and only used for demonstration purposes here. In production, you should modify this as to allow only the domains that you designate. If your web API is going to be hosted on **Azure App Service**, we recommend configuring CORS on the App Service itself. - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // ... - - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); -} -``` - -### Access token validation - -On the web API side, the `AddMicrosoftIdentityWebApiAuthentication` method in [Startup.cs](./API/TodoListAPI/Startup.cs) protects the web API by [validating access tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) sent tho this API. Check out [Protected web API: Code configuration](https://docs.microsoft.com/azure/active-directory/develop/scenario-protected-web-api-app-configuration) which explains the inner workings of this method in more detail. Simply add the following line under the `ConfigureServices` method: - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddMicrosoftIdentityWebApiAuthentication(Configuration); - - // ... -} -``` - -For validation and debugging purposes, developers can decode **JWT**s (*JSON Web Tokens*) using [jwt.ms](https://jwt.ms). - -### Verifying permissions - -Access tokens that does not have the **scp** (for delegated permissions) claim with the required scopes/permissions should not be accepted. In the sample, this is illustrated via the `RequiredScope` attribute in [TodoListController.cs](./API/TodoListAPI/Controllers/TodoListController.cs): - -```csharp -// GET: api/TodoItems -[HttpGet] -[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes:Read")] -public async Task>> GetTodoItems() -{ - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _TodoListContext.TodoItems.Where(x => x.Owner == _currentPrincipalId).ToListAsync(); -} -``` - -When granting access to data based on scopes, be sure to follow [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access). - -### Debugging the sample - -To debug the .NET Core web API that comes with this sample, install the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) for Visual Studio Code. - -Learn more about using [.NET Core with Visual Studio Code](https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code). - -## Next Tutorial - -Continue with the next tutorial: [Deploy your apps to Azure](../../4-Deployment/README-incremental.md). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -* [What is Azure Active Directory B2C?](https://docs.microsoft.com/azure/active-directory-b2c/overview) -* [Application types that can be used in Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/application-types) -* [Recommendations and best practices for Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/best-practices) -* [Azure AD B2C session](https://docs.microsoft.com/azure/active-directory-b2c/session-overview) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) -* [Validating Access Tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) -* [User and application tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#user-and-application-tokens) -* [Validation differences by supported account types](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation) -* [How to manually validate a JWT access token using the Microsoft identity platform](https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation/blob/master/README.md) diff --git a/3-Authorization-II/2-call-api-b2c/README.md b/3-Authorization-II/2-call-api-b2c/README.md deleted file mode 100644 index fecd57a7..00000000 --- a/3-Authorization-II/2-call-api-b2c/README.md +++ /dev/null @@ -1,337 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates an Angular single-page application (SPA) calling a ASP.NET Core web API secured with Azure AD B2C. It uses the Microsoft Authentication Library for Angular (MSAL Angular) to sign-in a users in the SPA and get a token for the web API. The Web API is protected using the Microsoft.Identity.Web. -languages: - - javascript - - typescript - - csharp -products: - - azure-active-directory-b2c - - msal-js - - msal-angular - - microsoft-identity-web - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-b2c-netcore -extensions: - services: ms-identity - platform: JavaScript - endpoint: AAD v2.0 - level: 200 - client: Angular SPA - service: .NET Core web API ---- - -# Angular single-page application that authenticates users with Azure AD B2C and calls a protected .NET Core web API - -* [Overview](#overview) -* [Scenario](#scenario) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Next Steps](#next-steps) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) calling a ASP.NET Core web API secured with [Azure AD B2C](https://docs.microsoft.com/azure/active-directory-b2c/overview). It uses the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular) to sign-in a users in the SPA and get a token for the web API. The Web API is protected using the [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web). - -> :information_source: To learn how to integrate a JavaScript Angular application with Azure AD,consider going through the recorded session: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -## Scenario - -1. The client Angular SPA uses [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) to sign-in a user and obtain a JWT [Access Token](https://aka.ms/access-tokens) from **Azure AD B2C**. -1. The access token is used as a *bearer* token to authorize the user to call the .NET Core web API protected by **Azure AD B2C**. -1. The service uses the [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) to protect the Web api, check permissions and validate tokens. - -![Scenario Image](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-------------------------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `API/TodoListAPI/appsettings.json` | Authentication parameters for API project reside here. | -| `API/TodoListAPI/Startup.cs` | Microsoft.Identity.Web is initialized here. | -| `API/TodoListAPI/Controllers/TodoListController.cs` | Contains logic for controlling access to data. | - -## Prerequisites - -* Either [Visual Studio](https://visualstudio.microsoft.com/downloads/) or [Visual Studio Code](https://code.visualstudio.com/download) and [.NET Core SDK](https://www.microsoft.com/net/learn/get-started) -* An **Azure AD B2C** tenant. For more information, see: [How to get an Azure AD B2C tenant](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-tenant) -* A user account in your **Azure AD B2C** tenant. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console -git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 3-Authorization-II/2-call-api-b2c/API/TodoListAPI - dotnet restore -``` - -### Step 3. Trust development certificates - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 4. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -### Step 5: Register the sample application(s) in your tenant - -> :warning: This sample comes with a pre-registered application for demo purposes. If you would like to use your own **Azure AD B2C** tenant and application, follow the steps below to register and configure the application on **Azure portal**. Otherwise, continue with the steps for [Explore the sample](#explore-the-sample). - -#### Choose the Azure AD B2C tenant where you want to create your applications - -As a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD B2C tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD B2C tenant. - -#### Create User Flows and Custom Policies - -Please refer to: [Tutorial: Create user flows in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-create-user-flows) - -#### Add External Identity Providers - -Please refer to: [Tutorial: Add identity providers to your applications in Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/tutorial-add-identity-providers) - -#### Register the service app (msal-dotnet-api) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory B2C** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-dotnet-api`. - 1. Under **Supported account types**, select **Accounts in any identity provider or organizational directory (for authenticating users with user flows)** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`https://{tenantName}.onmicrosoft.com/{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, use `ToDoList.Read`. - 1. For **Admin consent display name** type in *Read users ToDo list using the 'msal-dotnet-api'*. - 1. For **Admin consent description** type in *Allow the app to read the user's ToDo list using the 'msal-dotnet-api'*. - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. - > Repeat the steps above for another scope named **ToDoList.ReadWrite** -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -> :information_source: Follow [the principle of least privilege when publishing permissions](https://learn.microsoft.com/security/zero-trust/develop/protected-api-example) for a web API. - -##### Configure the service app (msal-dotnet-api) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Instance` and replace the existing value with your Azure AD B2C tenant name e.g.`https://{tenantName}.b2clogin.com`. -1. Find the key `ClientId` and replace the existing value with the application ID (clientId) of `msal-dotnet-api` app copied from the Azure portal. -1. Find the key `Domain` and replace the existing value with your Azure AD B2C tenant name e.g. `{tenantName}.onmicrosoft.com` -1. Find the key `SignUpSignInPolicyId` and replace the existing value with the user-flow/custom policy Id that you will call this API with e.g. `b2c_1_susi` (:warning: this should match the policy ID in the default authority in SPA project configuration). - -#### Register the client app (msal-angular-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory B2C** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-spa`. - 1. Under **Supported account types**, select **Accounts in any identity provider or organizational directory (for authenticating users with user flows)** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-dotnet-api`. - 1. In the **Delegated permissions** section, select **ToDoList.Read**, **ToDoList.ReadWrite** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. -1. At this stage, the permissions are assigned correctly, but since it's a B2C tenant, the users themselves cannot consent to these permissions. To get around this problem, we'd let the [tenant administrator consent on behalf of all users in the tenant](https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent). Select the **Grant admin consent for {tenant}** button, and then select **Yes** when you are asked if you want to grant consent for the requested permissions for all accounts in the tenant. You need to be a tenant admin to be able to carry out this operation. - -##### Configure the client app (msal-angular-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `msalConfig.clientId` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `protectedResources.scopes.read` and replace the existing value with the `ToDoList.Read` scope you have exposed in the `msal-dotnet-api` registration steps earlier e.g. `https://fabrikamb2c.onmicrosoft.com/TodoList/ToDoList.Read` -1. Find the key `protectedResources.scopes.write` and replace the existing value with the `ToDoList.ReadWrite` scope you have exposed in the `msal-dotnet-api` registration steps earlier e.g. `https://fabrikamb2c.onmicrosoft.com/TodoList/ToDoList.ReadWrite` - -To setup your B2C user-flows, do the following: - -1. Find the key `b2cPolicies.names` and populate it with your policy names e.g. `signUpSignIn`. -1. Find the key `b2cPolicies.authorities` and populate it with your policy authority strings e.g. `https://.b2clogin.com/.onmicrosoft.com/b2c_1_susi`. -1. Find the key `b2cPolicies.authorityDomain` and populate it with the domain portion of your authority string e.g. `.b2clogin.com`. - -### Step 6: Running the sample - -From your shell or command line, execute the following commands: - -```console - cd SPA - npm start -``` - -Then, open a separate command line and run: - -```console - cd API/TodoListAPI - dotnet run -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -2. Sign-in using the button on the top-right corner. -3. Select the **TodoList** button on the navigation bar to access your todo list. - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -> :information_source: if you believe your issue is with the B2C service itself rather than with the sample, please file a support ticket with the B2C team by following the instructions [here](https://docs.microsoft.com/azure/active-directory-b2c/support-options). - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. Make sure that your questions or comments are tagged with [`azure-active-directory` `angular` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -## About the code - -### CORS settings - -You need to set **cross-origin resource sharing** (CORS) policy to be able to call the **TodoListAPI** in [Startup.cs](./API/TodoListAPI/Startup.cs). For the purpose of the sample, **CORS** is enabled for **all** domains and methods. This is insecure and only used for demonstration purposes here. In production, you should modify this as to allow only the domains that you designate. If your web API is going to be hosted on **Azure App Service**, we recommend configuring CORS on the App Service itself. - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // ... - - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); -} -``` - -### Access token validation - -On the web API side, the `AddMicrosoftIdentityWebApiAuthentication` method in [Startup.cs](./API/TodoListAPI/Startup.cs) protects the web API by [validating access tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) sent tho this API. Check out [Protected web API: Code configuration](https://docs.microsoft.com/azure/active-directory/develop/scenario-protected-web-api-app-configuration) which explains the inner workings of this method in more detail. Simply add the following line under the `ConfigureServices` method: - -```csharp -public void ConfigureServices(IServiceCollection services) -{ - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddMicrosoftIdentityWebApiAuthentication(Configuration); - - // ... -} -``` - -For validation and debugging purposes, developers can decode **JWT**s (*JSON Web Tokens*) using [jwt.ms](https://jwt.ms). - -### Verifying permissions - -Access tokens that does not have the **scp** (for delegated permissions) claim with the required scopes/permissions should not be accepted. In the sample, this is illustrated via the `RequiredScope` attribute in [TodoListController.cs](./API/TodoListAPI/Controllers/TodoListController.cs): - -```csharp -// GET: api/TodoItems -[HttpGet] -[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes:Read")] -public async Task>> GetTodoItems() -{ - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _TodoListContext.TodoItems.Where(x => x.Owner == _currentPrincipalId).ToListAsync(); -} -``` - -When granting access to data based on scopes, be sure to follow [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access). - -### Debugging the sample - -To debug the .NET Core web API that comes with this sample, install the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) for Visual Studio Code. - -Learn more about using [.NET Core with Visual Studio Code](https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code). - -## Next Steps - -Learn how to: - -* [your apps to Azure Storage and App Service](../../4-Deployment/README-incremental.md) - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [What is Azure Active Directory B2C?](https://docs.microsoft.com/azure/active-directory-b2c/overview) -* [Application types that can be used in Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/application-types) -* [Recommendations and best practices for Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/best-practices) -* [Azure AD B2C session](https://docs.microsoft.com/azure/active-directory-b2c/session-overview) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) -* [Validating Access Tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) -* [User and application tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#user-and-application-tokens) -* [Validation differences by supported account types](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation) -* [How to manually validate a JWT access token using the Microsoft identity platform](https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation/blob/master/README.md) diff --git a/3-Authorization-II/2-call-api-b2c/ReadmeFiles/screenshot.png b/3-Authorization-II/2-call-api-b2c/ReadmeFiles/screenshot.png deleted file mode 100644 index 36e235895303c9654f12ea3f71173b5c7e0bdf0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26001 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 Zf6-qzx(k)+x25d(P+9X{!QCeT{{t>OnPUI| diff --git a/3-Authorization-II/2-call-api-b2c/SPA/.browserslistrc b/3-Authorization-II/2-call-api-b2c/SPA/.browserslistrc deleted file mode 100644 index 4f9ac269..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/.browserslistrc +++ /dev/null @@ -1,16 +0,0 @@ -# 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 - -# For the full list of supported browsers by the Angular framework, please see: -# https://angular.io/guide/browser-support - -# You can see what browsers were selected by your queries by running: -# npx browserslist - -last 1 Chrome version -last 1 Firefox version -last 2 Edge major versions -last 2 Safari major versions -last 2 iOS major versions -Firefox ESR diff --git a/3-Authorization-II/2-call-api-b2c/SPA/.editorconfig b/3-Authorization-II/2-call-api-b2c/SPA/.editorconfig deleted file mode 100644 index 59d9a3a3..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/.editorconfig +++ /dev/null @@ -1,16 +0,0 @@ -# Editor configuration, see https://editorconfig.org -root = true - -[*] -charset = utf-8 -indent_style = space -indent_size = 2 -insert_final_newline = true -trim_trailing_whitespace = true - -[*.ts] -quote_type = single - -[*.md] -max_line_length = off -trim_trailing_whitespace = false diff --git a/3-Authorization-II/2-call-api-b2c/SPA/README.md b/3-Authorization-II/2-call-api-b2c/SPA/README.md deleted file mode 100644 index 9eebc4b1..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/README.md +++ /dev/null @@ -1,27 +0,0 @@ -# SPA - -This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 14.1.2. - -## Development server - -Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The application will automatically reload if you change any of the source files. - -## Code scaffolding - -Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive|pipe|service|class|guard|interface|enum|module`. - -## Build - -Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. - -## Running unit tests - -Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io). - -## Running end-to-end tests - -Run `ng e2e` to execute the end-to-end tests via a platform of your choice. To use this command, you need to first add a package that implements end-to-end testing capabilities. - -## Further help - -To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI Overview and Command Reference](https://angular.io/cli) page. diff --git a/3-Authorization-II/2-call-api-b2c/SPA/angular.json b/3-Authorization-II/2-call-api-b2c/SPA/angular.json deleted file mode 100644 index bf5548c5..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/angular.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "SPA": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/spa", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "SPA:build:production" - }, - "development": { - "browserTarget": "SPA:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "SPA:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - } - } - } - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/karma.conf.js b/3-Authorization-II/2-call-api-b2c/SPA/karma.conf.js deleted file mode 100644 index af0f20e5..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/karma.conf.js +++ /dev/null @@ -1,50 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/spa'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/3-Authorization-II/2-call-api-b2c/SPA/package-lock.json b/3-Authorization-II/2-call-api-b2c/SPA/package-lock.json deleted file mode 100644 index 31821374..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/package-lock.json +++ /dev/null @@ -1,21060 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "spa", - "version": "0.0.0", - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.4.0", - "@azure/msal-browser": "^2.28.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } - }, - "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", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "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/@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/@angular-devkit/build-angular/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-angular/node_modules/rxjs/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/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", - "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/core/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/schematics": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.7.tgz", - "integrity": "sha512-nJUJXCBQr7rmVn6IXFAXMCWAB1w6JQmFGuFVW0G3GH/A0e+A3ttzJc6qVLYluqaFoafw394cZu24YJo55E/+Zg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "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/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/schematics/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@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/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.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", - "integrity": "sha512-tABt1EDwBHm0ngsutdkXXWgPgHzapGLC7rSPHXStMc24ngViFZpXGzBCpompjHvXNt6bjklmJmuRvjS6+ktBZA==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1400.7", - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "@schematics/angular": "14.0.7", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.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/@angular-devkit/architect": { - "version": "0.1400.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.7.tgz", - "integrity": "sha512-8dv/Ql86dHajsHYjjr5jvpiV7uXWbt7Mz4K/rGiOi+zzDNKPcZcuCejulWhOySDcCPjT/an47Qcwr+awL4Wr4g==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "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/cli/node_modules/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/cli/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@angular/cli/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@angular/cli/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/cli/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@angular/cli/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/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/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/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/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/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", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "node_modules/@azure/msal-angular": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.5.0.tgz", - "integrity": "sha512-dRA12lcrd8cg9xsrAJDWcwlE6UUJA/OYaqBHxUBfr8/LKk80x4ZyqmwFGwUZZ8CAJvFFiviCrQFeW6aQB+SsBQ==", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@azure/msal-browser": "^2.32.0", - "rxjs": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.0.tgz", - "integrity": "sha512-uDP0vNmIefM6+RjILGKu+zOiN+VGnEvxRfUIV5hOWOWLLkG7kcDPYG/v/EJMoG+R5DYW9jXA5nvZT76t5HdEAQ==", - "dependencies": { - "@azure/msal-common": "^9.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", - "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", - "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-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-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", - "dev": true, - "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", - "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/types": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", - "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", - "dev": true, - "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/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "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/@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/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "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", - "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/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "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/@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/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@schematics/angular": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.7.tgz", - "integrity": "sha512-I0v1gNFpm9ReL/hUzwjjOa+hk0qvlXv/vjITAWnlUV5dba6FZxzwsrTGsGO6t5XMNsm6QtwpDYDRdy9uy/n/1g==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "jsonc-parser": "3.0.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/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/@schematics/angular/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@schematics/angular/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/@schematics/angular/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@schematics/angular/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/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.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/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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "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": "18.11.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz", - "integrity": "sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/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/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/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/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "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/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/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/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "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-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/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "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/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.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/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "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/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "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/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "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", - "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/connect/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/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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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-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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "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/critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "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", - "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/critters/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/critters/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/critters/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/critters/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/critters/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/critters/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/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, - "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/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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "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/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/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/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "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/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/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/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "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/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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "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", - "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/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "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/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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.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/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/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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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/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/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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.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", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "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", - "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/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "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", - "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/istanbul-lib-report/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/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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/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-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/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "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/karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "dependencies": { - "which": "^1.2.1" - } - }, - "node_modules/karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/karma-coverage/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma-coverage/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/karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "dependencies": { - "jasmine-core": "^4.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "karma": "^6.0.0" - } - }, - "node_modules/karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "peerDependencies": { - "jasmine-core": ">=3.8", - "karma": ">=0.9", - "karma-jasmine": ">=1.1" - } - }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "node_modules/karma/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/karma/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/karma/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/karma/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/karma/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/karma/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/karma/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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/license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "dependencies": { - "webpack-sources": "^3.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.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/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "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", - "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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", - "dev": true, - "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/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/magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/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/make-fetch-happen/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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": "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/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "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/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.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": ">= 10.12.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/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/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "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/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-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "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", - "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/ora/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/ora/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/ora/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/ora/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/ora/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/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "node_modules/parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-sax-parser/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "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/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "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/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/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "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/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/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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "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/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "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", - "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/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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/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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "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/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/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/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/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/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/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.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/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "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/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": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/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/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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/stylus/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/stylus/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stylus/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/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "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", - "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/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "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/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "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", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "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-dev-server/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "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", - "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/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/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/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "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", - "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/wrap-ansi/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/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.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/zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "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", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "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": { - "@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": {} - }, - "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" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "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", - "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/schematics": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.7.tgz", - "integrity": "sha512-nJUJXCBQr7rmVn6IXFAXMCWAB1w6JQmFGuFVW0G3GH/A0e+A3ttzJc6qVLYluqaFoafw394cZu24YJo55E/+Zg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@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.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", - "integrity": "sha512-tABt1EDwBHm0ngsutdkXXWgPgHzapGLC7rSPHXStMc24ngViFZpXGzBCpompjHvXNt6bjklmJmuRvjS6+ktBZA==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1400.7", - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "@schematics/angular": "14.0.7", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.1" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1400.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.7.tgz", - "integrity": "sha512-8dv/Ql86dHajsHYjjr5jvpiV7uXWbt7Mz4K/rGiOi+zzDNKPcZcuCejulWhOySDcCPjT/an47Qcwr+awL4Wr4g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "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" - } - }, - "@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/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/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/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", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.5.0.tgz", - "integrity": "sha512-dRA12lcrd8cg9xsrAJDWcwlE6UUJA/OYaqBHxUBfr8/LKk80x4ZyqmwFGwUZZ8CAJvFFiviCrQFeW6aQB+SsBQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.0.tgz", - "integrity": "sha512-uDP0vNmIefM6+RjILGKu+zOiN+VGnEvxRfUIV5hOWOWLLkG7kcDPYG/v/EJMoG+R5DYW9jXA5nvZT76t5HdEAQ==", - "requires": { - "@azure/msal-common": "^9.0.0" - } - }, - "@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", - "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "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", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", - "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-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-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "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", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", - "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", - "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/types": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", - "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "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 - }, - "@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": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@schematics/angular": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.7.tgz", - "integrity": "sha512-I0v1gNFpm9ReL/hUzwjjOa+hk0qvlXv/vjITAWnlUV5dba6FZxzwsrTGsGO6t5XMNsm6QtwpDYDRdy9uy/n/1g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "jsonc-parser": "3.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.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/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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "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": "18.11.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz", - "integrity": "sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==", - "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/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/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/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "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" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-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" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "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", - "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 - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "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" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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 - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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-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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "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" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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 - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "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" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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 - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "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", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "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" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "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", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "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 - }, - "karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "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": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "requires": {} - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - } - }, - "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 - }, - "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": "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" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "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": { - "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" - }, - "dependencies": { - "@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 - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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": { - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "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 - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - } - } - }, - "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 - }, - "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.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" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", - "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", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "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" - } - }, - "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": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "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" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "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", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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" - } - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/package.json b/3-Authorization-II/2-call-api-b2c/SPA/package.json deleted file mode 100644 index f61f24db..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.4.0", - "@azure/msal-browser": "^2.28.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app-routing.module.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/app-routing.module.ts deleted file mode 100644 index df01d3de..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'todo-edit/:id', - component: TodoEditComponent, - canActivate: [ - MsalGuard - ] - }, - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - MsalGuard - ] - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.css b/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.css deleted file mode 100644 index 14786d86..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.html b/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.html deleted file mode 100644 index 5faf4d06..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.html +++ /dev/null @@ -1,25 +0,0 @@ - - {{ title }} - -
    - - TodoList - - - - -
    -
    - - -
    - - diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.ts deleted file mode 100644 index d32725fd..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.component.ts +++ /dev/null @@ -1,215 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { IdTokenClaims, PromptValue } from '@azure/msal-common'; -import { AccountInfo, AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest, SsoSilentRequest } from '@azure/msal-browser'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { b2cPolicies } from './auth-config'; - -type IdTokenClaimsWithPolicyId = IdTokenClaims & { - acr?: string, - tfp?: string, -}; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS - || msg.eventType === EventType.ACQUIRE_TOKEN_SUCCESS - || msg.eventType === EventType.SSO_SILENT_SUCCESS), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - - let payload = result.payload as AuthenticationResult; - let idtoken = payload.idTokenClaims as IdTokenClaimsWithPolicyId; - - if (idtoken.acr === b2cPolicies.names.signUpSignIn || idtoken.tfp === b2cPolicies.names.signUpSignIn) { - this.authService.instance.setActiveAccount(payload.account); - } - - /** - * For the purpose of setting an active account for UI update, we want to consider only the auth response resulting - * from SUSI flow. "acr" claim in the id token tells us the policy (NOTE: newer policies may use the "tfp" claim instead). - * To learn more about B2C tokens, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/tokens-overview - */ - if (idtoken.acr === b2cPolicies.names.editProfile || idtoken.tfp === b2cPolicies.names.editProfile) { - - // retrieve the account from initial sing-in to the app - const originalSignInAccount = this.authService.instance.getAllAccounts() - .find((account: AccountInfo) => - account.idTokenClaims?.oid === idtoken.oid - && account.idTokenClaims?.sub === idtoken.sub - && ((account.idTokenClaims as IdTokenClaimsWithPolicyId).acr === b2cPolicies.names.signUpSignIn - || (account.idTokenClaims as IdTokenClaimsWithPolicyId).tfp === b2cPolicies.names.signUpSignIn) - ); - - let signUpSignInFlowRequest: SsoSilentRequest = { - authority: b2cPolicies.authorities.signUpSignIn.authority, - account: originalSignInAccount - }; - - // silently login again with the signUpSignIn policy - this.authService.ssoSilent(signUpSignInFlowRequest); - } - - /** - * Below we are checking if the user is returning from the reset password flow. - * If so, we will ask the user to reauthenticate with their new password. - * If you do not want this behavior and prefer your users to stay signed in instead, - * you can replace the code below with the same pattern used for handling the return from - * profile edit flow (see above ln. 74-92). - */ - if (idtoken.acr === b2cPolicies.names.resetPassword || idtoken.tfp === b2cPolicies.names.resetPassword) { - let signUpSignInFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.signUpSignIn.authority, - prompt: PromptValue.LOGIN, // force user to reauthenticate with their new password - scopes: [] - }; - - this.login(signUpSignInFlowRequest); - } - - return result; - }); - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE), - takeUntil(this._destroying$) - ) - .subscribe((result: EventMessage) => { - // Checking for the forgot password error. Learn more about B2C error codes at - // https://learn.microsoft.com/azure/active-directory-b2c/error-codes - if (result.error && result.error.message.indexOf('AADB2C90118') > -1) { - let resetPasswordFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.resetPassword.authority, - scopes: [], - }; - - this.login(resetPasswordFlowRequest); - }; - }); - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login(userFlowRequest?: RedirectRequest | PopupRequest) { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup(userFlowRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest, ...userFlowRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(userFlowRequest); - } - } - } - - logout() { - const activeAccount = - this.authService.instance.getActiveAccount() || - this.authService.instance.getAllAccounts()[0]; - - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.logoutPopup({ - account: activeAccount, - }); - } else { - this.authService.logoutRedirect({ - account: activeAccount, - }); - } - } - - editProfile() { - let editProfileFlowRequest: RedirectRequest | PopupRequest = { - authority: b2cPolicies.authorities.editProfile.authority, - scopes: [], - }; - - this.login(editProfileFlowRequest); - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.module.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.module.ts deleted file mode 100644 index 2e45c563..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/app.module.ts +++ /dev/null @@ -1,133 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon' -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field' - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoService } from './todo.service'; - -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent, ProtectedResourceScopes -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map | null>(); - - protectedResourceMap.set(protectedResources.apiTodoList.endpoint, [ - { - httpMethod: 'GET', - scopes: [...protectedResources.apiTodoList.scopes.read] - }, - { - httpMethod: 'POST', - scopes: [...protectedResources.apiTodoList.scopes.write] - }, - { - httpMethod: 'PUT', - scopes: [...protectedResources.apiTodoList.scopes.write] - }, - { - httpMethod: 'DELETE', - scopes: [...protectedResources.apiTodoList.scopes.write] - } - ]); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - }; -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - TodoViewComponent, - TodoEditComponent - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - MatInputModule, - MatFormFieldModule, - MatCheckboxModule, - MatIconModule, - HttpClientModule, - FormsModule, - MsalModule - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory - }, - MsalService, - MsalGuard, - MsalBroadcastService, - TodoService - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/auth-config.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/auth-config.ts deleted file mode 100644 index ad33b69f..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,91 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Enter here the user flows and custom policies for your B2C application, - * To learn more about user flows, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/user-flow-overview - * To learn more about custom policies, visit https://docs.microsoft.com/en-us/azure/active-directory-b2c/custom-policy-overview - */ -export const b2cPolicies = { - names: { - signUpSignIn: 'B2C_1_susi_v2', - resetPassword: 'B2C_1_reset_v3', - editProfile: 'B2C_1_edit_profile_v2', - }, - authorities: { - signUpSignIn: { - authority: 'https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_susi_v2', - }, - resetPassword: { - authority: 'https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/B2C_1_reset_v3', - }, - editProfile: { - authority: 'https://fabrikamb2c.b2clogin.com/fabrikamb2c.onmicrosoft.com/b2c_1_edit_profile_v2', - }, - }, - authorityDomain: 'fabrikamb2c.b2clogin.com', -}; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: b2cPolicies.authorities.signUpSignIn.authority, // Defaults to "https://login.microsoftonline.com/common" - knownAuthorities: [b2cPolicies.authorityDomain], // Mark your B2C tenant's domain as trusted. - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ - export const protectedResources = { - apiTodoList: { - endpoint: "https://localhost:44351/api/todolist", - scopes: { - read: ["https://fabrikamb2c.onmicrosoft.com/TodoList/ToDoList.Read"], - write: ["https://fabrikamb2c.onmicrosoft.com/TodoList/ToDoList.ReadWrite"] - } - } -} - -/** -* Scopes you add here will be prompted for user consent during sign-in. -* By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. -* For more information about OIDC scopes, visit: -* https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes -*/ -export const loginRequest = { - scopes: [] -}; diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/claim-utils.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/claim-utils.ts deleted file mode 100644 index 5112d331..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/claim-utils.ts +++ /dev/null @@ -1,189 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The principal about which the token asserts information, such as the user of an application. This value is immutable and can nott be reassigned or reused. It can be used to perform authorization checks safely, such as when the token is used to access a resource. By default, the subject claim is populated with the object ID of the user in the directory.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.css b/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.css deleted file mode 100644 index 17b43f0e..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,25 +0,0 @@ -#table-container { - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.html b/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.html deleted file mode 100644 index b752c714..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD B2C and get an ID Token - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and protect a route. - - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    - - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    -
    diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.ts deleted file mode 100644 index 6f697c96..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { filter } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/sample.spec.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/sample.spec.ts deleted file mode 100644 index dec8288c..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,111 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(true); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/todo-view')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} - - diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.css b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.css deleted file mode 100644 index 9295c096..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.css +++ /dev/null @@ -1,14 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} - -.form-field { - min-width: 100px; - max-width: 800px; - width: 100%; -} - -.input-field { - width: 100%; -} \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.html b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.html deleted file mode 100644 index bc0853b4..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.html +++ /dev/null @@ -1,14 +0,0 @@ - -
    -

    Edit a task

    -
    -
    -
    -
    - - - - -
    -
    \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.ts deleted file mode 100644 index de6744d1..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-edit/todo-edit.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TodoService } from './../todo.service'; -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { Todo } from '../todo.service'; - -@Component({ - selector: 'app-todo-edit', - templateUrl: './todo-edit.component.html', - styleUrls: ['./todo-edit.component.css'] -}) -export class TodoEditComponent implements OnInit { - - todo: Todo = { - id: 1, - description: "undefined", - status: false, - }; - - constructor(private route: ActivatedRoute, private router: Router, private service: TodoService) { } - - ngOnInit(): void { - this.route.paramMap.subscribe((params) => { - let id = +params.get('id')!; - this.service.getTodo(+id).subscribe((response: Todo) => { - this.todo = response; - }) - }) - } - - editTodo(todo: Todo): void { - this.todo.description = todo.description; - this.service.editTodo(this.todo).subscribe(() => { - this.router.navigate(['/todo-view']); - }) - } - -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.css b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.css deleted file mode 100644 index 6e93921c..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.css +++ /dev/null @@ -1,26 +0,0 @@ -table { - min-width: 100px; - width: 100%; -} - -.form-field { - min-width: 100px; - width: 90%; -} - -.input-field { - width: 90%; -} - -.card-section { - margin-top: 5%; -} - -#submit-button { - margin-left: 1%; -} - -.material-icons:hover { - color: orange !important; - cursor: pointer -} \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.html b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.html deleted file mode 100644 index db724480..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.html +++ /dev/null @@ -1,45 +0,0 @@ - -
    - - Enter a task - - - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Status - - Description {{todo.description}} Edit - edit - Remove - delete -
    -
    \ No newline at end of file diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.ts deleted file mode 100644 index 6581b525..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo-view/todo-view.component.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { NgForm } from '@angular/forms'; - -import { TodoService, Todo } from './../todo.service'; - -@Component({ - selector: 'app-todo-view', - templateUrl: './todo-view.component.html', - styleUrls: ['./todo-view.component.css'] -}) -export class TodoViewComponent implements OnInit { - - todo?: Todo; - - todos: Todo[] = []; - - displayedColumns = ['status', 'description', 'edit', 'remove']; - - constructor(private service: TodoService) { } - - ngOnInit(): void { - this.getTodos(); - } - - getTodos(): void { - this.service.getTodos() - .subscribe((todos: Todo[]) => { - this.todos = todos; - }); - } - - addTodo(add: NgForm): void { - this.service.postTodo(add.value).subscribe(() => { - this.getTodos(); - }) - add.resetForm(); - } - - checkTodo(todo: Todo): void { - this.service.editTodo(todo).subscribe(); - } - - removeTodo(id: string): void { - this.service.deleteTodo(+id).subscribe(() => { - this.getTodos(); - }) - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo.service.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo.service.ts deleted file mode 100644 index d4404082..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/app/todo.service.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; - -import { protectedResources } from './auth-config'; - -export interface Todo { - id: number; - description: string; - status: boolean; -} - -@Injectable({ - providedIn: 'root' -}) -export class TodoService { - url = protectedResources.apiTodoList.endpoint; - - constructor(private http: HttpClient) { } - - getTodos() { - return this.http.get(this.url); - } - - getTodo(id: number) { - return this.http.get(this.url + '/' + id); - } - - postTodo(todo: Todo) { - return this.http.post(this.url, todo); - } - - deleteTodo(id: number) { - return this.http.delete(this.url + '/' + id); - } - - editTodo(todo: Todo) { - return this.http.put(this.url + '/' + todo.id, todo); - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/assets/.gitkeep b/3-Authorization-II/2-call-api-b2c/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.prod.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/favicon.svg b/3-Authorization-II/2-call-api-b2c/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/index.html b/3-Authorization-II/2-call-api-b2c/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/main.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/polyfills.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/styles.css b/3-Authorization-II/2-call-api-b2c/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/3-Authorization-II/2-call-api-b2c/SPA/src/test.ts b/3-Authorization-II/2-call-api-b2c/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.app.json b/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.json b/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.spec.json b/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/3-Authorization-II/2-call-api-b2c/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/4-Deployment/README-incremental.md b/4-Deployment/README-incremental.md deleted file mode 100644 index f14029f2..00000000 --- a/4-Deployment/README-incremental.md +++ /dev/null @@ -1,174 +0,0 @@ -# Deploy your Angular application to Azure Cloud and use Azure services to manage your operations - - 1. [Overview](#overview) - 1. [Scenario](#scenario) - 1. [Prerequisites](#prerequisites) - 1. [Registration](#registration) - 1. [Deployment](#deployment) - 1. [Explore the sample](#explore-the-sample) - 1. [More information](#more-information) - 1. [Community Help and Support](#community-help-and-support) - 1. [Contributing](#contributing) - -## Overview - -This sample demonstrates how to deploy an Angular single-page application (SPA) coupled with a .NET Core web API to **Azure Cloud** using [Azure Storage](https://docs.microsoft.com/azure/storage/blobs/) and [Azure App Service](https://docs.microsoft.com/azure/app-service/), respectively. To do so, we will use the [same code sample from Chapter 3](../3-Authorization-II/1-call-api). - -> :information_source: You may also choose to deploy the [B2C sample from Chapter 3](../3-Authorization-II/2-call-api-b2c/README.md) instead. Steps below are more or less the same. - -## Scenario - -1. The client application uses **MSAL Angular** to sign-in a user and obtain a JWT **Access Token** from **Azure AD**. -1. The **Access Token** is used as a **bearer** token to *authorize* the user to call the protected web API. -1. The protected web API responds with the claims in the **Access Token**. - -![Overview](./ReadmeFiles/topology.png) - -## Prerequisites - -- An **Azure subscription**. This sample uses **Azure Storage** and **Azure App Service**. - -## Registration - -### Register the service app (.NET Core web API) - -Use the same app registration credentials that you've obtained during [**chapter 3-1**](../3-Authorization-II/1-call-api/README.md#registration). Update your project files here as needed. - -### Register the client app (Angular SPA) - -Use the same app registration credentials that you've obtained during [**chapter 3-1**](../3-Authorization-II/1-call-api/README.md#registration). Update your project files here as needed. - -## Deployment - -### Deploying web API to Azure App Services - -There is one .NET Core web API in this sample. To deploy it to **Azure App Services**, you'll need to: - -- create an **Azure App Service** -- publish the projects to the **App Services** - -#### Publish your files - -1. Sign-in to **App Service** using an Azure AD Account. -1. Open the `API` project folder. -1. Choose **View** > **Terminal** from the main menu. -1. The terminal opens in the `API` folder. -1. Run the following command: - - ```console - dotnet publish --configuration Release - ``` - -1. Publish folder is created under path `bin/Release/`. -1. Right-click on **Publish** folder and select **Deploy to Web App**. -1. Select **Create New Web App**, enter a unique name for the app. -1. Select **Windows** as the OS. Press **Enter**. - -#### Disable Azure App Services default authentication - -1. Go to [Azure portal](https://portal.azure.com), and locate your project there. - - On the Settings tab, select **Authentication/Authorization**. Make sure `App Service Authentication` is Off. Select **Save**. -1. Browse your website. If you see the default web page of the project, the publication was successful. - -#### Enable cross-origin resource sharing (CORS) - -1. Go to [Azure portal](https://portal.azure.com), and locate your project there. - - On the API tab, select **CORS**. Check the box **Enable Access-Control-Allow-Credentials**. - - Under **Allowed origins**, add the coordinates of your published website. - -### Deploying SPA to Azure Storage - -There is one Angular single-page application in this sample. To deploy it to **Azure Storage**, you'll need to: - -- create an Azure Storage blob and obtain website coordinates -- build your project and upload it to Azure Storage blob -- update config files with website coordinates - -> :information_source: If you would like to use **VS Code Azure Tools** extension for deployment, [watch the tutorial](https://docs.microsoft.com/azure/developer/javascript/tutorial-vscode-static-website-node-01) offered by Microsoft Docs. - -#### Build and upload the Angular SPA to an Azure Storage blob - -Build your project to get a distributable files folder, where your built `html`, `css` and `javascript` files will be generated. - -```console - cd SPA - ng build --prod -``` - -Then follow the steps below: - -> :warning: When uploading, make sure you upload the contents of your distributable files folder and **not** the entire folder itself. - -> :information_source: If you don't have an account already, see: [How to create a storage account](https://docs.microsoft.com/azure/storage/common/storage-account-create). - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. Locate your storage account and display the account overview. -1. Select **Static website** to display the configuration page for static websites. -1. Select **Enabled** to enable static website hosting for the storage account. -1. In the **Index document name** field, specify a default index page (For example: `index.html`). -1. The default **index page** is displayed when a user navigates to the root of your static website. -1. Select **Save**. The Azure portal now displays your static website endpoint. Make a note of the **Primary endpoint field**. -1. Next, select **Storage Explorer**. -1. Expand the **BLOB CONTAINERS** node, and then select the `$web` container. -1. Choose the **Upload** button to upload files. -1. If you intend for the browser to display the contents of file, make sure that the content type of that file is set to `text/html`. -1. In the pane that appears beside the **account overview page** of your storage account, select **Static Website**. The URL of your site appears in the **Primary endpoint field**. In the next section, you will register this URI. - -##### Update the Azure AD app registration - -1. Navigate back to to the [Azure portal](https://portal.azure.com). -1. In the left-hand navigation pane, select the **Azure Active Directory** service, and then select **App registrations**. -1. In the resulting screen, select `msal-angular-spa`. -1. In the app's registration screen, select **Authentication** in the menu. - - In the **Redirect URIs** section, update the reply URLs to match the site URL of your Azure deployment. For example: - - `https://angularspa1.z22.web.core.windows.net` - -### Update authentication configuration parameters - -1. In your IDE, locate the `SPA` project. Then, open `SPA\src\app\auth-config.ts`. -2. Find the key for **redirect URI** and replace its value with the address of the web app you published, for example, `https://angularspa1.z22.web.core.windows.net`. -3. Find the key for **web API endpoint** and replace its value with the address of the web API you published, for example, `https://dotnetwebapi.azurewebsites.net/api/todolist`. - -## Explore the sample - -1. Open your browser and navigate to your deployed client app's URI, for instance: `https://angularspa1.z22.web.core.windows.net/`. -2. Select the **Sign In** button on the top right corner. -3. Select the **TodoList** button on the navigation bar to access your todo list. - -![Screenshot](./ReadmeFiles/screenshot.png) - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Next Tutorial - -See how to control access to your apps using: - -- [App Roles](../5-AccessControl/1-call-api-roles/README-incremental.md) -- [Security Groups](../5-AccessControl/1-call-api-groups/README-incremental.md) - -Or learn more about how to offer your apps to other tenants (SaaS): [Multitenancy](../6-AdvancedScenarios/2-call-api-mt/README.md). - -## More information - -- [Azure Blob Storage](https://docs.microsoft.com/azure/storage/blobs/) -- [Azure App Services](https://docs.microsoft.com/azure/app-service/) - -For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. \ No newline at end of file diff --git a/4-Deployment/README.md b/4-Deployment/README.md deleted file mode 100644 index 7920629c..00000000 --- a/4-Deployment/README.md +++ /dev/null @@ -1,213 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates how to deploy an Angular single-page application (SPA) coupled with a .NET Core web API to Azure Cloud using Azure Storage and Azure App Service, respectively. To do so, we will use the same code sample from Chapter 3. -languages: - - javascript - - typescript - - csharp -products: - - msal-js - - msal-angular - - microsoft-authentication-library - - entra -urlFragment: msal-angular-deploy-azure-cloud ---- - -# Deploy your Angular application to Azure Cloud and use Azure services to manage your operations - - 1. [Overview](#overview) - 1. [Scenario](#scenario) - 1. [Prerequisites](#prerequisites) - 1. [Registration](#registration) - 1. [Deployment](#deployment) - 1. [Explore the sample](#explore-the-sample) - 1. [More information](#more-information) - 1. [Community Help and Support](#community-help-and-support) - 1. [Contributing](#contributing) - -## Overview - -This sample demonstrates how to deploy an Angular single-page application (SPA) coupled with a .NET Core web API to **Azure Cloud** using [Azure Storage](https://docs.microsoft.com/azure/storage/blobs/) and [Azure App Service](https://docs.microsoft.com/azure/app-service/), respectively. To do so, we will use the [same code sample from Chapter 3](../3-Authorization-II/1-call-api). - -> :information_source: You may also choose to deploy the [B2C sample from Chapter 3](../3-Authorization-II/2-call-api-b2c/README.md) instead. Steps below are more or less the same. - -## Scenario - -1. The client application uses **MSAL Angular** to sign-in a user and obtain a JWT **Access Token** from **Azure AD**. -1. The **Access Token** is used as a **bearer** token to *authorize* the user to call the protected web API. -1. The protected web API responds with the claims in the **Access Token**. - -![Overview](./ReadmeFiles/topology.png) - -## Prerequisites - -- An **Azure subscription**. This sample uses **Azure Storage** and **Azure App Service**. - -## Setup - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository .zip file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2: Install project dependencies - -- Setup the service app: - -```console - cd ms-identity-javascript-angular-tutorial - cd 3-Authorization-II/1-call-api - cd API - dotnet restore -``` - -- Setup the client app: - -```console - cd .. - cd SPA - npm install -``` - -## Registration - -### Register the service app (.NET Core web API) - -Use the same app registration credentials that you've obtained during [**chapter 3-1**](../3-Authorization-II/1-call-api/README.md#registration). Update your project files here as needed. - -### Register the client app (Angular SPA) - -Use the same app registration credentials that you've obtained during [**chapter 3-1**](../3-Authorization-II/1-call-api/README.md#registration). Update your project files here as needed. - -## Deployment - -### Deploying web API to Azure App Services - -There is one .NET Core web API in this sample. To deploy it to **Azure App Services**, you'll need to: - -- create an **Azure App Service** -- publish the projects to the **App Services** - -#### Publish your files - -1. Sign-in to **App Service** using an Azure AD Account. -1. Open the `API` project folder. -1. Choose **View** > **Terminal** from the main menu. -1. The terminal opens in the `API` folder. -1. Run the following command: - - ```console - dotnet publish --configuration Release - ``` - -1. Publish folder is created under path `bin/Release/`. -1. Right-click on **Publish** folder and select **Deploy to Web App**. -1. Select **Create New Web App**, enter a unique name for the app. -1. Select **Windows** as the OS. Press **Enter**. - -#### Disable Azure App Services default authentication - -1. Go to [Azure portal](https://portal.azure.com), and locate your project there. - - On the Settings tab, select **Authentication/Authorization**. Make sure `App Service Authentication` is Off. Select **Save**. -1. Browse your website. If you see the default web page of the project, the publication was successful. - -#### Enable cross-origin resource sharing (CORS) - -1. Go to [Azure portal](https://portal.azure.com), and locate your project there. - - On the API tab, select **CORS**. Check the box **Enable Access-Control-Allow-Credentials**. - - Under **Allowed origins**, add the coordinates of your published website. - -### Deploying SPA to Azure Storage - -There is one Angular single-page application in this sample. To deploy it to **Azure Storage**, you'll need to: - -- create an Azure Storage blob and obtain website coordinates -- build your project and upload it to Azure Storage blob -- update config files with website coordinates - -> :information_source: If you would like to use **VS Code Azure Tools** extension for deployment, [watch the tutorial](https://docs.microsoft.com/azure/developer/javascript/tutorial-vscode-static-website-node-01) offered by Microsoft Docs. - -#### Build and upload the Angular SPA to an Azure Storage blob - -Build your project to get a distributable files folder, where your built `html`, `css` and `javascript` files will be generated. - -```console - cd SPA - ng build --prod -``` - -Then follow the steps below: - -> :warning: When uploading, make sure you upload the contents of your distributable files folder and **not** the entire folder itself. - -> :information_source: If you don't have an account already, see: [How to create a storage account](https://docs.microsoft.com/azure/storage/common/storage-account-create). - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. Locate your storage account and display the account overview. -1. Select **Static website** to display the configuration page for static websites. -1. Select **Enabled** to enable static website hosting for the storage account. -1. In the **Index document name** field, specify a default index page (For example: `index.html`). -1. The default **index page** is displayed when a user navigates to the root of your static website. -1. Select **Save**. The Azure portal now displays your static website endpoint. Make a note of the **Primary endpoint field**. -1. Next, select **Storage Explorer**. -1. Expand the **BLOB CONTAINERS** node, and then select the `$web` container. -1. Choose the **Upload** button to upload files. -1. If you intend for the browser to display the contents of file, make sure that the content type of that file is set to `text/html`. -1. In the pane that appears beside the **account overview page** of your storage account, select **Static Website**. The URL of your site appears in the **Primary endpoint field**. In the next section, you will register this URI. - -##### Update the Azure AD app registration - -1. Navigate back to to the [Azure portal](https://portal.azure.com). -1. In the left-hand navigation pane, select the **Azure Active Directory** service, and then select **App registrations**. -1. In the resulting screen, select `msal-angular-spa`. -1. In the app's registration screen, select **Authentication** in the menu. - - In the **Redirect URIs** section, update the reply URLs to match the site URL of your Azure deployment. For example: - - `https://angularspa1.z22.web.core.windows.net` - -### Update authentication configuration parameters - -1. In your IDE, locate the `SPA` project. Then, open `SPA\src\app\auth-config.ts`. -2. Find the key for **redirect URI** and replace its value with the address of the web app you published, for example, `https://angularspa1.z22.web.core.windows.net`. -3. Find the key for **web API endpoint** and replace its value with the address of the web API you published, for example, `https://dotnetwebapi.azurewebsites.net/api/todolist`. - -## Explore the sample - -1. Open your browser and navigate to your deployed client app's URI, for instance: `https://angularspa1.z22.web.core.windows.net/`. -2. Select the **Sign In** button on the top right corner. -3. Select the **TodoList** button on the navigation bar to access your todo list. - -![Screenshot](./ReadmeFiles/screenshot.png) - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## More information - -- [Azure Blob Storage](https://docs.microsoft.com/azure/storage/blobs/) -- [Azure App Services](https://docs.microsoft.com/azure/app-service/) - -For more information about how OAuth 2.0 protocols work in this scenario and other scenarios, see [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios). - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `azure-ad-b2c` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. \ No newline at end of file diff --git a/4-Deployment/ReadmeFiles/screenshot.png b/4-Deployment/ReadmeFiles/screenshot.png deleted file mode 100644 index 59b90786fc2bde9121adf40c2f881e9d3078a683..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22291 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 sbY+zN<{9 diff --git a/4-Deployment/ReadmeFiles/topology.png b/4-Deployment/ReadmeFiles/topology.png deleted file mode 100644 index d0ef453c2dcf3271f311688527377605d8b03d1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18492 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 P&`btTS3j3^P6 - - - net6.0 - - false - - - - - Always - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI.sln b/5-AccessControl/1-call-api-roles/API/TodoListAPI.sln deleted file mode 100644 index b8b6a92e..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31005.135 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI", "TodoListAPI\TodoListAPI.csproj", "{3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI.Tests", "TodoListAPI.Tests\TodoListAPI.Tests.csproj", "{FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.Build.0 = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {44AB506D-AF3A-4AE5-90E9-CFECC92533A6} - EndGlobalSection -EndGlobal diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Controllers/TodoListController.cs b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Controllers/TodoListController.cs deleted file mode 100644 index 35953179..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Controllers/TodoListController.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System.Linq; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Authorization; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.Identity.Web.Resource; -using TodoListAPI.Models; -using TodoListAPI.Infrastructure; - -namespace TodoListAPI.Controllers -{ - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class TodoListController : ControllerBase - { - private readonly TodoContext _context; - - public TodoListController(TodoContext context) - { - _context = context; - } - - // GET: api/todolist/getAll - [HttpGet] - [Route("getAll")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToTaskAdminRoleRequired)] - public async Task>> GetAll() - { - return await _context.TodoItems.ToListAsync(); - } - - // GET: api/TodoItems - [HttpGet] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToTaskUserRoleRequired)] - public async Task>> GetTodoItems() - { - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _context.TodoItems.Where(x => x.Owner == HttpContext.User.GetObjectId()).ToListAsync(); - } - - // GET: api/TodoItems/5 - [HttpGet("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToTaskUserRoleRequired)] - public async Task> GetTodoItem(int id) - { - return await _context.TodoItems.FirstOrDefaultAsync(t => t.Id == id && t.Owner == HttpContext.User.GetObjectId()); - } - - // PUT: api/TodoItems/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPut("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToTaskUserRoleRequired)] - public async Task PutTodoItem(int id, TodoItem todoItem) - { - if (id != todoItem.Id || !_context.TodoItems.Any(x => x.Id == id)) - { - return NotFound(); - } - - - if (_context.TodoItems.Any(x => x.Id == id && x.Owner == HttpContext.User.GetObjectId())) - { - _context.Entry(todoItem).State = EntityState.Modified; - - try - { - await _context.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!_context.TodoItems.Any(e => e.Id == id)) - { - return NotFound(); - } - else - { - throw; - } - } - } - - return NoContent(); - } - - // POST: api/TodoItems - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToTaskUserRoleRequired)] - public async Task> PostTodoItem(TodoItem todoItem) - { - todoItem.Owner = HttpContext.User.GetObjectId(); - todoItem.Status = false; - - _context.TodoItems.Add(todoItem); - await _context.SaveChangesAsync(); - - return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); - } - - // DELETE: api/TodoItems/5 - [HttpDelete("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToTaskUserRoleRequired)] - public async Task> DeleteTodoItem(int id) - { - TodoItem todoItem = await _context.TodoItems.FindAsync(id); - - if (todoItem == null) - { - return NotFound(); - } - - if (_context.TodoItems.Any(x => x.Id == id && x.Owner == HttpContext.User.GetObjectId())) - { - _context.TodoItems.Remove(todoItem); - await _context.SaveChangesAsync(); - } - - return NoContent(); - } - } -} diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs deleted file mode 100644 index 5994ca4a..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Threading.Tasks; - -namespace TodoListAPI.Infrastructure -{ - /// - /// Wrapper class the contain all the authorization policies available in this application. - /// - public static class AuthorizationPolicies - { - public const string AssignmentToTaskUserRoleRequired = "AssignmentToTaskUserRoleRequired"; - public const string AssignmentToTaskAdminRoleRequired = "AssignmentToTaskAdminRoleRequired"; - } -} diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoContext.cs b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoContext.cs deleted file mode 100644 index a84bbfcc..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoContext.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace TodoListAPI.Models -{ - public class TodoContext : DbContext - { - public TodoContext(DbContextOptions options) - : base(options) - { - - } - - public DbSet TodoItems { get; set; } - } -} diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoItem.cs b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoItem.cs deleted file mode 100644 index b591aae4..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Models/TodoItem.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace TodoListAPI.Models -{ - public class TodoItem - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string Owner { get; set; } - public string Description { get; set; } - public bool Status { get; set; } - } -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Program.cs b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Program.cs deleted file mode 100644 index f1246907..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ - -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace TodoListAPI -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Properties/launchSettings.json b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Properties/launchSettings.json deleted file mode 100644 index c832a603..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44351", - "sslPort": 44351 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "https://localhost:44351/api/todolist", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "TodoListAPI": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44351/", - "sslPort": 44351 - } - } -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Startup.cs b/5-AccessControl/1-call-api-roles/API/TodoListAPI/Startup.cs deleted file mode 100644 index 5e0089db..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/Startup.cs +++ /dev/null @@ -1,127 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using System.IdentityModel.Tokens.Jwt; -using System.Threading.Tasks; -using System.Linq; -using TodoListAPI.Models; -using TodoListAPI.Infrastructure; - -namespace TodoListAPI -{ - public class Startup - { - public IConfiguration Configuration { get; } - - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - // This is required to be instantiated before the OpenIdConnectOptions starts getting configured. - // By default, the claims mapping will map claim names in the old format to accommodate older SAML applications. - // 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' instead of 'roles' - // This flag ensures that the ClaimsIdentity claims collection will be built from the claims in the token - JwtSecurityTokenHandler.DefaultMapInboundClaims = false; - - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - { - options.Events = new JwtBearerEvents(); - - /// - /// Below you can do extended token validation and check for additional claims, such as: - /// - /// - check if the caller's tenant is in the allowed tenants list via the 'tid' claim (for multi-tenant applications) - /// - check if the caller's account is homed or guest via the 'acct' optional claim - /// - check if the caller belongs to right roles or groups via the 'roles' or 'groups' claim, respectively - /// - /// Bear in mind that you can do any of the above checks within the individual routes and/or controllers as well. - /// For more information, visit: https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validate-the-user-has-permission-to-access-this-data - /// - - options.Events.OnTokenValidated = async context => - { - string[] allowedClientApps = { Configuration["AzureAd:ClientId"] }; // In this scenario, client and service share the same clientId and this app's API only allows call from its own SPA - - string clientappId = context?.Principal?.Claims - .FirstOrDefault(x => x.Type == "azp" || x.Type == "appid")?.Value; - - if (!allowedClientApps.Contains(clientappId)) - { - throw new System.Exception("This client is not authorized"); - } - - await Task.CompletedTask; - }; - }, options => { Configuration.Bind("AzureAd", options); }); - - // The following lines code instruct the asp.net core middleware to use the data in the "roles" claim in the Authorize attribute and User.IsInrole() - // See https://docs.microsoft.com/aspnet/core/security/authorization/roles for more info. - services.Configure(JwtBearerDefaults.AuthenticationScheme, options => - { - // The claim in the Jwt token where App roles are available. - options.TokenValidationParameters.RoleClaimType = "roles"; - }); - - // Adding authorization policies that enforce authorization using Azure AD roles. - services.AddAuthorization(options => - { - options.AddPolicy(AuthorizationPolicies.AssignmentToTaskUserRoleRequired, policy => policy.RequireRole(Configuration["AzureAd:Roles:TaskUser"], Configuration["AzureAd:Roles:TaskAdmin"])); - options.AddPolicy(AuthorizationPolicies.AssignmentToTaskAdminRoleRequired, policy => policy.RequireRole(Configuration["AzureAd:Roles:TaskAdmin"])); - }); - - services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); - - services.AddControllers(); - - // Allowing CORS for all domains and HTTP methods for the purpose of the sample - // In production, modify this with the actual domains and HTTP methods you want to allow - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - // Since IdentityModel version 5.2.1 (or since Microsoft.AspNetCore.Authentication.JwtBearer version 2.2.0), - // Personal Identifiable Information is not written to the logs by default, to be compliant with GDPR. - // For debugging/development purposes, one can enable additional detail in exceptions by setting IdentityModelEventSource.ShowPII to true. - - // Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true; - - app.UseDeveloperExceptionPage(); - } - else - { - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } - - app.UseCors("default"); - app.UseHttpsRedirection(); - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/TodoListAPI.csproj b/5-AccessControl/1-call-api-roles/API/TodoListAPI/TodoListAPI.csproj deleted file mode 100644 index 4eab0792..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/TodoListAPI.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net6.0 - aspnet-TodoListAPI-BA938C29-8BAB-4664-A688-8FD54049C1C3 - 1 - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.Development.json b/5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.Development.json deleted file mode 100644 index 8983e0fc..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } -} diff --git a/5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.json b/5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.json deleted file mode 100644 index e92484d0..00000000 --- a/5-AccessControl/1-call-api-roles/API/TodoListAPI/appsettings.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "AzureAd": { - "Instance": "https://login.microsoftonline.com/", - "TenantId": "Enter the ID of your Azure AD tenant copied from the Azure portal", - "ClientId": "Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal", - "Scopes": ["access_via_approle_assignments"], - "Roles": { - "TaskAdmin": "TaskAdmin", - "TaskUser": "TaskUser" - } - }, - "https_port": 44351, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Identity": "Information" - } - }, - "AllowedHosts": "*" -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/AppCreationScripts/AppCreationScripts.md b/5-AccessControl/1-call-api-roles/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/5-AccessControl/1-call-api-roles/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/5-AccessControl/1-call-api-roles/AppCreationScripts/Cleanup.ps1 b/5-AccessControl/1-call-api-roles/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index cd1a8cf6..00000000 --- a/5-AccessControl/1-call-api-roles/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,152 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'client' (msal-angular-app) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-angular-app'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-angular-app'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-angular-app) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-angular-app'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-angular-app.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-angular-app'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-angular-app'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/5-AccessControl/1-call-api-roles/AppCreationScripts/CleanupUsersAndAssignRoles.ps1 b/5-AccessControl/1-call-api-roles/AppCreationScripts/CleanupUsersAndAssignRoles.ps1 deleted file mode 100644 index 015f53a5..00000000 --- a/5-AccessControl/1-call-api-roles/AppCreationScripts/CleanupUsersAndAssignRoles.ps1 +++ /dev/null @@ -1,120 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -Function RemoveUser([string]$userPrincipal) -{ - Remove-MgUser -UserId $userPrincipal -} - -Function CleanupRolesUsersAndRoleAssignments -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - Write-Host "Connecting to Microsoft Graph" - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "Organization.Read.All Application.Read.All AppRoleAssignment.ReadWrite.All User.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "Organization.Read.All Application.Read.All AppRoleAssignment.ReadWrite.All User.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - #$split = $currentUserPrincipalName.Split("@") - $tenantName = $verifiedDomainName - Write-Host "get the AAD application (msal-angular-app)" - $app = Get-MgApplication -Filter "DisplayName eq 'msal-angular-app'" - if ($app) - { - $appName = $app.DisplayName - $userEmail = $appName +"-" + "TaskAdmin" + "@" + $tenantName - RemoveUser -userPrincipal $userEmail - Write-Host "user name ($userEmail)" - $userEmail = $appName +"-" + "TaskUser" + "@" + $tenantName - RemoveUser -userPrincipal $userEmail - Write-Host "user name ($userEmail)" - } - else - { - Write-Host "Couldn't find application (msal-angular-app)" -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -try -{ - # Run interactively (will ask you for the tenant ID) - CleanupRolesUsersAndRoleAssignments -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to cleanup app roles and assignments. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/AppCreationScripts/Configure.ps1 b/5-AccessControl/1-call-api-roles/AppCreationScripts/Configure.ps1 deleted file mode 100644 index 9b8811d9..00000000 --- a/5-AccessControl/1-call-api-roles/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,452 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -# Adds the requiredAccesses (expressed as a pipe separated string) to the requiredAccess structure -# The exposed permissions are in the $exposedPermissions collection, and the type of permission (Scope | Role) is -# described in $permissionType -Function AddResourcePermission($requiredAccess, ` - $exposedPermissions, [string]$requiredAccesses, [string]$permissionType) -{ - foreach($permission in $requiredAccesses.Trim().Split("|")) - { - foreach($exposedPermission in $exposedPermissions) - { - if ($exposedPermission.Value -eq $permission) - { - $resourceAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess - $resourceAccess.Type = $permissionType # Scope = Delegated permissions | Role = Application permissions - $resourceAccess.Id = $exposedPermission.Id # Read directory data - $requiredAccess.ResourceAccess += $resourceAccess - } - } - } -} - -# -# Example: GetRequiredPermissions "Microsoft Graph" "Graph.Read|User.Read" -# See also: http://stackoverflow.com/questions/42164581/how-to-configure-a-new-azure-ad-application-through-powershell -Function GetRequiredPermissions([string] $applicationDisplayName, [string] $requiredDelegatedPermissions, [string]$requiredApplicationPermissions, $servicePrincipal) -{ - # If we are passed the service principal we use it directly, otherwise we find it from the display name (which might not be unique) - if ($servicePrincipal) - { - $sp = $servicePrincipal - } - else - { - $sp = Get-MgServicePrincipal -Filter "DisplayName eq '$applicationDisplayName'" - } - $appid = $sp.AppId - $requiredAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess - $requiredAccess.ResourceAppId = $appid - $requiredAccess.ResourceAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess] - - # $sp.Oauth2Permissions | Select Id,AdminConsentDisplayName,Value: To see the list of all the Delegated permissions for the application: - if ($requiredDelegatedPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.Oauth2PermissionScopes -requiredAccesses $requiredDelegatedPermissions -permissionType "Scope" - } - - # $sp.AppRoles | Select Id,AdminConsentDisplayName,Value: To see the list of all the Application permissions for the application - if ($requiredApplicationPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.AppRoles -requiredAccesses $requiredApplicationPermissions -permissionType "Role" - } - return $requiredAccess -} - - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function creates a new Azure AD scope (OAuth2Permission) with default and provided values -#> -Function CreateScope( [string] $value, [string] $userConsentDisplayName, [string] $userConsentDescription, [string] $adminConsentDisplayName, [string] $adminConsentDescription, [string] $consentType) -{ - $scope = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope - $scope.Id = New-Guid - $scope.Value = $value - $scope.UserConsentDisplayName = $userConsentDisplayName - $scope.UserConsentDescription = $userConsentDescription - $scope.AdminConsentDisplayName = $adminConsentDisplayName - $scope.AdminConsentDescription = $adminConsentDescription - $scope.IsEnabled = $true - $scope.Type = $consentType - return $scope -} - -<#.Description - This function creates a new Azure AD AppRole with default and provided values -#> -Function CreateAppRole([string] $types, [string] $name, [string] $description) -{ - $appRole = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole - $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string] - $typesArr = $types.Split(',') - foreach($type in $typesArr) - { - $appRole.AllowedMemberTypes += $type; - } - $appRole.DisplayName = $name - $appRole.Id = New-Guid - $appRole.IsEnabled = $true - $appRole.Description = $description - $appRole.Value = $name; - return $appRole -} - -<#.Description - This function takes a string as input and creates an instance of an Optional claim object -#> -Function CreateOptionalClaim([string] $name) -{ - <#.Description - This function creates a new Azure AD optional claims with default and provided values - #> - - $appClaim = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim - $appClaim.AdditionalProperties = New-Object System.Collections.Generic.List[string] - $appClaim.Source = $null - $appClaim.Essential = $false - $appClaim.Name = $name - return $appClaim -} - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the client AAD application - Write-Host "Creating the AAD application (msal-angular-app)" - # create the application - $clientAadApplication = New-MgApplication -DisplayName "msal-angular-app" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200/", "http://localhost:4200/auth"; ` - } ` - -Api ` - @{ ` - RequestedAccessTokenVersion = 2 ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - $currentAppId = $clientAadApplication.AppId - $currentAppObjectId = $clientAadApplication.Id - - $clientIdentifierUri = 'api://'+$currentAppId - Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @($clientIdentifierUri) - - # create the service principal of the newly created application - $clientServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($clientServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "acct" - $optionalClaims.IdToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - - # Add application Roles for users and groups - $appRoles = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole] - $newRole = CreateAppRole -types "User" -name "TaskAdmin" -description "Admins can read any user's todo list" - $appRoles.Add($newRole) - $newRole = CreateAppRole -types "User" -name "TaskUser" -description "Users can read and modify their todo lists" - $appRoles.Add($newRole) - Update-MgApplication -ApplicationId $currentAppObjectId -AppRoles $appRoles - - # rename the user_impersonation scope if it exists to match the readme steps or add a new scope - - # delete default scope i.e. User_impersonation - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = $clientAadApplication.Api.Oauth2PermissionScopes | Where-Object { $_.Value -eq "User_impersonation" } - - if($scope -ne $null) - { - # disable the scope - $scope.IsEnabled = $false - $scopes.Add($scope) - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - - # clear the scope - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @()} - } - - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = CreateScope -value access_via_approle_assignments ` - -userConsentDisplayName "Access 'msal-angular-app' as the signed-in user assigned to App role" ` - -userConsentDescription "Allow the app to access the 'msal-angular-app' on your behalf after assignment to one or more App roles" ` - -adminConsentDisplayName "Access 'msal-angular-app' as the signed-in user assigned to App role" ` - -adminConsentDescription "Allow the app to access the 'msal-angular-app' as a signed-in user assigned to one or more App roles" ` - -consentType "User" ` - - - $scopes.Add($scope) - - # add/update scopes - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - Write-Host "Done creating the client application (msal-angular-app)" - - # URL of the AAD application in the Azure portal - # Future? $clientPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $clientPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "client$currentAppIdmsal-angular-app" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'client' to 'client') - Write-Host "Getting access from 'client' to 'client'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "msal-angular-app"` - -requiredDelegatedPermissions "access_via_approle_assignments" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'client' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-angular-app' at `n $clientPortalUrl" -ForegroundColor Green - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\API\TodoListAPI\appsettings.json" - $configFile = $(Resolve-Path ($pwd.Path + "\..\API\TodoListAPI\appsettings.json")) - - $dictionary = @{ "Enter the ID of your Azure AD tenant copied from the Azure portal" = $tenantId;"Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal" = $clientAadApplication.AppId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $clientAadApplication.AppId;"Enter_the_Tenant_Info_Here" = $tenantId;"Enter_the_Web_Api_Application_Id_Here" = $clientAadApplication.AppId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - Write-Host "IMPORTANT: Please follow the instructions below to complete a few manual step(s) in the Azure portal": - Write-Host "- For client" - Write-Host " - Navigate to $clientPortalUrl" - Write-Host " - To receive the 'roles' claim with the name of the app roles this user is assigned to, make sure that the user accounts you plan to sign-in to this app is assigned to the app roles of this SPA app. The guide, https://aka.ms/userassignmentrequired provides step by step instructions." -ForegroundColor Red - Write-Host " - Or you can run the .\CreateUsersAndAssignRoles.ps1 command to automatically create a number of users, and assign these users to the app roles of this app." -ForegroundColor Red - Write-Host " - Application 'client' publishes delegated permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host " - Application 'client' publishes app roles. Do remember to navigate to the app registration in the app portal and assign users to these app roles" -ForegroundColor Red - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/AppCreationScripts/CreateUsersAndAssignRoles.ps1 b/5-AccessControl/1-call-api-roles/AppCreationScripts/CreateUsersAndAssignRoles.ps1 deleted file mode 100644 index ebcac352..00000000 --- a/5-AccessControl/1-call-api-roles/AppCreationScripts/CreateUsersAndAssignRoles.ps1 +++ /dev/null @@ -1,198 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -Function Get-RandomPassword { - param ( - [Parameter(Mandatory)] - [ValidateRange(4,[int]::MaxValue)] - [int] $length, - [int] $upper = 1, - [int] $lower = 1, - [int] $numeric = 1, - [int] $special = 1 - ) - if($upper + $lower + $numeric + $special -gt $length) { - throw "number of upper/lower/numeric/special char must be lower or equal to length" - } - $uCharSet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" - $lCharSet = "abcdefghijklmnopqrstuvwxyz" - $nCharSet = "0123456789" - $sCharSet = "/*-+,!?=()@;:._" - $charSet = "" - if($upper -gt 0) { $charSet += $uCharSet } - if($lower -gt 0) { $charSet += $lCharSet } - if($numeric -gt 0) { $charSet += $nCharSet } - if($special -gt 0) { $charSet += $sCharSet } - - $charSet = $charSet.ToCharArray() - $rng = New-Object System.Security.Cryptography.RNGCryptoServiceProvider - $bytes = New-Object byte[]($length) - $rng.GetBytes($bytes) - - $result = New-Object char[]($length) - for ($i = 0 ; $i -lt $length ; $i++) { - $result[$i] = $charSet[$bytes[$i] % $charSet.Length] - } - $password = (-join $result) - $valid = $true - if($upper -gt ($password.ToCharArray() | Where-Object {$_ -cin $uCharSet.ToCharArray() }).Count) { $valid = $false } - if($lower -gt ($password.ToCharArray() | Where-Object {$_ -cin $lCharSet.ToCharArray() }).Count) { $valid = $false } - if($numeric -gt ($password.ToCharArray() | Where-Object {$_ -cin $nCharSet.ToCharArray() }).Count) { $valid = $false } - if($special -gt ($password.ToCharArray() | Where-Object {$_ -cin $sCharSet.ToCharArray() }).Count) { $valid = $false } - - if(!$valid) { - $password = Get-RandomPassword $length $upper $lower $numeric $special - } - return $password -} - -Function CreateUser([string] $appName, $role, [string] $tenantName) -{ - $displayName = $appName +"-" + $role.Value - $userEmail = $displayName + "@" + $tenantName - $nickName = $role.Value - $password = Get-RandomPassword 8 - - $PasswordProfile = @{ - Password = $password - } - - $user = Get-MgUser -Filter "UserPrincipalName eq '$($userEmail)'" - - if(!$user) - { - $user = New-MgUser -DisplayName $displayName -PasswordProfile $PasswordProfile -AccountEnabled -MailNickName $nickName -UserPrincipalName $userEmail - Write-Host "Email: is "($user.UserPrincipalName)" and password is $password" - } - else - { - Write-Host "Email: "($user.UserPrincipalName)" already exists" - } - - return $user -} - - -Function CreateRolesUsersAndRoleAssignments -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - Write-Host "Connecting to Microsoft Graph" - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "Organization.Read.All Application.Read.All AppRoleAssignment.ReadWrite.All User.ReadWrite.All" -Environment $azureEnvironmentName - $tenantId = (Get-MgContext).TenantId - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "Organization.Read.All Application.Read.All AppRoleAssignment.ReadWrite.All User.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - #$split = $currentUserPrincipalName.Split("@") - $tenantName = $verifiedDomainName - - Write-Host "get the AAD application (msal-angular-app)" - $app = Get-MgApplication -Filter "DisplayName eq 'msal-angular-app'" - - if ($app) - { - $servicePrincipal = Get-MgServicePrincipal -Filter "AppId eq '$($app.AppId)'" - $appName = $app.DisplayName - - $TaskAdmin = $servicePrincipal.AppRoles | Where-Object { $_.DisplayName -eq "TaskAdmin" } - # Creating a user - $newUser = CreateUser -appName $appName -role $TaskAdmin -tenantName $tenantName - $assignRole = New-MgUserAppRoleAssignment -Userid $newUser.Id -PrincipalId $newUser.Id -ResourceId $servicePrincipal.Id -AppRoleID $TaskAdmin.Id - - $TaskUser = $servicePrincipal.AppRoles | Where-Object { $_.DisplayName -eq "TaskUser" } - # Creating a user - $newUser = CreateUser -appName $appName -role $TaskUser -tenantName $tenantName - $assignRole = New-MgUserAppRoleAssignment -Userid $newUser.Id -PrincipalId $newUser.Id -ResourceId $servicePrincipal.Id -AppRoleID $TaskUser.Id - - } - else - { - Write-Host "Couldn't find application (msal-angular-app)" -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -try -{ - # Run interactively (will ask you for the tenant ID) - CreateRolesUsersAndRoleAssignments -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to configure app roles and assignments. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/AppCreationScripts/sample.json b/5-AccessControl/1-call-api-roles/AppCreationScripts/sample.json deleted file mode 100644 index b3126958..00000000 --- a/5-AccessControl/1-call-api-roles/AppCreationScripts/sample.json +++ /dev/null @@ -1,101 +0,0 @@ -{ - "Sample": { - "Title": "Angular single-page application calling a protected web API and using App Roles to implement Role-Based Access Control", - "Level": 300, - "Client": "Angular SPA", - "Service": "ASP.NET Core Web Api", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Platform": "JavaScript", - "Languages": [ - "typescript", - "csharp", - "javascript" - ], - "Description": "An Angular single-page application calling a protected web API using App Roles to implement Role-Based Access Control", - "products": [ - "azure-active-directory", - "msal-js", - "msal-angular", - "microsoft-identity-web" - ] - }, - "AADApps": [ - { - "Id": "client", - "Name": "msal-angular-app", - "Kind": "SinglePageApplication", - "Audience": "AzureADMyOrg", - "HomePage": "http://localhost:4200/", - "ReplyUrls": "http://localhost:4200/, http://localhost:4200/auth", - "SDK": "MicrosoftIdentityWeb", - "Scopes": ["access_via_approle_assignments"], - "SampleSubPath": "5-AccessControl\\1-call-api-roles\\SPA", - "RequiredResourcesAccess": [ - { - "Resource": "client", - "DelegatedPermissions": ["access_via_approle_assignments"] - } - ], - "AppRoles": [ - { - "AllowedMemberTypes": ["User"], - "Name": "TaskAdmin", - "Description": "Admins can read any user's todo list" - }, - { - "AllowedMemberTypes": ["User"], - "Name": "TaskUser", - "Description": "Users can read and modify their todo lists" - } - ], - "OptionalClaims": { - "IdTokenClaims": ["acct"] - }, - "ManualSteps": [ - { - "Comment": "To receive the 'roles' claim with the name of the app roles this user is assigned to, make sure that the user accounts you plan to sign-in to this app is assigned to the app roles of this SPA app. The guide, https://aka.ms/userassignmentrequired provides step by step instructions." - }, - { - "Comment": "Or you can run the .\\CreateUsersAndAssignRoles.ps1 command to automatically create a number of users, and assign these users to the app roles of this app." - } - ] - } - ], - "CodeConfiguration": [ - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\API\\TodoListAPI\\appsettings.json", - "Mappings": [ - { - "key": "Enter the ID of your Azure AD tenant copied from the Azure portal", - "value": "$tenantId" - }, - { - "key": "Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal", - "value": "client.AppId" - } - ] - }, - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": "client.AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantId" - }, - { - "key": "Enter_the_Web_Api_Application_Id_Here", - "value": "client.AppId" - } - ] - } - ] -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/README.md b/5-AccessControl/1-call-api-roles/README.md deleted file mode 100644 index a907a407..00000000 --- a/5-AccessControl/1-call-api-roles/README.md +++ /dev/null @@ -1,477 +0,0 @@ ---- -page_type: sample -languages: - - typescript - - csharp - - javascript -products: - - azure-active-directory - - msal-js - - msal-angular - - microsoft-identity-web - - microsoft-authentication-library - - entra -extensions: - endpoint: AAD v2.0 - services: ms-identity - client: Angular SPA - service: ASP.NET Core Web Api - level: 300 - platform: JavaScript -urlFragment: spa-msal-angular-app-roles -description: This sample demonstrates a cross-platform application suite involving an Angular single-page application (TodoListSPA) calling an ASP.NET Core web API (TodoListAPI) secured with the Microsoft identity platform. In doing so, it implements Role-based Access Control (RBAC) by using Azure AD App Roles. ---- - -# Angular single-page application calling a protected web API and using App Roles to implement Role-Based Access Control - -* [Overview](#overview) -* [Scenario](#scenario) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Next Steps](#next-steps) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates a cross-platform application suite involving an Angular single-page application (*TodoListSPA*) calling an ASP.NET Core web API (*TodoListAPI*) secured with the Microsoft identity platform. In doing so, it implements **Role-based Access Control** (RBAC) by using Azure AD **App Roles**. - -Role based access control in Azure AD can be done with **Delegated** and **App** permissions and **Security Groups** as well. we will cover RBAC using Security Groups in the [next tutorial](../2-call-api-groups/README.md). **Delegated** and **App** permissions, **Security Groups** and **App Roles** in Azure AD are by no means mutually exclusive - they can be used in tandem to provide even finer grained access control. - -In the sample, a **dashboard** component allows signed-in users to see the tasks assigned to users and is only accessible by users under an **app role** named **TaskAdmin**. - -> :information_source: See the community call: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -> :information_source: See the community call: [Implement authorization in your applications with the Microsoft identity platform](https://www.youtube.com/watch?v=LRoc-na27l0) - -## Scenario - -- The **TodoListSPA** uses [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) to authenticate a user with the Microsoft identity platform. -- The app then obtains an [access token](https://docs.microsoft.com/azure/active-directory/develop/access-tokens) from Azure Active Directory (Azure AD) on behalf of the authenticated user for the **TodoListAPI**. -- **TodoListAPI** uses [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) to protect its endpoint and accept only authorized calls. - -![Topology](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-------------------------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `SPA/src/app/role-guard.service.ts` | This service protects other components that require user to be in a role. | -| `API/appsettings.json` | Authentication parameters for API project reside here. | -| `API/Startup.cs` | Microsoft.Identity.Web is initialized here. | - -## Prerequisites - -* Either [Visual Studio](https://visualstudio.microsoft.com/downloads/) or [Visual Studio Code](https://code.visualstudio.com/download) and [.NET Core SDK](https://www.microsoft.com/net/learn/get-started) -* An **Azure AD** tenant. For more information, see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/test-setup-environment#get-a-test-tenant) -* At least **two** user accounts in your Azure AD tenant. This sample will not work with a **personal Microsoft account**. If you're signed in to the [Azure portal](https://portal.azure.com) with a personal Microsoft account and have not created a user account in your directory before, you will need to create one before proceeding. - -## Setup the sample - -Using a command line interface such as VS Code integrated terminal, follow the steps below: - -### Step 1. Install .NET Core API dependencies - -```console - git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository .zip file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 5-AccessControl/1-call-api-roles/API - dotnet restore -``` - -### Step 3. Trust development certificates - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 4. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -### Step 5: Register the sample application(s) in your tenant - -> :information_source: While there are multiple projects in this sample, we'd register just one app with Azure AD and use the registered app's *client id* in both apps. This reuse of app ids (client ids) is used when the apps themselves are just components of one larger app topology. - -There is one project in this sample. To register it, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Choose the Azure AD tenant where you want to create your applications - -To manually register the apps, as a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -#### Register the app (msal-angular-app) - -> :information_source: Below, we are using a single app registration for both SPA and web API projects. - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-app`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200/` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`api://{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, use `access_via_approle_assignments`. - 1. Select **Admins and users** options for **Who can consent?**. - 1. For **Admin consent display name** type in *Access 'msal-angular-app' as the signed-in user assigned to App role*. - 1. For **Admin consent description** type in *Allow the app to access the 'msal-angular-app' as a signed-in user assigned to one or more App roles*. - 1. For **User consent display name** type in *Access 'msal-angular-app' on your behalf after App role assignment*. - 1. For **User consent description** type in *Allow the app to access the 'msal-angular-app' on your behalf after assignment to one or more App roles*. - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -> :information_source: Follow [the principle of least privilege](https://docs.microsoft.com/azure/active-directory/develop/secure-least-privileged-access) whenever you are publishing permissions for a web API. - -##### Grant Delegated Permissions to msal-angular-app - -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-angular-app`. - 1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is requested by apps when signing-in users. - 1. In the **Delegated permissions** section, select **access_via_approle_assignments** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Publish Application Roles for users and groups - -1. Still on the same app registration, select the **App roles** blade to the left. -1. Select **Create app role**: - 1. For **Display name**, enter a suitable name, for instance **TaskAdmin**. - 1. For **Allowed member types**, choose **User**. - 1. For **Value**, enter **TaskAdmin**. - 1. For **Description**, enter **Admins can read any user's todo list**. - > Repeat the steps above for another role named **TaskUser** - 1. Select **Apply** to save your changes. - -To add users to this app role, follow the guidelines here: [Assign users and groups to roles](https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps#assign-users-and-groups-to-roles). - -> :bulb: **Important security tip** -> -> When you set **User assignment required?** to **Yes**, Azure AD will check that only users assigned to your application in the **Users and groups** blade are able to sign-in to your app. You can assign users directly or by assigning security groups they belong to. - -For more information, see: [How to: Add app roles in your application and receive them in the token](https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps) - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **ID**. - 1. Select the optional claim **acct**. - > Provides user's account status in tenant. If the user is a **member** of the tenant, the value is 0. If they're a **guest**, the value is 1. - 1. Select **Add** to save your changes - -##### Configure the client app (msal-angular-app) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Enter the ID of your Azure AD tenant copied from the Azure portal` and replace the existing value with your Azure AD tenant/directory ID. -1. Find the key `Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal` and replace the existing value with the application ID (clientId) of `msal-angular-app` app copied from the Azure portal. - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the string `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-app` app copied from the Azure portal. -1. Find the string `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant ID. -1. Find the string `Enter_the_Web_Api_Application_Id_Here` and replace the existing value with the application ID (clientId) of the web API -in this scenario, this is the same application ID with `msal-angular-app`. - -### Step 6: Running the sample - -Using a command line interface such as **VS Code** integrated terminal, locate the application directory. Then: - -```console - cd SPA - npm start -``` - -In a separate console window, execute the following commands: - -```console - cd API\TodoListAPI - dotnet run -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -2. Sign-in using the button on top-right: - -![login](./ReadmeFiles/ch1_login.png) - -1. Click on the **Get My Tasks** button to access your (the signed-in user's) todo list: - -![todolist](./ReadmeFiles/ch1_todolist.png) - -1. If the signed-in user has the right privileges (i.e. in the right "role"), click on the **See All Tasks** button to access every users' todo list: - -![dashboard](./ReadmeFiles/ch1_dashboard.png) - -1. If the signed-in user does not have the right privileges, clicking on the **See All Tasks** will give an error: - -![error](./ReadmeFiles/ch1_error.png) - -### We'd love your feedback! - -> :information_source: Consider taking a moment to share [your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu) - -## Troubleshooting - -
    - Expand for troubleshooting info - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `dotnet` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -
    - -## About the code - -### Angular RoleGuard and protected routes for role-based access control - -The client application Angular SPA has a [role.guard.ts](./SPA/src/app/role.guard.ts) component that checks whether a user belongs to the required role(s) to access a protected route (see also: [base.guard.ts](./SPA/src/app/base.guard.ts)). It does this by checking `roles` claim the ID token of the signed-in user: - -```typescript -@Injectable() -export class RoleGuard extends BaseGuard { - - constructor( - @Inject(MSAL_GUARD_CONFIG) protected override msalGuardConfig: MsalGuardConfiguration, - protected override msalBroadcastService: MsalBroadcastService, - protected override authService: MsalService, - protected override location: Location, - protected override router: Router - ) { - super(msalGuardConfig, msalBroadcastService, authService, location, router); - } - - override activateHelper(state?: RouterStateSnapshot, route?: ActivatedRouteSnapshot): Observable { - let result = super.activateHelper(state, route); - - const expectedRoles: string[] = route ? route.data['expectedRoles'] : []; - - return result.pipe( - concatMap(() => { - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - activeAccount = this.authService.instance.getAllAccounts()[0]; - } - - if (!activeAccount?.idTokenClaims?.roles) { - window.alert('Token does not have roles claim. Please ensure that your account is assigned to an app role and then sign-out and sign-in again.'); - return of(false); - } - - const hasRequiredRole = expectedRoles.some((role: string) => activeAccount?.idTokenClaims?.roles?.includes(role)); - - if (!hasRequiredRole) { - window.alert('You do not have access as the expected role is not found. Please ensure that your account is assigned to an app role and then sign-out and sign-in again.'); - } - - return of(hasRequiredRole); - }) - ); - } -} -``` - -We then enable **RoleGuard** in [app-routing.module.ts](./SPA/src/app/app-routing.module.ts) as follows: - -```typescript -const routes: Routes = [ - { - path: 'todo-edit/:id', - component: TodoEditComponent, - canActivate: [ - RoleGuard - ], - data: { - expectedRoles: [roles.TaskUser, roles.TaskAdmin] - } - }, - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - RoleGuard - ], - data: { - expectedRoles: [roles.TaskUser, roles.TaskAdmin] - } - }, - { - path: 'dashboard', - component: DashboardComponent, - canActivate: [ - RoleGuard, - ], - data: { - expectedRoles: [roles.TaskAdmin] - } - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; -``` - -However, it is important to be aware of that no content on a browser application is **truly** secure. That is, our **RoleGuard** component is primarily responsible for rendering the correct pages and other UI elements for a user in a particular role; in the example above, we allow only users in the `TaskAdmin` role to see the `Dashboard` component. In order to **truly** protect data and expose certain REST operations to a selected set of users, we enable **RBAC** on the back-end/web API as well in this sample. This is shown next. - -### Policy based authorization for .NET Core web API - -As mentioned before, in order to **truly** implement **RBAC** and secure data, this sample allows only authorized calls to our web API. We do this by defining access policies and decorating our HTTP methods with them. To do so, we first add `roles` claim as a validation parameter in [Startup.cs](./API/TodoListAPI/Startup.cs), and then we create authorization policies that depends on this claim: - -```csharp -// See https://docs.microsoft.com/aspnet/core/security/authorization/roles for more info. -services.Configure(JwtBearerDefaults.AuthenticationScheme, options => -{ - // The claim in the Jwt token where App roles are available. - options.TokenValidationParameters.RoleClaimType = "roles"; -}); - -// Adding authorization policies that enforce authorization using Azure AD roles. -services.AddAuthorization(options => -{ - options.AddPolicy(AuthorizationPolicies.AssignmentToTaskUserRoleRequired, policy => policy.RequireRole(Configuration["AzureAd:Roles:TaskUser"], Configuration["AzureAd:Roles:TaskAdmin"])); - - options.AddPolicy(AuthorizationPolicies.AssignmentToTaskAdminRoleRequired, policy => policy.RequireRole(Configuration["AzureAd:Roles:TaskAdmin"])); -}); -``` - -We defined these roles in [appsettings.json](./API/TodoListAPI/appsettings.json) as follows: - -```json -"Roles": { - "TaskAdmin": "TaskAdmin", - "TaskUser": "TaskUser" -} -``` - -Finally, in [TodoListController.cs](./API/TodoListAPI/Controllers/TodoListController.cs), we decorate our routes with the appropriate policy: - -```csharp -// GET: api/todolist/getAll -[HttpGet] -[Route("getAll")] -[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] -[Authorize(Policy = AuthorizationPolicies.AssignmentToTaskAdminRoleRequired)] -public async Task>> GetAll() -{ - return await _context.TodoItems.ToListAsync(); -} - -// GET: api/TodoItems -[HttpGet] -[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] -[Authorize(Policy = AuthorizationPolicies.AssignmentToTaskUserRoleRequired)] -public async Task>> GetTodoItems() -{ - return await _context.TodoItems.Where(x => x.Owner == HttpContext.User.GetObjectId()).ToListAsync(); -} -``` - -## Next Steps - -Learn how to [Protect and call an API using Security Groups](../../5-AccessControl/2-call-api-groups/README.md). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -* [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -* [Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -* [Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -* [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -* [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -* [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals) -* [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -* [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) -* [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) diff --git a/5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_dashboard.png b/5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_dashboard.png deleted file mode 100644 index 2fce6cd2f7468dd1e8f678a83f092a88ac4d6e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18926 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 diff --git a/5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_error.png b/5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_error.png deleted file mode 100644 index 0844ab8b686a8ed9923bab85441d212ad27ae517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33872 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�!hzu!0N7Pkf2ZW|pH8z7+c7En=&2q*}V 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 T1jfK52bo{Dx`w@a@7aF?6%iqB diff --git a/5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_login.png b/5-AccessControl/1-call-api-roles/ReadmeFiles/ch1_login.png deleted file mode 100644 index 4c18dbce8a4318e3fc9a3e550f9bc8bfba2f13db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30069 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 diff --git a/5-AccessControl/1-call-api-roles/ReadmeFiles/topology.png b/5-AccessControl/1-call-api-roles/ReadmeFiles/topology.png deleted file mode 100644 index 6abec2db4ba34f11a0ba683c6f57783a162a1a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26517 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 C6uvhA diff --git a/5-AccessControl/1-call-api-roles/SPA/angular.json b/5-AccessControl/1-call-api-roles/SPA/angular.json deleted file mode 100644 index 8d2fb7c3..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/angular.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "SPA": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/spa", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "SPA:build:production" - }, - "development": { - "browserTarget": "SPA:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "SPA:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - } - } - } - } - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/karma.conf.js b/5-AccessControl/1-call-api-roles/SPA/karma.conf.js deleted file mode 100644 index af0f20e5..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/karma.conf.js +++ /dev/null @@ -1,50 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/spa'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/5-AccessControl/1-call-api-roles/SPA/package-lock.json b/5-AccessControl/1-call-api-roles/SPA/package-lock.json deleted file mode 100644 index 3befc75f..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/package-lock.json +++ /dev/null @@ -1,9477 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/architect": { - "version": "0.1400.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.5.tgz", - "integrity": "sha512-A5sRLPK3qGJAehYtX4ayUDwxQZ02yvsrxcpf3sv492IxbF7ymdMhcxIp+0UG6wIsLvpQkpW9ekJUdKmFB6GVAw==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "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.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.1", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild": "0.14.49", - "esbuild-wasm": "0.14.49", - "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.0", - "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.14", - "postcss-import": "14.1.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.53.0", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.58.1", - "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.73.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.0", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", - "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" - } - }, - "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@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" - } - }, - "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 - }, - "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "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" - } - }, - "esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", - "dev": true, - "optional": true, - "requires": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" - } - }, - "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" - } - }, - "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 - }, - "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", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.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 - } - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1401.0", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.0", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", - "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" - } - }, - "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 - }, - "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" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "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 - } - } - }, - "@angular-devkit/core": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.5.tgz", - "integrity": "sha512-/CUGi6QLwh79FvsOY7M+1LQL3asZsbQW/WBd5f1iu5y7TLNqCwo+wOb0ZXLDNPw45vYBxFajtt3ob3U7qx3jNg==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/schematics": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.5.tgz", - "integrity": "sha512-sufxITBkn2MvgEREt9JQ3QCKHS+sue1WsVzLE+TWqG5MC/RPk0f9tQ5VoHk6ZTzDKUvOtSoc7G+n0RscQsyp5g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "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/animations": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.4.tgz", - "integrity": "sha512-+Qe+wLA0DOHlOdFRQSEJoenhFm5zcKwkDItqAFT5NVYOT04yxXq8NFRIHSbqn468qR70EkX514lKi6pr6nxGYQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cdk": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.4.tgz", - "integrity": "sha512-zPM4VZadoKzTF9TZ7Yx5gJ7GtQpt62f8ofdH/BF2atG+TaNzOEFqtzogP4WuJDFAxJXOPMePobhth4YjUk0Wbw==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - } - } - }, - "@angular/cli": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.5.tgz", - "integrity": "sha512-/Iqvy3vRqakHdxNi+Qo18xXQr8E1cCaKzMBnxR2wHNdlu1lyaw0p20E8LumoueXCrs+/SK6aKDvN6ek0R/q8Jg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1400.5", - "@angular-devkit/core": "14.0.5", - "@angular-devkit/schematics": "14.0.5", - "@schematics/angular": "14.0.5", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.1" - } - }, - "@angular/common": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.4.tgz", - "integrity": "sha512-CvlFa2lCxen0LB3N45IzZDdMIqpcasXfVUhiAkLxZgT+kSTunc/rg8hMoLHVfmFpkQKCQmPVyuzNXnSwIFhYkQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.4.tgz", - "integrity": "sha512-WdRpZFTX2vt71sSfQ89C1K5l2zhYtn8ON+ZlAVxyZ5uT0nA/Z/vuMLfNZB1WmcGVDOc7JmQduSiSaI0hhQqXqw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.4.tgz", - "integrity": "sha512-j3T0dOwNov6rKcaxLMSlPLRvrBT6MyBTum18x6XvZRqb75RUAJ/yV+PXgtA//XZ2hjuy87+CvZy3tBKktvY7bA==", - "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" - } - }, - "@angular/core": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.4.tgz", - "integrity": "sha512-uMS/X+/5RokF3uiiD1IAr6Ha9k7QPegHrAB3QW0x6WRUTMq0K+08F+AeF5COmbfYMMaxofD6x8XmM+BLeg/0hw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.4.tgz", - "integrity": "sha512-u/9y09WQ00y6BQeNo69hMa/Fx+xKHGnmcjMtS3xkZtmoCP+A0ebumG0Y9DfXs2olJY2//O5di7Qu3fwlBg+3Cw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/material": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.4.tgz", - "integrity": "sha512-Ysz6oPbpLH7CvRR6oxQwpUImSbFqxL4+eiH0LPc7vkaOSrvGdZ/7cWhAfT6hVnw3bEY+eq5qBSMgyVUB44z4eg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.4.tgz", - "integrity": "sha512-VFeFpQ+248m8GiCqcsHwH4PET7tR1cyXnhsep1EeI4MDaO+aIbsUcESqXzMm5+ChOmNyiCtLQu8QvfHZK0uDVA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.4.tgz", - "integrity": "sha512-snVbAKfnBuCUMgop6ln111B/ouMnDR1ZzMzpiKefdJDGUvASCLbR8XAioY+zXUI82QbNg5masUPia1Fy+yTvGw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.4.tgz", - "integrity": "sha512-aqtOjIjVNtWbpedDdni0yGfGR6sEb8S3jJB9jf43ththmHKxAlW7PKP2NgEmx0uJ2xY2iGET7Gkpl8RBwvoHgQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.0.tgz", - "integrity": "sha512-aOYy1LMrMnssq4GNfUCFo5nOJ+gIsG6iS3nEVEBJGNDAG1rWQHQ42Sre9NbZX26kzeCLaos0J+Vkn2Kc2NI5Hg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.28.0.tgz", - "integrity": "sha512-d83BBMT6id+eAdox+M37PCVWYDiqd6BrXxvjAVI2xJluRoSJCZQvB02Bcg6QCSe3ruLUK6vGwMTe8p1cDExePQ==", - "requires": { - "@azure/msal-common": "^7.2.0" - } - }, - "@azure/msal-common": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.2.0.tgz", - "integrity": "sha512-+Oz8LKTOACDHqDmv+MZy/z+DZRH8RZbMjhadmvp0scQ0R75OrzZro+HkxifWhtDG8l1ViYkvV9NHb4pEZyajAQ==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", - "dev": true - }, - "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - } - }, - "@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" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "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" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "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.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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/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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.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/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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", - "@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.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", - "@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.6", - "@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.6", - "@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.6", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", - "dev": true, - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@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/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", - "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-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-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 - }, - "@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 - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@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.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "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.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", - "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": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", - "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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@schematics/angular": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.5.tgz", - "integrity": "sha512-xZjXHLn1djIvKJFiOfspTrzAomtDGRqGgsOo06glBkC+cqKCyyXU1Hgxnd3S5V+8a6TpYgX25AXihtE3BeCJzg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "@angular-devkit/schematics": "14.0.5", - "jsonc-parser": "3.0.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@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/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", - "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", - "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/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/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "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.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.7.tgz", - "integrity": "sha512-a4zfQpp5vm4Ipdvbj+ZrPonikRhm6WBEd4zT1Yc1DXsmAxrPgDwWBLF/u/wTVXSFPIgOJ1U3ghSa2Xm4s3h28w==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "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 - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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 - } - } - }, - "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" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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": { - "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" - } - }, - "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-compat": { - "version": "3.23.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.5.tgz", - "integrity": "sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg==", - "dev": true, - "requires": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" - } - }, - "caniuse-lite": { - "version": "1.0.30001368", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz", - "integrity": "sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.198", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.198.tgz", - "integrity": "sha512-jwqQPdKGeAslcq8L+1SZZgL6uDiIDmTe9Gq4brsdWAH27y7MJ2g9Ue6MyST3ogmSM49EAQP7bype1V5hsuNrmQ==", - "dev": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "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 - } - } - }, - "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 - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", - "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" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "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.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.180", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.180.tgz", - "integrity": "sha512-7at5ash3FD9U5gPa3/wPr6OdiZd/zBjvDZaaHBpcqFOFUhZiWnb7stkqk8xUFL9H9nk7Yok5vCCNK8wyC/+f8A==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "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" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "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.10.3", - "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 - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", - "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "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", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "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", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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 - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "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 - }, - "karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "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": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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 - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.0.tgz", - "integrity": "sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==", - "dev": true, - "requires": { - "date-format": "^4.0.11", - "debug": "^4.3.4", - "flatted": "^3.2.5", - "rfdc": "^1.3.0", - "streamroller": "^3.1.1" - } - }, - "lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", - "dev": true - }, - "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": { - "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" - } - }, - "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": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "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" - }, - "dependencies": { - "@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 - }, - "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "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" - } - }, - "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" - } - }, - "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", - "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" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "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" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": 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 - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "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.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", - "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 - }, - "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 - }, - "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": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-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 - }, - "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 - }, - "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 - }, - "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 - }, - "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.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", - "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 - }, - "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.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", - "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.3", - "postcss-image-set-function": "^4.0.6", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", - "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 - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", - "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": "^1.0.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==", - "dev": true - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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": "7.5.5", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.5.tgz", - "integrity": "sha512-sy+H0pQofO95VDmFLzyaw9xNJU4KTRSwQIGM6+iG3SypAtCiLDzpeG8sJrNCWn2Up9km+KhkvTdbkrdy+yzZdw==", - "requires": { - "tslib": "^2.1.0" - } - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "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 - } - } - }, - "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 - }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.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" - } - }, - "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-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-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", - "dev": true, - "requires": { - "date-format": "^4.0.10", - "debug": "^4.3.4", - "fs-extra": "^10.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", - "dev": true, - "requires": { - "css": "^3.0.0", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "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.3.1", - "webpack-sources": "^3.2.3" - }, - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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": { - "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" - } - }, - "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.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", - "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": { - "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" - } - }, - "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" - } - }, - "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true - }, - "zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/package.json b/5-AccessControl/1-call-api-roles/SPA/package.json deleted file mode 100644 index f61f24db..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.4.0", - "@azure/msal-browser": "^2.28.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/app-routing.module.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 78505b0f..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { DashboardComponent } from './dashboard/dashboard.component'; - -import { RoleGuard } from './role.guard'; -import { roles } from './auth-config'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'todo-edit/:id', - component: TodoEditComponent, - canActivate: [ - RoleGuard - ], - data: { - expectedRoles: [roles.TaskUser, roles.TaskAdmin] - } - }, - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - RoleGuard - ], - data: { - expectedRoles: [roles.TaskUser, roles.TaskAdmin] - } - }, - { - path: 'dashboard', - component: DashboardComponent, - canActivate: [ - RoleGuard, - ], - data: { - expectedRoles: [roles.TaskAdmin] - } - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.css b/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.css deleted file mode 100644 index 43d668de..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.html b/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.html deleted file mode 100644 index d5f3660d..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.html +++ /dev/null @@ -1,25 +0,0 @@ - - {{ title }} - -
    - - TodoList - Dashboard - - - -
    -
    - - -
    - - \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.ts deleted file mode 100644 index 33c1d2b8..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/app.component.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - const activeAccount = - this.authService.instance.getActiveAccount() || this.authService.instance.getAllAccounts()[0]; - - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.logoutPopup({ - account: activeAccount, - }); - } else { - this.authService.logoutRedirect({ - account: activeAccount, - }); - } - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/app.module.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/app.module.ts deleted file mode 100644 index 21145148..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/app.module.ts +++ /dev/null @@ -1,119 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon' -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field' - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { DashboardComponent } from './dashboard/dashboard.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoService } from './todo.service'; - -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent, ProtectedResourceScopes -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; -import { RoleGuard } from './role.guard'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map | null>(); - - protectedResourceMap.set(protectedResources.apiTodoList.endpoint, [...protectedResources.apiTodoList.scopes]); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - }; -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - DashboardComponent, - TodoViewComponent, - TodoEditComponent - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - MatInputModule, - MatFormFieldModule, - MatCheckboxModule, - MatIconModule, - HttpClientModule, - FormsModule, - MsalModule - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory - }, - MsalService, - RoleGuard, - MsalBroadcastService, - TodoService - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/auth-config.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/auth-config.ts deleted file mode 100644 index 349960db..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,68 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - clientCapabilities: ['CP1'] // This lets the resource server know that this client can handle claim challenges. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ -export const protectedResources = { - apiTodoList: { - endpoint: "https://localhost:44351/api/todolist", - scopes: ["api://Enter_the_Web_Api_Application_Id_Here/access_via_approle_assignments"] - } -} - -/** - * Scopes you add here will be prompted for user consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest = { - scopes: [...protectedResources.apiTodoList.scopes] -}; - -export const roles = { - TaskAdmin: "TaskAdmin", - TaskUser: "TaskUser" -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/base.guard.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/base.guard.ts deleted file mode 100644 index decabc02..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/base.guard.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Injectable, Inject, VERSION } from "@angular/core"; -import { Location } from "@angular/common"; -import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild, CanLoad, UrlTree, Router } from "@angular/router"; -import { concatMap, catchError, map } from "rxjs/operators"; -import { Observable, of } from "rxjs"; - -import { MsalBroadcastService, MsalGuardConfiguration, MSAL_GUARD_CONFIG, MsalService } from "@azure/msal-angular"; -import { InteractionType, BrowserConfigurationAuthError, BrowserUtils, UrlString, PopupRequest, RedirectRequest, AuthenticationResult } from "@azure/msal-browser"; - -/** - * Guard for protecting routes that require authentication. You can extend it to create custom route guards. - * This class is based on MsalGuard from msal-angular. For more information, visit: - * https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_angular.msalguard.html) - */ -@Injectable() -export class BaseGuard implements CanActivate, CanActivateChild, CanLoad { - private loginFailedRoute?: UrlTree; - - constructor( - @Inject(MSAL_GUARD_CONFIG) protected msalGuardConfig: MsalGuardConfiguration, - protected msalBroadcastService: MsalBroadcastService, - protected authService: MsalService, - protected location: Location, - protected router: Router - ) { - // Subscribing so events in MsalGuard will set inProgress$ observable - this.msalBroadcastService.inProgress$.subscribe(); - } - - /** - * Parses url string to UrlTree - * @param url - */ - parseUrl(url: string): UrlTree { - return this.router.parseUrl(url); - } - - /** - * Builds the absolute url for the destination page - * @param path Relative path of requested page - * @returns Full destination url - */ - getDestinationUrl(path: string): string { - this.authService.getLogger().verbose("Guard - getting destination url"); - // Absolute base url for the application (default to origin if base element not present) - const baseElements = document.getElementsByTagName("base"); - const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin); - - // Path of page (including hash, if using hash routing) - const pathUrl = this.location.prepareExternalUrl(path); - - // Hash location strategy - if (pathUrl.startsWith("#")) { - this.authService.getLogger().verbose("Guard - destination by hash routing"); - return `${baseUrl}/${pathUrl}`; - } - - /* - * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page). - * Since baseUrl also includes /base, can just concatentate baseUrl + path - */ - return `${baseUrl}${path}`; - } - - /** - * Interactively prompt the user to login - * @param url Path of the requested page - */ - private loginInteractively(state: RouterStateSnapshot): Observable { - const authRequest = typeof this.msalGuardConfig.authRequest === "function" - ? this.msalGuardConfig.authRequest(this.authService, state) - : { ...this.msalGuardConfig.authRequest }; - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.getLogger().verbose("Guard - logging in by popup"); - return this.authService.loginPopup(authRequest as PopupRequest) - .pipe( - map((response: AuthenticationResult) => { - this.authService.getLogger().verbose("Guard - login by popup successful, can activate, setting active account"); - this.authService.instance.setActiveAccount(response.account); - return true; - }) - ); - } - - this.authService.getLogger().verbose("Guard - logging in by redirect"); - const redirectStartPage = this.getDestinationUrl(state.url); - return this.authService.loginRedirect({ - redirectStartPage, - ...authRequest - } as RedirectRequest) - .pipe( - map(() => false) - ); - } - - /** - * Helper which checks for the correct interaction type, prevents page with Guard to be set as reidrect, and calls handleRedirectObservable - * @param state - */ - protected activateHelper(state?: RouterStateSnapshot, route?: ActivatedRouteSnapshot): Observable { - if (this.msalGuardConfig.interactionType !== InteractionType.Popup && this.msalGuardConfig.interactionType !== InteractionType.Redirect) { - throw new BrowserConfigurationAuthError("invalid_interaction_type", "Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration"); - } - this.authService.getLogger().verbose("MSAL Guard activated"); - - /* - * If a page with MSAL Guard is set as the redirect for acquireTokenSilent, - * short-circuit to prevent redirecting or popups. - */ - if (typeof window !== "undefined") { - if (UrlString.hashContainsKnownProperties(window.location.hash) && BrowserUtils.isInIframe() && !this.authService.instance.getConfiguration().system.allowRedirectInIframe) { - this.authService.getLogger().warning("Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication."); - return of(false); - } - } else { - this.authService.getLogger().info("Guard - window is undefined, MSAL does not support server-side token acquisition"); - return of(true); - } - - /** - * If a loginFailedRoute is set in the config, set this as the loginFailedRoute - */ - if (this.msalGuardConfig.loginFailedRoute) { - this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute); - } - - // Capture current path before it gets changed by handleRedirectObservable - const currentPath = this.location.path(true); - - return this.authService.handleRedirectObservable() - .pipe( - concatMap(() => { - if (!this.authService.instance.getAllAccounts().length) { - if (state) { - this.authService.getLogger().verbose("Guard - no accounts retrieved, log in required to activate"); - return this.loginInteractively(state); - } - this.authService.getLogger().verbose("Guard - no accounts retrieved, no state, cannot load"); - return of(false); - } - - this.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load"); - - // Prevent navigating the app to /#code= or /code= - if (state) { - /* - * Path routing: - * state.url: /#code=... - * state.root.fragment: code=... - */ - - /* - * Hash routing: - * state.url: /code - * state.root.fragment: null - */ - const urlContainsCode: boolean = this.includesCode(state.url); - const fragmentContainsCode: boolean = !!state.root && !!state.root.fragment && this.includesCode(`#${state.root.fragment}`); - const hashRouting: boolean = this.location.prepareExternalUrl(state.url).indexOf("#") === 0; - - // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used - if (urlContainsCode && (fragmentContainsCode || hashRouting)) { - this.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation."); - - // Path routing (navigate to current path without hash) - if (currentPath.indexOf("#") > -1) { - return of(this.parseUrl(this.location.path())); - } - - // Hash routing (navigate to root path) - return of(this.parseUrl("")); - } - } - - return of(true); - - }), - catchError((error: Error) => { - this.authService.getLogger().error("Guard - error while logging in, unable to activate"); - this.authService.getLogger().errorPii(`Guard - error: ${error.message}`); - /** - * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route - * Apps using Angular 9 will receive of(false) in canLoad interface, as it does not support UrlTree return types - */ - if (this.loginFailedRoute && parseInt(VERSION.major, 10) > 9 && state) { - this.authService.getLogger().verbose("Guard - loginFailedRoute set, redirecting"); - return of(this.loginFailedRoute); - } - return of(false); - }) - ); - } - - includesCode(path: string): boolean { - return (path.lastIndexOf("/code") > -1 && - path.lastIndexOf("/code") === path.length - "/code".length) || // path.endsWith("/code") - path.indexOf("#code=") > -1 || - path.indexOf("&code=") > -1; - } - - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { - this.authService.getLogger().verbose("Guard - canActivate"); - return this.activateHelper(state, route); - } - - canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { - this.authService.getLogger().verbose("Guard - canActivateChild"); - return this.activateHelper(state, route); - } - - canLoad(): Observable { - this.authService.getLogger().verbose("Guard - canLoad"); - // @ts-ignore - return this.activateHelper(); - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.css b/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.css deleted file mode 100644 index 972c19a3..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.css +++ /dev/null @@ -1,4 +0,0 @@ -.card-section { - margin: 5%; - padding: 5%; -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.html b/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.html deleted file mode 100644 index cd4c4ca6..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.html +++ /dev/null @@ -1,6 +0,0 @@ - - Owner: {{tb.owner}} -
      -
    1. {{task.description}}
    2. -
    -
    \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.ts deleted file mode 100644 index a52ba9d2..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/dashboard/dashboard.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { TodoService } from './../todo.service'; -import { Todo } from '../todo'; - -@Component({ - selector: 'app-dashboard', - templateUrl: './dashboard.component.html', - styleUrls: ['./dashboard.component.css'] -}) -export class DashboardComponent implements OnInit { - - users: string[] = []; - todos: Todo[] = []; - table: any = []; - - constructor(private service: TodoService) { } - - ngOnInit(): void { - this.getAll() - } - - getAll(): void { - this.service.getAll() - .subscribe((todos: Todo[]) => { - this.todos = todos; - this.tabulateTodos(this.todos); - }); - } - - tabulateTodos(todos: Todo[]): void { - todos.map((todo) => { - if (!this.users.includes(todo.owner!)) { - this.users.push(todo.owner!) - this.table.push({"owner": todo.owner, "tasks": todos.filter(t => t.owner === todo.owner && !t.status)}) - } - }) - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.css b/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.css deleted file mode 100644 index 20d78221..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,25 +0,0 @@ -#table-container { - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.html b/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.html deleted file mode 100644 index 3e752449..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and call a protected web API - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and acquire an access - token for a protected web API - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    -
    ApplicationAppIdUrl in the Azure portal
    - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    - \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.ts deleted file mode 100644 index 9f109e2a..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { filter } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../utils/claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/role.guard.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/role.guard.ts deleted file mode 100644 index 7f202314..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/role.guard.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from "@angular/router"; -import { Inject, Injectable } from "@angular/core"; -import { Location } from "@angular/common"; -import { Observable, of } from "rxjs"; -import { concatMap } from "rxjs/operators"; - -import { MsalBroadcastService, MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG } from "@azure/msal-angular"; -import { BaseGuard } from "./base.guard"; - -@Injectable() -export class RoleGuard extends BaseGuard { - - constructor( - @Inject(MSAL_GUARD_CONFIG) protected override msalGuardConfig: MsalGuardConfiguration, - protected override msalBroadcastService: MsalBroadcastService, - protected override authService: MsalService, - protected override location: Location, - protected override router: Router - ) { - super(msalGuardConfig, msalBroadcastService, authService, location, router); - } - - override activateHelper(state?: RouterStateSnapshot, route?: ActivatedRouteSnapshot): Observable { - let result = super.activateHelper(state, route); - - const expectedRoles: string[] = route ? route.data['expectedRoles'] : []; - - return result.pipe( - concatMap(() => { - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - activeAccount = this.authService.instance.getAllAccounts()[0]; - } - - if (!activeAccount?.idTokenClaims?.roles) { - window.alert('Token does not have roles claim. Please ensure that your account is assigned to an app role and then sign-out and sign-in again.'); - return of(false); - } - - const hasRequiredRole = expectedRoles.some((role: string) => activeAccount?.idTokenClaims?.roles?.includes(role)); - - if (!hasRequiredRole) { - window.alert('You do not have access as the expected role is not found. Please ensure that your account is assigned to an app role and then sign-out and sign-in again.'); - } - - return of(hasRequiredRole); - }) - ); - } -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/sample.spec.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/sample.spec.ts deleted file mode 100644 index 536fd997..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/todo-view')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.css b/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.css deleted file mode 100644 index 9295c096..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.css +++ /dev/null @@ -1,14 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} - -.form-field { - min-width: 100px; - max-width: 800px; - width: 100%; -} - -.input-field { - width: 100%; -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.html b/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.html deleted file mode 100644 index bc0853b4..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.html +++ /dev/null @@ -1,14 +0,0 @@ - -
    -

    Edit a task

    -
    -
    -
    -
    - - - - -
    -
    \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.ts deleted file mode 100644 index f3a98fc4..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-edit/todo-edit.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TodoService } from './../todo.service'; -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { Todo } from '../todo'; - -@Component({ - selector: 'app-todo-edit', - templateUrl: './todo-edit.component.html', - styleUrls: ['./todo-edit.component.css'] -}) -export class TodoEditComponent implements OnInit { - - todo: Todo = { - id: 1, - description: "undefined", - status: false, - }; - - constructor(private route: ActivatedRoute, private router: Router, private service: TodoService) { } - - ngOnInit(): void { - this.route.paramMap.subscribe((params) => { - let id = +params.get('id')!; - this.service.getTodo(+id).subscribe((response: Todo) => { - this.todo = response; - }) - }) - } - - editTodo(todo: Todo): void { - this.todo.description = todo.description; - this.service.editTodo(this.todo).subscribe(() => { - this.router.navigate(['/todo-view']); - }) - } - -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.css b/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.css deleted file mode 100644 index 6e93921c..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.css +++ /dev/null @@ -1,26 +0,0 @@ -table { - min-width: 100px; - width: 100%; -} - -.form-field { - min-width: 100px; - width: 90%; -} - -.input-field { - width: 90%; -} - -.card-section { - margin-top: 5%; -} - -#submit-button { - margin-left: 1%; -} - -.material-icons:hover { - color: orange !important; - cursor: pointer -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.html b/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.html deleted file mode 100644 index db724480..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.html +++ /dev/null @@ -1,45 +0,0 @@ - -
    - - Enter a task - - - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Status - - Description {{todo.description}} Edit - edit - Remove - delete -
    -
    \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.ts deleted file mode 100644 index 19c5b94e..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo-view/todo-view.component.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { NgForm } from '@angular/forms'; - -import { TodoService } from './../todo.service'; -import { Todo } from '../todo'; - -@Component({ - selector: 'app-todo-view', - templateUrl: './todo-view.component.html', - styleUrls: ['./todo-view.component.css'] -}) -export class TodoViewComponent implements OnInit { - - todo?: Todo; - - todos: Todo[] = []; - - displayedColumns = ['status', 'description', 'edit', 'remove']; - - constructor(private service: TodoService) { } - - ngOnInit(): void { - this.getTodos(); - } - - getTodos(): void { - this.service.getTodos() - .subscribe((todos: Todo[]) => { - this.todos = todos; - }); - } - - addTodo(add: NgForm): void { - this.service.postTodo(add.value).subscribe(() => { - this.getTodos(); - }) - add.resetForm(); - } - - checkTodo(todo: Todo): void { - this.service.editTodo(todo).subscribe(); - } - - removeTodo(id: string): void { - this.service.deleteTodo(+id).subscribe(() => { - this.getTodos(); - }) - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo.service.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/todo.service.ts deleted file mode 100644 index 10fb8fa5..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo.service.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Todo } from './todo'; - -import { protectedResources } from './auth-config'; - -@Injectable({ - providedIn: 'root' -}) -export class TodoService { - url = protectedResources.apiTodoList.endpoint; - - constructor(private http: HttpClient) { } - - getAll() { - return this.http.get(this.url + '/' + 'getAll'); - } - - getTodos() { - return this.http.get(this.url); - } - - getTodo(id: number) { - return this.http.get(this.url + '/' + id); - } - - postTodo(todo: Todo) { - return this.http.post(this.url, todo); - } - - deleteTodo(id: number) { - return this.http.delete(this.url + '/' + id); - } - - editTodo(todo: Todo) { - return this.http.put(this.url + '/' + todo.id, todo); - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/todo.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/todo.ts deleted file mode 100644 index 4cf400f1..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/todo.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Todo { - id: number; - description: string; - owner?: string; - status: boolean; -} \ No newline at end of file diff --git a/5-AccessControl/1-call-api-roles/SPA/src/app/utils/claim-utils.ts b/5-AccessControl/1-call-api-roles/SPA/src/app/utils/claim-utils.ts deleted file mode 100644 index 231ad388..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/app/utils/claim-utils.ts +++ /dev/null @@ -1,189 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/5-AccessControl/1-call-api-roles/SPA/src/assets/.gitkeep b/5-AccessControl/1-call-api-roles/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/5-AccessControl/1-call-api-roles/SPA/src/environments/environment.prod.ts b/5-AccessControl/1-call-api-roles/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/5-AccessControl/1-call-api-roles/SPA/src/environments/environment.ts b/5-AccessControl/1-call-api-roles/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/5-AccessControl/1-call-api-roles/SPA/src/favicon.svg b/5-AccessControl/1-call-api-roles/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/5-AccessControl/1-call-api-roles/SPA/src/index.html b/5-AccessControl/1-call-api-roles/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/5-AccessControl/1-call-api-roles/SPA/src/main.ts b/5-AccessControl/1-call-api-roles/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/5-AccessControl/1-call-api-roles/SPA/src/polyfills.ts b/5-AccessControl/1-call-api-roles/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/5-AccessControl/1-call-api-roles/SPA/src/styles.css b/5-AccessControl/1-call-api-roles/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/5-AccessControl/1-call-api-roles/SPA/src/test.ts b/5-AccessControl/1-call-api-roles/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/5-AccessControl/1-call-api-roles/SPA/tsconfig.app.json b/5-AccessControl/1-call-api-roles/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/5-AccessControl/1-call-api-roles/SPA/tsconfig.json b/5-AccessControl/1-call-api-roles/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/5-AccessControl/1-call-api-roles/SPA/tsconfig.spec.json b/5-AccessControl/1-call-api-roles/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/5-AccessControl/1-call-api-roles/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/ConfigurationTests.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/ConfigurationTests.cs deleted file mode 100644 index 5b2477c2..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/ConfigurationTests.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Xunit; -using Microsoft.Extensions.Configuration; - -namespace TodoListAPI.Tests -{ - public class ConfigurationTests - { - public static IConfiguration InitConfiguration() - { - var config = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .Build(); - - return config; - } - - [Fact] - public void ShouldNotContainClientId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var clientId = myConfiguration.GetSection("AzureAd")["ClientId"]; - - Assert.False(Guid.TryParse(clientId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainTenantId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var tenantId = myConfiguration.GetSection("AzureAd")["TenantId"]; - - Assert.False(Guid.TryParse(tenantId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainDomain() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var domain = $"https://{myConfiguration.GetSection("AzureAd")["Domain"]}"; - - Assert.False(Uri.TryCreate(domain, UriKind.Absolute, out var uri)); - } - } -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj b/5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj deleted file mode 100644 index 66ff194e..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - net6.0 - - false - - - - - Always - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI.sln b/5-AccessControl/2-call-api-groups/API/TodoListAPI.sln deleted file mode 100644 index dd31f92c..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.3.32922.545 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI", "TodoListAPI\TodoListAPI.csproj", "{3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI.Tests", "TodoListAPI.Tests\TodoListAPI.Tests.csproj", "{FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.Build.0 = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {44AB506D-AF3A-4AE5-90E9-CFECC92533A6} - EndGlobalSection -EndGlobal diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Controllers/TodoListController.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Controllers/TodoListController.cs deleted file mode 100644 index 91310ae9..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Controllers/TodoListController.cs +++ /dev/null @@ -1,203 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using System.Security.Claims; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.Identity.Web.Resource; -using TodoListAPI.Infrastructure; -using TodoListAPI.Models; - -namespace TodoListAPI.Controllers -{ - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class TodoListController : ControllerBase - { - private readonly TodoContext _TodoListContext; - private readonly IHttpContextAccessor _contextAccessor; - private ClaimsPrincipal _currentPrincipal; - - /// - /// We store the object id of the user/app derived from the presented Access token - /// - private string _currentPrincipalId = string.Empty; - - public TodoListController(TodoContext context, IHttpContextAccessor contextAccessor) - { - _TodoListContext = context; - _contextAccessor = contextAccessor; - - // We seek the details of the user/app represented by the access token presented to this API, This can be empty unless authN succeeded - // If a user signed-in, the value will be the unique identifier of the user. - _currentPrincipal = GetCurrentClaimsPrincipal(); - - if (!IsAppOnlyToken() && _currentPrincipal != null) - { - _currentPrincipalId = _currentPrincipal.GetObjectId(); - PopulateDefaultToDos(_currentPrincipalId); - } - } - - // GET: api/todolist/getAll - [HttpGet] - [Route("getAll")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - [Authorize(Policy = AuthorizationPolicies.AssignmentToGroupAdminGroupRequired)] - public async Task>> GetAll() - { - return await _TodoListContext.TodoItems.ToListAsync(); - } - - // GET: api/TodoItems - [HttpGet] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - public async Task>> GetTodoItems() - { - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. The token might have one or more of the following claim, - /// that might seem like a unique identifier, but is not and should not be used as such: - /// - /// - upn (user principal name): might be unique amongst the active set of users in a tenant - /// but tend to get reassigned to new employees as employees leave the organization and others - /// take their place or might change to reflect a personal change like marriage. - /// - /// - email: might be unique amongst the active set of users in a tenant but tend to get reassigned - /// to new employees as employees leave the organization and others take their place. - /// - return await _TodoListContext.TodoItems.Where(x => x.Owner == _currentPrincipalId).ToListAsync(); - } - - // GET: api/TodoItems/5 - [HttpGet("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - public async Task> GetTodoItem(int id) - { - return await _TodoListContext.TodoItems.FirstOrDefaultAsync(t => t.Id == id && t.Owner == _currentPrincipalId); - } - - // PUT: api/TodoItems/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPut("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - public async Task PutTodoItem(int id, TodoItem todoItem) - { - if (id != todoItem.Id || !_TodoListContext.TodoItems.Any(x => x.Id == id)) - { - return NotFound(); - } - - if (_TodoListContext.TodoItems.Any(x => x.Id == id && x.Owner == _currentPrincipalId)) - { - _TodoListContext.Entry(todoItem).State = EntityState.Modified; - - try - { - await _TodoListContext.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!_TodoListContext.TodoItems.Any(e => e.Id == id)) - { - return NotFound(); - } - else - { - throw; - } - } - } - - return NoContent(); - } - - // POST: api/TodoItems - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - public async Task> PostTodoItem(TodoItem todoItem) - { - todoItem.Owner = _currentPrincipalId; - todoItem.Status = false; - - _TodoListContext.TodoItems.Add(todoItem); - await _TodoListContext.SaveChangesAsync(); - - return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); - } - - // DELETE: api/TodoItems/5 - [HttpDelete("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] - public async Task> DeleteTodoItem(int id) - { - TodoItem todoItem = await _TodoListContext.TodoItems.FindAsync(id); - - if (todoItem == null) - { - return NotFound(); - } - - if (_TodoListContext.TodoItems.Any(x => x.Id == id && x.Owner == _currentPrincipalId)) - { - _TodoListContext.TodoItems.Remove(todoItem); - await _TodoListContext.SaveChangesAsync(); - } - - return NoContent(); - } - - private async void PopulateDefaultToDos(string _currentPrincipalId) - { - //Pre - populate with sample data - if (_TodoListContext.TodoItems.Count() == 0 && !string.IsNullOrEmpty(_currentPrincipalId)) - { - _TodoListContext.TodoItems.Add(new TodoItem() { Owner = $"{_currentPrincipalId}", Description = "Pick up groceries", Status = false }); - _TodoListContext.TodoItems.Add(new TodoItem() { Owner = $"{_currentPrincipalId}", Description = "Finish invoice report", Status = false }); - - await _TodoListContext.SaveChangesAsync(); - } - } - - /// - /// returns the current claimsPrincipal (user/Client app) dehydrated from the Access token - /// - /// - private ClaimsPrincipal GetCurrentClaimsPrincipal() - { - // Irrespective of whether a user signs in or not, the AspNet security middleware dehydrates - // the claims in the HttpContext.User.Claims collection - if (_contextAccessor.HttpContext != null && _contextAccessor.HttpContext.User != null) - { - return _contextAccessor.HttpContext.User; - } - - return null; - } - - /// - /// Indicates of the AT presented was for an app-only token or not. - /// - /// - private bool IsAppOnlyToken() - { - // Add in the optional 'idtyp' claim to check if the access token is coming from an application or user. - // - // See: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - - if (GetCurrentClaimsPrincipal() != null) - { - return GetCurrentClaimsPrincipal().Claims.Any(c => c.Type == "idtyp" && c.Value == "app"); - } - - return false; - } - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs deleted file mode 100644 index d42c8379..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/AuthorizationPolicies.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Linq; -using System.Collections.Generic; -using System.Threading.Tasks; - -namespace TodoListAPI.Infrastructure -{ - /// - /// Contain all the authorization policies available in this application. - /// - public static class AuthorizationPolicies - { - public const string AssignmentToGroupMemberGroupRequired = "AssignmentToGroupMemberGroupRequired"; - public const string AssignmentToGroupAdminGroupRequired = "AssignmentToGroupAdminGroupRequired"; - } -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/CacheSettings.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/CacheSettings.cs deleted file mode 100644 index 18913160..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Infrastructure/CacheSettings.cs +++ /dev/null @@ -1,11 +0,0 @@ -namespace TodoListAPI.Infrastructure -{ - /// - /// Contains all the caching settings available in this application. - /// - public class CacheSettings - { - public string SlidingExpirationInSeconds { get; set; } - public string AbsoluteExpirationInSeconds { get; set; } - } -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoContext.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoContext.cs deleted file mode 100644 index a84bbfcc..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoContext.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace TodoListAPI.Models -{ - public class TodoContext : DbContext - { - public TodoContext(DbContextOptions options) - : base(options) - { - - } - - public DbSet TodoItems { get; set; } - } -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoItem.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoItem.cs deleted file mode 100644 index b591aae4..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Models/TodoItem.cs +++ /dev/null @@ -1,18 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace TodoListAPI.Models -{ - public class TodoItem - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string Owner { get; set; } - public string Description { get; set; } - public bool Status { get; set; } - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Program.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Program.cs deleted file mode 100644 index 9e80b837..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Program.cs +++ /dev/null @@ -1,22 +0,0 @@ - -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Caching.Distributed; - -namespace TodoListAPI -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Properties/launchSettings.json b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Properties/launchSettings.json deleted file mode 100644 index c832a603..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44351", - "sslPort": 44351 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "https://localhost:44351/api/todolist", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "TodoListAPI": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44351/", - "sslPort": 44351 - } - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Services/GraphHelper.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Services/GraphHelper.cs deleted file mode 100644 index d91db728..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Services/GraphHelper.cs +++ /dev/null @@ -1,277 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IdentityModel.Tokens.Jwt; -using System.Linq; -using System.Security.Claims; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.Extensions.Caching.Memory; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Graph; -using TodoListAPI.Infrastructure; - -namespace TodoListAPI.Services -{ - public class GraphHelper - { - private const string Cached_Graph_Token_Key = "JwtSecurityTokenUsedToCallWebAPI"; - private const string Groups_Cache_Key = "groupClaims_"; - private static IMemoryCache _memoryCache; - - /// - /// This method inspects the claims collection created from the ID or Access token issued to a user and returns the groups that are present in the token. - /// If it detects groups overage, the method then makes calls to ProcessUserGroupsForOverage method to get the entire set of security groups and populates - /// the Claim Principal's "groups" claim with the complete list of groups. - /// - /// TokenValidatedContext - /// List - public static async Task ProcessAnyGroupsOverage(TokenValidatedContext context, List requiredGroupIds, CacheSettings cacheSettings) - { - ClaimsPrincipal principal = context.Principal; - - if (principal == null || principal.Identity == null) - { - await Task.CompletedTask; - } - - // ensure MemoryCache is available - _memoryCache = context.HttpContext.RequestServices.GetService(); - - if (_memoryCache == null) - { - throw new ArgumentNullException("_memoryCache", "Memory cache is not available."); - } - - // Checks if the incoming token contains a 'Group Overage' claim. - if (HasOverageOccurred(principal)) - { - // Gets group values from cache if available. - var usergroups = GetUserGroupsFromCache(principal); - - if (usergroups == null || usergroups.Count == 0) // Cache eviction - { - usergroups = await ProcessUserGroupsForOverage(context, requiredGroupIds); - } - - // Populate the current ClaimsPrincipal 'groups' claim with all the groups to ensure that policy check works as expected - if (usergroups?.Count > 0) - { - var identity = (ClaimsIdentity)principal.Identity; - - // Remove any existing 'groups' claim - RemoveExistingGroupsClaims(identity); - - // And re-populate - RepopulateGroupsClaim(usergroups, identity); - - // Here we add the groups in a cache variable so that calls to Graph can be minimized to fetch all the groups for a user. - // IMPORTANT: Group list is cached for 1 hr by default, and thus cached groups will miss any changes to a users group membership for this duration. - // For capturing real-time changes to a user's group membership, consider implementing MS Graph change notifications (https://learn.microsoft.com/graph/api/resources/webhooks) - SaveUsersGroupsToCache(usergroups, principal, cacheSettings); - } - } - } - - /// - /// Checks if 'Group Overage' claim exists for signed-in user. - /// - /// - /// - private static bool HasOverageOccurred(ClaimsPrincipal identity) - { - return identity.Claims.Any(x => x.Type == "hasgroups" || (x.Type == "_claim_names" && x.Value == "{\"groups\":\"src1\"}")); - } - - /// - /// ID Token does not contain 'scp' claim. - /// This claims only exists in the Access Token. - /// - /// - /// - private static bool IsAccessToken(ClaimsIdentity identity) - { - return identity.Claims.Any(x => x.Type == "scp" || x.Type == "http://schemas.microsoft.com/identity/claims/scope"); - } - - /// - /// This method inspects the claims collection created from the ID or Access token issued to a user and returns the groups that are present in the token . If it detects groups overage, - /// the method then makes calls to Microsoft Graph to fetch the group membership of the authenticated user. - /// - /// TokenValidatedContext - private static async Task> ProcessUserGroupsForOverage(TokenValidatedContext context, List requiredGroupIds) - { - var allgroups = new List(); - - try - { - // Before instantiating GraphServiceClient, the app should have granted admin consent for 'GroupMember.Read.All' permission. - var graphClient = context.HttpContext.RequestServices.GetService(); - - if (graphClient == null) - { - throw new ArgumentNullException("GraphServiceClient", "No service for type 'Microsoft.Graph.GraphServiceClient' has been registered in the Startup."); - } - - // Checks if the SecurityToken is not null. - // For the Web Api, SecurityToken contains claims from the Access Token. - if (context.SecurityToken != null) - { - // Checks if 'JwtSecurityTokenUsedToCallWebAPI' key already exists. - // This key is required to acquire Access Token for Graph Service Client. - if (!context.HttpContext.Items.ContainsKey(Cached_Graph_Token_Key)) - { - // For Web App, access token is retrieved using account identifier. But at this point account identifier is null. - // So, SecurityToken is saved in 'JwtSecurityTokenUsedToCallWebAPI' key. - // The key is then used to get the Access Token on-behalf of user. - context.HttpContext.Items.Add(Cached_Graph_Token_Key, context.SecurityToken as JwtSecurityToken); - } - - try - { - // Request to get groups and directory roles that the user is a direct member of. - var memberPage = await graphClient.Me.CheckMemberGroups(requiredGroupIds).Request().PostAsync().ConfigureAwait(false); - allgroups = memberPage.ToList(); - - // There is a limit to number of groups returned in a page, so the method below make further calls to Microsoft graph to get all the groups. - // allgroups = ProcessIGraphServiceMemberOfCollectionPage(memberPage, requiredGroupIds); - - if (allgroups?.Count > 0) - { - var principal = context.Principal; - - if (principal != null) - { - var identity = principal.Identity as ClaimsIdentity; - - // Checks if token is for protected APIs i.e., if token is 'Access Token'. - if (IsAccessToken(identity)) - { - // Remove existing groups claims - RemoveExistingGroupsClaims(identity); - - // And re-populate - RepopulateGroupsClaim(allgroups, identity); - } - } - - // return the full list of security groups - return allgroups; - } - } - catch (Exception graphEx) - { - var exMsg = graphEx.InnerException != null ? graphEx.InnerException.Message : graphEx.Message; - Debug.WriteLine("Call to Microsoft Graph failed: " + exMsg); - } - } - } - catch (Exception ex) - { - Console.WriteLine(ex.Message); - } - finally - { - // Checks if the key 'JwtSecurityTokenUsedToCallWebAPI' exists. - if (context.HttpContext.Items.ContainsKey(Cached_Graph_Token_Key)) - { - // Removes 'JwtSecurityTokenUsedToCallWebAPI' from Items collection. - // If not removed then it can cause failure to the application. - // Because this key is also added by StoreTokenUsedToCallWebAPI method of Microsoft.Identity.Web. - context.HttpContext.Items.Remove(Cached_Graph_Token_Key); - } - } - - return null; - } - - /// - /// Re-populate the `groups` claim with the complete list of groups fetched from MS Graph - /// - /// The user's entire security group membership. - /// The identity. - /// - private static void RepopulateGroupsClaim(List allgroups, ClaimsIdentity identity) - { - foreach (string group in allgroups) - { - // The following code adds group ids to the 'groups' claim. But depending upon your requirement and the format of the 'groups' claim selected in - // the app registration, you might want to add other attributes than id to the `groups` claim, examples being; - - // For instance if the required format is 'NetBIOSDomain\sAMAccountName' then the code is as commented below: - // identity.AddClaim(new Claim("groups", group.OnPremisesNetBiosName+"\\"+group.OnPremisesSamAccountName)); - identity.AddClaim(new Claim("groups", group)); - } - } - - /// - /// Remove groups claims if already exists. - /// - /// - private static void RemoveExistingGroupsClaims(ClaimsIdentity identity) - { - //clear existing claim - List existingGroupsClaims = identity.Claims.Where(x => x.Type == "groups").ToList(); - if (existingGroupsClaims?.Count > 0) - { - foreach (Claim groupsClaim in existingGroupsClaims) - { - identity.RemoveClaim(groupsClaim); - } - } - } - - /// - /// Gets the signed-in user's object identifier. - /// - /// The principal. - /// - /// - private static string GetUserObjectId(ClaimsPrincipal principal) - { - return principal.Claims.FirstOrDefault(x => x.Type == "oid").Value; - } - - /// - /// Retrieves all the groups saved in Cache. - /// > - /// - private static List GetUserGroupsFromCache(ClaimsPrincipal principal) - { - // Checks if Session contains data for groupClaims. - // The data will exist for 'Group Overage' claim if already populated. - string cacheKey = $"{Groups_Cache_Key}{GetUserObjectId(principal)}"; - - if (_memoryCache.TryGetValue(cacheKey, out List groups)) - { - Debug.WriteLine($"Cache hit successful for '{cacheKey}'"); - return groups; - } - - return null; - } - - /// - /// Saves the users groups to the memory cache. - /// - /// The users groups to cache. - /// The Claims principal. - /// - private static void SaveUsersGroupsToCache(List usersGroups, ClaimsPrincipal principal, CacheSettings cacheSettings) - { - string cacheKey = $"{Groups_Cache_Key}{GetUserObjectId(principal)}"; - - Debug.WriteLine($"Adding users groups for '{cacheKey}'."); - - // IMPORTANT: Group list is cached for 1 hr by default, and thus cached groups will miss any changes to a users group membership for this duration. - // For capturing real-time changes to a user's group membership, consider implementing MS Graph change notifications (https://learn.microsoft.com/en-us/graph/api/resources/webhooks) - var cacheEntryOptions = new MemoryCacheEntryOptions() - .SetSlidingExpiration(TimeSpan.FromSeconds(Convert.ToDouble(cacheSettings.SlidingExpirationInSeconds))) - .SetAbsoluteExpiration(TimeSpan.FromSeconds(Convert.ToDouble(cacheSettings.AbsoluteExpirationInSeconds))) - .SetPriority(CacheItemPriority.Normal) - .SetSize(10240); - - _memoryCache.Set(cacheKey, usersGroups, cacheEntryOptions); - } - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Startup.cs b/5-AccessControl/2-call-api-groups/API/TodoListAPI/Startup.cs deleted file mode 100644 index 89bc58d2..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/Startup.cs +++ /dev/null @@ -1,163 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IdentityModel.Tokens.Jwt; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.Identity.Web; -using Microsoft.IdentityModel.Logging; -using TodoListAPI.Infrastructure; -using TodoListAPI.Models; -using TodoListAPI.Services; - -namespace TodoListAPI -{ - public class Startup - { - public List allowedClientApps; - public List requiredGroupsIds; - public CacheSettings cacheSettings; - public IConfiguration Configuration { get; } - - public Startup(IConfiguration configuration) - { - Configuration = configuration; - - allowedClientApps = new List() { Configuration["AzureAd:ClientId"] }; - - requiredGroupsIds = Configuration.GetSection("AzureAd:Groups") - .AsEnumerable().Select(x => x.Value).Where(x => x != null).ToList(); - - cacheSettings = new CacheSettings - { - SlidingExpirationInSeconds = Configuration.GetValue("CacheSettings:SlidingExpirationInSeconds"), - AbsoluteExpirationInSeconds = Configuration.GetValue("CacheSettings:AbsoluteExpirationInSeconds") - }; - } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - // This is required to be instantiated before the OpenIdConnectOptions starts getting configured. - // By default, the claims mapping will map claim names in the old format to accommodate older SAML applications. - // 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' instead of 'roles' - // This flag ensures that the ClaimsIdentity claims collection will be built from the claims in the token - JwtSecurityTokenHandler.DefaultMapInboundClaims = false; - - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - { - // Ensure default token validation is carried out - Configuration.Bind("AzureAd"); - - options.Events = new JwtBearerEvents(); - - // The following lines code instruct the asp.net core middleware to use the data in the "roles" claim in the [Authorize] attribute, policy.RequireRole() and User.IsInrole() - // See https://docs.microsoft.com/aspnet/core/security/authorization/roles for more info. - options.TokenValidationParameters.RoleClaimType = "groups"; - - /// - /// Below you can do extended token validation and check for additional claims, such as: - /// - /// - check if the caller's tenant is in the allowed tenants list via the 'tid' claim (for multi-tenant applications) - /// - check if the caller's account is homed or guest via the 'acct' optional claim - /// - check if the caller belongs to right roles or groups via the 'roles' or 'groups' claim, respectively - /// - /// Bear in mind that you can do any of the above checks within the individual routes and/or controllers as well. - /// For more information, visit: https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validate-the-user-has-permission-to-access-this-data - /// - - options.Events.OnTokenValidated = async context => - { - string clientAppId = context?.Principal?.Claims - .FirstOrDefault(x => x.Type == "azp" || x.Type == "appid")?.Value; - - // In this scenario, client and service (API) share the same clientId and we disallow all calls to this API, except from the SPA - if (!allowedClientApps.Contains(clientAppId)) - { - throw new Exception("This client is not authorized to call this API"); - } - - if (context != null) - { - // Calls method to process groups overage claim (before policy checks kick-in) - await GraphHelper.ProcessAnyGroupsOverage(context, requiredGroupsIds, cacheSettings); - } - - await Task.CompletedTask; - }; - }, options => - { - Configuration.Bind("AzureAd", options); - }, "Bearer", true) - .EnableTokenAcquisitionToCallDownstreamApi(options => Configuration.Bind("AzureAd", options)) - .AddMicrosoftGraph(Configuration.GetSection("MSGraph")) - .AddInMemoryTokenCaches(); - - // Adding authorization policies that enforce authorization using Azure AD security groups. - services.AddAuthorization(options => - { - options.AddPolicy(AuthorizationPolicies.AssignmentToGroupMemberGroupRequired, policy => policy.RequireRole(Configuration["AzureAd:Groups:GroupMember"], Configuration["AzureAd:Groups:GroupAdmin"])); - options.AddPolicy(AuthorizationPolicies.AssignmentToGroupAdminGroupRequired, policy => policy.RequireRole(Configuration["AzureAd:Groups:GroupAdmin"])); - }); - - // The in-memory toDo list Db - services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); - - services.AddControllers(); - services.AddHttpContextAccessor(); - - // The following flag can be used to get more descriptive errors in development environments - // Enable diagnostic logging to help with troubleshooting. For more details, see https://aka.ms/IdentityModel/PII. - // You might not want to keep this following flag on for production - IdentityModelEventSource.ShowPII = true; - - // Allowing CORS for all domains and HTTP methods for the purpose of the sample - // In production, modify this with the actual domains and HTTP methods you want to allow - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader() - .WithExposedHeaders("WWW-Authenticate"); - })); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - // Since IdentityModel version 5.2.1 (or since Microsoft.AspNetCore.Authentication.JwtBearer version 2.2.0), - // Personal Identifiable Information is not written to the logs by default, to be compliant with GDPR. - // For debugging/development purposes, one can enable additional detail in exceptions by setting IdentityModelEventSource.ShowPII to true. - - Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = false; - - app.UseDeveloperExceptionPage(); - } - else - { - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } - - app.UseCors("default"); - app.UseHttpsRedirection(); - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/TodoListAPI.csproj b/5-AccessControl/2-call-api-groups/API/TodoListAPI/TodoListAPI.csproj deleted file mode 100644 index 08d16caa..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/TodoListAPI.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - net6.0 - aspnet-TodoListAPI-BA938C29-8BAB-4664-A688-8FD54049C1C3 - 1 - - - - - - - - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.Development.json b/5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.Development.json deleted file mode 100644 index 8983e0fc..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } -} diff --git a/5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.json b/5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.json deleted file mode 100644 index d868c11e..00000000 --- a/5-AccessControl/2-call-api-groups/API/TodoListAPI/appsettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "AzureAd": { - "Instance": "https://login.microsoftonline.com/", - "TenantId": "Enter the ID of your Azure AD tenant copied from the Azure portal", - "ClientId": "Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal", - "ClientSecret": "Enter the Client Secret of the 'TodoListAPI' application copied from the Azure portal", - "Scopes": [ "access_via_group_assignments" ], - "Groups": { - "GroupAdmin": "Enter the object ID for GroupAdmin group copied from Azure Portal", - "GroupMember": "Enter the object ID for GroupMember group copied from Azure Portal" - }, - "MSGraph": { - "BaseUrl": "https://graph.microsoft.com/v1.0", - "Scopes": "GroupMember.Read.All User.Read" - } - }, - "CacheSettings": { - "SlidingExpirationInSeconds": 60, - "AbsoluteExpirationInSeconds": 3600 - }, - "https_port": 44351, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Identity": "Information" - } - }, - "AllowedHosts": "*" -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/AppCreationScripts/AppCreationScripts.md b/5-AccessControl/2-call-api-groups/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/5-AccessControl/2-call-api-groups/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/5-AccessControl/2-call-api-groups/AppCreationScripts/BulkCreateGroups.ps1 b/5-AccessControl/2-call-api-groups/AppCreationScripts/BulkCreateGroups.ps1 deleted file mode 100644 index bf29a37a..00000000 --- a/5-AccessControl/2-call-api-groups/AppCreationScripts/BulkCreateGroups.ps1 +++ /dev/null @@ -1,208 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [PSCredential] $Credential, - [Parameter(Mandatory = $False, HelpMessage = 'Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory = $False, HelpMessage = 'Azure environment to use while running the script (it defaults to AzureCloud)')] - [string] $azureEnvironmentName -) - -<#.Description - This function generates groups names. -#> -Function GetGroupName([int] $val) -{ - - if ($val -lt 10) - { - $groupName = "Test Group 00" + $val; - } - elseif ($val -lt 100) - { - $groupName = "Test Group 0" + $val; - } - else - { - $groupName = "Test Group " + $val; - } - - return $groupName; - -} - -<#.Description - This function creates security groups and assigns the user to the security groups. -#> -Function CreateGroupsAndAssignUser($user) -{ - $val = 1; - while ($val -ne 223) - { - $groupName = GetGroupName -val $val - $group = Get-MgGroup -Filter "DisplayName eq '$groupName'" - $groupNameLower = $groupName.ToLower(); - $nickName = $groupNameLower.replace(' ',''); - - if ($group) - { - Write-Host "Group '$($group.DisplayName)' already exists" - $newsg = $group - } - else - { - try - { - $newsg = New-MgGroup -DisplayName $groupName -MailEnabled:$False -MailNickName $nickName -SecurityEnabled - Write-Host "Successfully created group '$($newsg.DisplayName)'" - } - catch - { - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to create group '$($newsg.DisplayName)'. Error is $message." -ForegroundColor White -BackgroundColor Red - } - } - - $userId = $user.Id - $params = @{ - "@odata.id"="https://graph.microsoft.com/v1.0/users/$userId" - } - - try - { - New-MgGroupMemberByRef -GroupId $newsg.Id -BodyParameter $params - Write-Host "Successfully assigned user to group '$($newsg.DisplayName)'" - } - catch - { - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to assign user to group '$($newsg.DisplayName)'. Error is $message." -ForegroundColor White -BackgroundColor Red - } - - $val += 1; - } - -} - - -<#.Description - This function signs in the user to the tenant using Graph SDK. - Add the user object_id below to assign the user the groups -#> -Function ConfigureApplications -{ - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - Write-Host "Connecting to Microsoft Graph" - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "Organization.Read.All User.Read.All Group.ReadWrite.All GroupMember.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "Organization.Read.All User.Read.All Group.ReadWrite.All GroupMember.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Add user object Id here - $usersobjectId = Read-Host -Prompt "Enter the object Id (from Azure portal) of the user who will assigned to these security groups, or press enter to use the currently signed-in user's object Id - '$($user.Id)'" - - if ($usersobjectId -eq '') - { - $usersobjectId = $user.Id - } - - $userassigned = Get-MgUser -UserId $usersobjectId - - Write-Host 'Found user -' - $userassigned | Format-List ID, DisplayName, Mail, UserPrincipalName - - Write-Host 'Starting operation. If you consistently get errors about existing odataref, please reboot your machine and try again. Restarting the PowerShell session does not always work.' - CreateGroupsAndAssignUser -user $userassigned -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) -{ - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser - Write-Host "Installed Microsoft.Graph.Authentication module. If you are having issues, please create a new PowerShell session and try again." -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) -{ - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser - Write-Host "Installed Microsoft.Graph.Groups module. If you are having issues, please create a new PowerShell session and try again." -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) -{ - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser - Write-Host "Installed Microsoft.Graph.Users module. If you are having issues, please create a new PowerShell session and try again." -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/AppCreationScripts/BulkRemoveGroups.ps1 b/5-AccessControl/2-call-api-groups/AppCreationScripts/BulkRemoveGroups.ps1 deleted file mode 100644 index 90eac7c6..00000000 --- a/5-AccessControl/2-call-api-groups/AppCreationScripts/BulkRemoveGroups.ps1 +++ /dev/null @@ -1,153 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [PSCredential] $Credential, - [Parameter(Mandatory = $False, HelpMessage = 'Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory = $False, HelpMessage = 'Azure environment to use while running the script (it defaults to AzureCloud)')] - [string] $azureEnvironmentName -) - -<#.Description - This function generates groups names. -#> -Function GetGroupName([int] $val) -{ - - if ($val -lt 10) - { - $groupName = "Test Group 00" + $val; - } - elseif ($val -lt 100) - { - $groupName = "Test Group 0" + $val; - } - else - { - $groupName = "Test Group " + $val; - } - - return $groupName; - -} - -<#.Description - This function removes security groups from tenant -#> -Function RemoveGroups -{ - $val = 1; - while ($val -ne 223) - { - - $groupName = GetGroupName -val $val - - $group = Get-MgGroup -Filter "DisplayName eq '$groupName'" - if ($group) - { - try - { - Remove-MgGroup -GroupId $group.Id - Write-Host "Successfully deleted group named '$($group.DisplayName)'" - } - catch - { - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove group '$($newsg.DisplayName)'. Error is $message." -ForegroundColor White -BackgroundColor Red - } - } - else - { - Write-Host "Couldn't find group with name '$($groupName)' " - } - - - $val += 1; - } -} - - -<#.Description - This function signs in the user to the tenant using Graph SDK. -#> -Function ConfigureApplications -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - Write-Host "Connecting to Microsoft Graph" - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Group.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "Organization.Read.All Group.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$currentUserPrincipalName'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # now remove groups - RemoveGroups - -} - - -$ErrorActionPreference = "Stop" - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) -{ - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) -{ - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) -{ - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/AppCreationScripts/Cleanup.ps1 b/5-AccessControl/2-call-api-groups/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index e2e990dc..00000000 --- a/5-AccessControl/2-call-api-groups/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,244 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -<#.Description - This function creates a new Azure AD Security Group with provided values -#> -Function CreateSecurityGroup([string] $name, [string] $description) -{ - Write-Host "Creating a security group by the name '$name'." - $newGroup = New-MgGroup -Description $description -DisplayName $name -MailEnabled:$false -SecurityEnabled:$true -MailNickName $name - return Get-MgGroup -Filter "DisplayName eq '$name'" -} - -<#.Description - This function first checks and then creates a new Azure AD Security Group with provided values, if required -#> -Function CreateIfNotExistsSecurityGroup([string] $name, [string] $description, [switch] $promptBeforeCreate) -{ - - # check if Group exists - $group = Get-MgGroup -Filter "DisplayName eq '$name'" - - if( $group -eq $null) - { - if ($promptBeforeCreate) - { - $confirmation = Read-Host "Proceed to create a new security group named '$name' in the tenant ? (Y/N)" - - if($confirmation -eq 'y') - { - $group = CreateSecurityGroup -name $name -description $description - } - } - else - { - Write-Host "No Security Group created!" - } - } - - return $group -} - -<#.Description - This function first checks and then deletes an existing Azure AD Security Group, if required -#> -Function RemoveSecurityGroup([string] $name, [switch] $promptBeforeDelete) -{ - - # check if Group exists - $group = Get-MgGroup -Filter "DisplayName eq '$name'" - - if( $group -ne $null) - { - if ($promptBeforeDelete) - { - $confirmation = Read-Host "Proceed to delete an existing group named '$name' in the tenant ?(Y/N)" - - if($confirmation -eq 'y') - { - Remove-MgGroup -GroupId $group.Id - Write-Host "Security group '$name' successfully deleted" - } - } - else - { - Write-Host "No Security group by name '$name' exists in the tenant, no deletion needed." - } - } - - return $group.Id -} - -<#.Description - This function assigns a provided user to a security group -#> -Function AssignUserToGroup([Microsoft.Graph.PowerShell.Models.MicrosoftGraphUser]$userToAssign, [Microsoft.Graph.PowerShell.Models.MicrosoftGraphGroup]$groupToAssign) -{ - $owneruserId = $userToAssign.Id - $params = @{ - "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/{$owneruserId}" - } - - New-MgGroupMemberByRef -GroupId $groupToAssign.Id -BodyParameter $params - Write-Host "Successfully assigned user '$($userToAssign.UserPrincipalName)' to group '$($groupToAssign.DisplayName)'" -} - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All Group.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All Group.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'client' (msal-angular-app) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-angular-app'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-angular-app'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-angular-app) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-angular-app'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-angular-app.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-angular-app'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-angular-app'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } - - # remove security groups, if relevant to the sample - RemoveSecurityGroup -name 'GroupAdmin' -promptBeforeDelete 'Y' - RemoveSecurityGroup -name 'GroupMember' -promptBeforeDelete 'Y' -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/5-AccessControl/2-call-api-groups/AppCreationScripts/Configure.ps1 b/5-AccessControl/2-call-api-groups/AppCreationScripts/Configure.ps1 deleted file mode 100644 index 4254db77..00000000 --- a/5-AccessControl/2-call-api-groups/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,601 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -# Create an application key -# See https://www.sabin.io/blog/adding-an-azure-active-directory-application-and-key-using-powershell/ -Function CreateAppKey([DateTime] $fromDate, [double] $durationInMonths) -{ - $key = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPasswordCredential - - $key.StartDateTime = $fromDate - $key.EndDateTime = $fromDate.AddMonths($durationInMonths) - $key.KeyId = (New-Guid).ToString() - $key.DisplayName = "app secret" - - return $key -} - -# Adds the requiredAccesses (expressed as a pipe separated string) to the requiredAccess structure -# The exposed permissions are in the $exposedPermissions collection, and the type of permission (Scope | Role) is -# described in $permissionType -Function AddResourcePermission($requiredAccess, ` - $exposedPermissions, [string]$requiredAccesses, [string]$permissionType) -{ - foreach($permission in $requiredAccesses.Trim().Split("|")) - { - foreach($exposedPermission in $exposedPermissions) - { - if ($exposedPermission.Value -eq $permission) - { - $resourceAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess - $resourceAccess.Type = $permissionType # Scope = Delegated permissions | Role = Application permissions - $resourceAccess.Id = $exposedPermission.Id # Read directory data - $requiredAccess.ResourceAccess += $resourceAccess - } - } - } -} - -# -# Example: GetRequiredPermissions "Microsoft Graph" "Graph.Read|User.Read" -# See also: http://stackoverflow.com/questions/42164581/how-to-configure-a-new-azure-ad-application-through-powershell -Function GetRequiredPermissions([string] $applicationDisplayName, [string] $requiredDelegatedPermissions, [string]$requiredApplicationPermissions, $servicePrincipal) -{ - # If we are passed the service principal we use it directly, otherwise we find it from the display name (which might not be unique) - if ($servicePrincipal) - { - $sp = $servicePrincipal - } - else - { - $sp = Get-MgServicePrincipal -Filter "DisplayName eq '$applicationDisplayName'" - } - $appid = $sp.AppId - $requiredAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess - $requiredAccess.ResourceAppId = $appid - $requiredAccess.ResourceAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess] - - # $sp.Oauth2Permissions | Select Id,AdminConsentDisplayName,Value: To see the list of all the Delegated permissions for the application: - if ($requiredDelegatedPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.Oauth2PermissionScopes -requiredAccesses $requiredDelegatedPermissions -permissionType "Scope" - } - - # $sp.AppRoles | Select Id,AdminConsentDisplayName,Value: To see the list of all the Application permissions for the application - if ($requiredApplicationPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.AppRoles -requiredAccesses $requiredApplicationPermissions -permissionType "Role" - } - return $requiredAccess -} - - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function creates a new Azure AD scope (OAuth2Permission) with default and provided values -#> -Function CreateScope( [string] $value, [string] $userConsentDisplayName, [string] $userConsentDescription, [string] $adminConsentDisplayName, [string] $adminConsentDescription, [string] $consentType) -{ - $scope = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope - $scope.Id = New-Guid - $scope.Value = $value - $scope.UserConsentDisplayName = $userConsentDisplayName - $scope.UserConsentDescription = $userConsentDescription - $scope.AdminConsentDisplayName = $adminConsentDisplayName - $scope.AdminConsentDescription = $adminConsentDescription - $scope.IsEnabled = $true - $scope.Type = $consentType - return $scope -} - -<#.Description - This function creates a new Azure AD AppRole with default and provided values -#> -Function CreateAppRole([string] $types, [string] $name, [string] $description) -{ - $appRole = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole - $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string] - $typesArr = $types.Split(',') - foreach($type in $typesArr) - { - $appRole.AllowedMemberTypes += $type; - } - $appRole.DisplayName = $name - $appRole.Id = New-Guid - $appRole.IsEnabled = $true - $appRole.Description = $description - $appRole.Value = $name; - return $appRole -} -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -<#.Description - This function creates a new Azure AD Security Group with provided values -#> -Function CreateSecurityGroup([string] $name, [string] $description) -{ - Write-Host "Creating a security group by the name '$name'." - $newGroup = New-MgGroup -Description $description -DisplayName $name -MailEnabled:$false -SecurityEnabled:$true -MailNickName $name - return Get-MgGroup -Filter "DisplayName eq '$name'" -} - -<#.Description - This function first checks and then creates a new Azure AD Security Group with provided values, if required -#> -Function CreateIfNotExistsSecurityGroup([string] $name, [string] $description, [switch] $promptBeforeCreate) -{ - - # check if Group exists - $group = Get-MgGroup -Filter "DisplayName eq '$name'" - - if( $group -eq $null) - { - if ($promptBeforeCreate) - { - $confirmation = Read-Host "Proceed to create a new security group named '$name' in the tenant ? (Y/N)" - - if($confirmation -eq 'y') - { - $group = CreateSecurityGroup -name $name -description $description - } - } - else - { - Write-Host "No Security Group created!" - } - } - - return $group -} - -<#.Description - This function first checks and then deletes an existing Azure AD Security Group, if required -#> -Function RemoveSecurityGroup([string] $name, [switch] $promptBeforeDelete) -{ - - # check if Group exists - $group = Get-MgGroup -Filter "DisplayName eq '$name'" - - if( $group -ne $null) - { - if ($promptBeforeDelete) - { - $confirmation = Read-Host "Proceed to delete an existing group named '$name' in the tenant ?(Y/N)" - - if($confirmation -eq 'y') - { - Remove-MgGroup -GroupId $group.Id - Write-Host "Security group '$name' successfully deleted" - } - } - else - { - Write-Host "No Security group by name '$name' exists in the tenant, no deletion needed." - } - } - - return $group.Id -} - -<#.Description - This function assigns a provided user to a security group -#> -Function AssignUserToGroup([Microsoft.Graph.PowerShell.Models.MicrosoftGraphUser]$userToAssign, [Microsoft.Graph.PowerShell.Models.MicrosoftGraphGroup]$groupToAssign) -{ - $owneruserId = $userToAssign.Id - $params = @{ - "@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/{$owneruserId}" - } - - New-MgGroupMemberByRef -GroupId $groupToAssign.Id -BodyParameter $params - Write-Host "Successfully assigned user '$($userToAssign.UserPrincipalName)' to group '$($groupToAssign.DisplayName)'" -} - -<#.Description - This function takes a string as input and creates an instance of an Optional claim object -#> -Function CreateOptionalClaim([string] $name) -{ - <#.Description - This function creates a new Azure AD optional claims with default and provided values - #> - - $appClaim = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim - $appClaim.AdditionalProperties = New-Object System.Collections.Generic.List[string] - $appClaim.Source = $null - $appClaim.Essential = $false - $appClaim.Name = $name - return $appClaim -} - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All Group.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All Group.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the client AAD application - Write-Host "Creating the AAD application (msal-angular-app)" - # Get a 6 months application key for the client Application - $fromDate = [DateTime]::Now; - $key = CreateAppKey -fromDate $fromDate -durationInMonths 6 - - # create the application - $clientAadApplication = New-MgApplication -DisplayName "msal-angular-app" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200/", "http://localhost:4200/auth"; ` - } ` - -Api ` - @{ ` - RequestedAccessTokenVersion = 2 ` - } ` - -SignInAudience AzureADMyOrg ` - -GroupMembershipClaims "SecurityGroup" ` - #end of command - - #add a secret to the application - $pwdCredential = Add-MgApplicationPassword -ApplicationId $clientAadApplication.Id -PasswordCredential $key - $clientAppKey = $pwdCredential.SecretText - - $currentAppId = $clientAadApplication.AppId - $currentAppObjectId = $clientAadApplication.Id - - $clientIdentifierUri = 'api://'+$currentAppId - Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @($clientIdentifierUri) - - # create the service principal of the newly created application - $clientServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($clientServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Groups Claims - - $newClaim = CreateOptionalClaim -name "groups" - $optionalClaims.IdToken += ($newClaim) - $newClaim = CreateOptionalClaim -name "groups" - $optionalClaims.AccessToken += ($newClaim) - # $newClaim = CreateOptionalClaim -name "groups" - # $optionalClaims.Saml2Token += ($newClaim) - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "acct" - $optionalClaims.IdToken += ($newClaim) - $newClaim = CreateOptionalClaim -name "idtyp" - $optionalClaims.AccessToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - - # rename the user_impersonation scope if it exists to match the readme steps or add a new scope - - # delete default scope i.e. User_impersonation - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = $clientAadApplication.Api.Oauth2PermissionScopes | Where-Object { $_.Value -eq "User_impersonation" } - - if($scope -ne $null) - { - # disable the scope - $scope.IsEnabled = $false - $scopes.Add($scope) - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - - # clear the scope - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @()} - } - - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = CreateScope -value access_via_group_assignments ` - -userConsentDisplayName "Access 'msal-angular-app' as the signed-in user assigned to group memberships" ` - -userConsentDescription "Allow the app to access the 'msal-angular-app' on your behalf after assignment to one or more security groups" ` - -adminConsentDisplayName "Access 'msal-angular-app' as the signed-in user assigned to group memberships" ` - -adminConsentDescription "Allow the app to access the 'msal-angular-app' as a signed-in user assigned to one or more security groups" ` - -consentType "User" ` - - - $scopes.Add($scope) - - # add/update scopes - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - Write-Host "Done creating the client application (msal-angular-app)" - - # URL of the AAD application in the Azure portal - # Future? $clientPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $clientPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "client$currentAppIdmsal-angular-app" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'client' to 'client') - Write-Host "Getting access from 'client' to 'client'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "msal-angular-app"` - -requiredDelegatedPermissions "access_via_group_assignments" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'client' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - - # Add Required Resources Access (from 'client' to 'Microsoft Graph') - Write-Host "Getting access from 'client' to 'Microsoft Graph'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "Microsoft Graph"` - -requiredDelegatedPermissions "User.Read|GroupMember.Read.All" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'Microsoft Graph' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - # we assign the currently signed-in user to the first security group. The following flag tracks that - [bool] $ownerAssigned = $false - - # Create any security groups that this app requires. - - $GroupAdmin = CreateIfNotExistsSecurityGroup -name 'GroupAdmin' -description 'Admin Security Group' -promptBeforeCreate 'Y' - Write-Host "group id of 'GroupAdmin'" -> $GroupAdmin.Id -ForegroundColor Green - - if ($ownerAssigned -eq $false) - { - AssignUserToGroup -userToAssign $user -groupToAssign $GroupAdmin - $ownerAssigned = $true - } - - $GroupMember = CreateIfNotExistsSecurityGroup -name 'GroupMember' -description 'User Security Group' -promptBeforeCreate 'Y' - Write-Host "group id of 'GroupMember'" -> $GroupMember.Id -ForegroundColor Green - - if ($ownerAssigned -eq $false) - { - AssignUserToGroup -userToAssign $user -groupToAssign $GroupMember - $ownerAssigned = $true - } - Write-Host "Don't forget to assign the users you wish to work with to the newly created security groups !" -ForegroundColor Red - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-angular-app' at `n $clientPortalUrl" -ForegroundColor Green - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\API\TodoListAPI\appsettings.json" - $configFile = $(Resolve-Path ($pwd.Path + "\..\API\TodoListAPI\appsettings.json")) - - $dictionary = @{ "Enter the ID of your Azure AD tenant copied from the Azure portal" = $tenantId;"Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal" = $clientAadApplication.AppId;"Enter the Client Secret of the 'TodoListAPI' application copied from the Azure portal" = $clientAppKey;"Enter the object ID for GroupAdmin group copied from Azure Portal" = $GroupAdmin.Id;"Enter the object ID for GroupMember group copied from Azure Portal" = $GroupMember.Id }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $clientAadApplication.AppId;"Enter_the_Tenant_Info_Here" = $tenantId;"Enter_the_Web_Api_Application_Id_Here" = $clientAadApplication.AppId;"Enter the object ID for GroupAdmin group copied from Azure Portal" = $GroupAdmin.Id;"Enter the object ID for GroupMember group copied from Azure Portal" = $GroupMember.Id }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - Write-Host "IMPORTANT: Please follow the instructions below to complete a few manual step(s) in the Azure portal": - Write-Host "- For client" - Write-Host " - Navigate to $clientPortalUrl" - Write-Host " - This script has created a group named 'GroupAdmin' and 'GroupMember' for you. On Azure portal, navigate to Azure AD > Groups blade and assign some users to it." -ForegroundColor Red - Write-Host " - To support overage scenario, remember to provide admin consent for GroupMember.Read.All permission in the portal." -ForegroundColor Red - Write-Host " - Security groups matching the names you provided have been created in this tenant (if not present already). On Azure portal, assign some users to it, and configure ID & Access tokens to emit Group IDs" -ForegroundColor Red - Write-Host " - Application 'client' publishes delegated permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/AppCreationScripts/sample.json b/5-AccessControl/2-call-api-groups/AppCreationScripts/sample.json deleted file mode 100644 index 821d5632..00000000 --- a/5-AccessControl/2-call-api-groups/AppCreationScripts/sample.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "Sample": { - "Title": "Angular single-page application calling a protected ASP.NET Core web API and using Security Groups to implement Role-Based Access Control", - "Level": 300, - "Client": "Angular SPA", - "Service": ".NET Core web API", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "platform": "javascript", - "Languages": [ - "typescript", - "csharp", - "javascript" - ], - "Description": "An Angular single-page application calling a protected AspNet web API and using Security Groups to implement Role-Based Access Control (RBAC)", - "products": [ - "azure-active-directory", - "ms-graph", - "msal-js", - "msal-angular", - "microsoft-identity-web" - ] - }, - "AADApps": [ - { - "Id": "client", - "Name": "msal-angular-app", - "Kind": "SinglePageApplication", - "Audience": "AzureADMyOrg", - "SDK": "MicrosoftIdentityWeb", - "HomePage": "http://localhost:4200/", - "ReplyUrls": "http://localhost:4200/, http://localhost:4200/auth", - "GroupMembershipClaims": "SecurityGroup", - "PasswordCredentials": "Auto", - "SampleSubPath": "5-AccessControl\\2-call-api-groups\\SPA", - "Scopes": ["access_via_group_assignments"], - "SecurityGroups": [ - { - "Name": "GroupAdmin", - "Description": "Admin Security Group" - }, - { - "Name": "GroupMember", - "Description": "User Security Group" - } - ], - "RequiredResourcesAccess": [ - { - "Resource": "client", - "DelegatedPermissions": ["access_via_group_assignments"] - }, - { - "Resource": "Microsoft Graph", - "DelegatedPermissions": ["User.Read", "GroupMember.Read.All"] - } - ], - "OptionalClaims": { - "IdTokenClaims": ["acct"], - "AccessTokenClaims": ["idtyp"] - }, - "ManualSteps": [ - { - "Comment": "This script has created a group named 'GroupAdmin' and 'GroupMember' for you. On Azure portal, navigate to Azure AD > Groups blade and assign some users to it." - }, - { - "Comment": "To support overage scenario, remember to provide admin consent for GroupMember.Read.All permission in the portal." - } - ] - } - ], - "CodeConfiguration": [ - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\API\\TodoListAPI\\appsettings.json", - "Mappings": [ - { - "key": "Enter the ID of your Azure AD tenant copied from the Azure portal", - "value": "$tenantId" - }, - { - "key": "Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal", - "value": "client.AppId" - }, - { - "key": "Enter the Client Secret of the 'TodoListAPI' application copied from the Azure portal", - "value": "client.AppKey" - }, - { - "key": "Enter the object ID for GroupAdmin group copied from Azure Portal", - "value": "$GroupAdmin.Id" - }, - { - "key": "Enter the object ID for GroupMember group copied from Azure Portal", - "value": "$GroupMember.Id" - } - ] - }, - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": "client.AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantId" - }, - { - "key": "Enter_the_Web_Api_Application_Id_Here", - "value": "client.AppId" - }, - { - "key": "Enter the object ID for GroupAdmin group copied from Azure Portal", - "value": "$GroupAdmin.Id" - }, - { - "key": "Enter the object ID for GroupMember group copied from Azure Portal", - "value": "$GroupMember.Id" - } - ] - } - ] -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/README.md b/5-AccessControl/2-call-api-groups/README.md deleted file mode 100644 index 16fc2f87..00000000 --- a/5-AccessControl/2-call-api-groups/README.md +++ /dev/null @@ -1,611 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates a cross-platform application suite involving an Angular single-page application (TodoListSPA) calling an ASP.NET Core web API (TodoListAPI) secured with the Microsoft identity platform. In doing so, it implements Role-based Access Control (RBAC) by using Azure AD Security Groups. -languages: - - typescript - - csharp - - javascript -products: - - azure-active-directory - - ms-graph - - msal-js - - msal-angular - - microsoft-identity-web - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-security-groups -extensions: - services: ms-identity - platform: javascript - endpoint: AAD v2.0 - level: 300 - client: Angular SPA - service: .NET Core web API ---- - -# Angular single-page application calling a protected ASP.NET Core web API and using Security Groups to implement Role-Based Access Control - -* [Overview](#overview) -* [Scenario](#scenario) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Next Steps](#next-steps) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates a cross-platform application suite involving an Angular single-page application (*TodoListSPA*) calling an ASP.NET Core web API (*TodoListAPI*) secured with the Microsoft identity platform. In doing so, it implements **Role-based Access Control** (RBAC) by using Azure AD **[Security Groups](https://learn.microsoft.com/azure/active-directory/fundamentals/how-to-manage-groups)**. - -Role based access control in Azure AD can be done with **Delegated** and **App** permissions and **App Roles** as well. We will cover RBAC using App Roles in the [previous tutorial](../1-call-api-roles/README.md). **Delegated** and **App** permissions, **Security Groups** and **App Roles** in Azure AD are by no means mutually exclusive - they can be used in tandem to provide even finer grained access control. - -In the sample, a dashboard component allows signed-in users to see the tasks assigned to them or other users based on their memberships to one of the two security groups, **GroupAdmin** and **GroupMember**. - -> :information_source: See the community call: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -> :information_source: See the community call: [Implement authorization in your applications with App roles and Security Groups with the Microsoft identity platform](https://www.youtube.com/watch?v=LRoc-na27l0) -> -## Scenario - -* The **TodoListSPA** uses [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) to authenticate a user with the Microsoft identity platform. -* The app then obtains an [access token](https://docs.microsoft.com/azure/active-directory/develop/access-tokens) from Azure Active Directory (Azure AD) on behalf of the authenticated user for the **TodoListAPI**. -* **TodoListAPI** uses [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) to protect its endpoint and accept only authorized calls. - -![Topology](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|----------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `SPA/src/app/group.guard.ts` | This service protects other components that require user to be in a group. | -| `SPA/src/app/graph.service.ts` | This service queries Microsoft Graph in case of groups overage. | -| `API/appsettings.json` | Authentication parameters for API project reside here. | -| `API/Startup.cs` | Microsoft.Identity.Web is initialized here. | -| `API/Utils/GraphHelper.cs` | Queries Microsoft Graph with Graph SDK in case groups overage occurs. | - -## Prerequisites - -* Either [Visual Studio](https://visualstudio.microsoft.com/downloads/) or [Visual Studio Code](https://code.visualstudio.com/download) and [.NET Core SDK](https://www.microsoft.com/net/learn/get-started) -* An **Azure AD** tenant. For more information, see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/test-setup-environment#get-a-test-tenant) -* A user account in your **Azure AD** tenant. This sample will not work with a **personal Microsoft account**. If you're signed in to the [Azure portal](https://portal.azure.com) with a personal Microsoft account and have not created a user account in your directory before, you will need to create one before proceeding. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console -git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 5-AccessControl/2-call-api-groups/API - dotnet restore -``` - -### Step 3. Trust development certificates - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 4. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -### Step 5: Register the sample application(s) in your tenant - -> :information_source: While there are multiple projects in this sample, we'd register just one app with Azure AD and use the registered app's *client id* in both apps. This reuse of app ids (client ids) is used when the apps themselves are just components of one larger app topology. - -There is one project in this sample. To register it, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Choose the Azure AD tenant where you want to create your applications - -To manually register the apps, as a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -#### Register the app (msal-angular-app) - -> :information_source: Below, we are using a single app registration for both SPA and web API projects. We will configure the web API to accept only the calls coming from this client SPA. - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-app`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200/` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. -1. In the app's registration screen, select the **Certificates & secrets** blade in the left to open the page where you can generate secrets and upload certificates. -1. In the **Client secrets** section, select **New client secret**: - 1. Type a key description (for instance `app secret`). - 1. Select one of the available key durations (**6 months**, **12 months** or **Custom**) as per your security posture. - 1. The generated key value will be displayed when you select the **Add** button. Copy and save the generated value for use in later steps. - 1. You'll need this key later in your code's configuration files. This key value will not be displayed again, and is not retrievable by any other means, so make sure to note it from the Azure portal before navigating to any other screen or blade. - > :bulb: For enhanced security, instead of using client secrets, consider [using certificates](https://github.com/AzureAD/microsoft-identity-web/wiki/Certificates) and [Azure KeyVault](https://azure.microsoft.com/services/key-vault/#product-overview). -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`api://{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, use `access_via_group_assignments`. - 1. Select **Admins and users** options for **Who can consent?**. - 1. For **Admin consent display name** type in *Access 'msal-angular-app' as the signed-in user assigned to group memberships*. - 1. For **Admin consent description** type in *Allow the app to access the 'msal-angular-app' as a signed-in user assigned to one or more security groups*. - 1. For **User consent display name** type in *Access 'msal-angular-app' on your behalf after security group assignment*. - 1. For **User consent description** type in *Allow the app to access the 'msal-angular-app' on your behalf after assignment to one or more security groups*. - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -> :information_source: Follow [the principle of least privilege when publishing permissions](https://learn.microsoft.com/security/zero-trust/develop/protected-api-example) for a web API. - -##### Grant Delegated Permissions to msal-angular-app - -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. -1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-angular-app`. - 1. In the **Delegated permissions** section, select **access_via_group_assignments** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - 1. Select the **Add a permission** button and then: - 1. Ensure that the **Microsoft APIs** tab is selected. - 1. In the *Commonly used Microsoft APIs* section, select **Microsoft Graph** - 1. In the **Delegated permissions** section, select **User.Read**, **GroupMember.Read.All** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -> :warning: To handle the groups overage scenario, please grant [admin consent](https://learn.microsoft.com/azure/active-directory/manage-apps/grant-admin-consent?source=recommendations#grant-admin-consent-in-app-registrations) to the Microsoft Graph **GroupMember.Read.All** [permission](https://learn.microsoft.com/graph/permissions-reference). See the section on how to [create the overage scenario for testing](#create-the-overage-scenario-for-testing) below for more. - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **ID**. - 1. Select the optional claim **acct**. - > Provides user's account status in tenant. If the user is a **member** of the tenant, the value is *0*. If they're a **guest**, the value is *1*. - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **idtyp**. - > Indicates token type. This claim is the most accurate way for an API to determine if a token is an app token or an app+user token. This is not issued in tokens issued to users. - 1. Select **Add** to save your changes. - -##### Configure the client app (msal-angular-app) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Enter the ID of your Azure AD tenant copied from the Azure portal` and replace the existing value with your Azure AD tenant/directory ID. -1. Find the key `Enter the application ID (clientId) of the 'TodoListAPI' application copied from the Azure portal` and replace the existing value with the application ID (clientId) of `msal-angular-app` app copied from the Azure portal. -1. Find the key `Enter the Client Secret of the 'TodoListAPI' application copied from the Azure portal` and replace the existing value with the key you saved during the creation of `msal-angular-app` copied from the Azure portal. - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-app` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant/directory ID. -1. Find the key `Enter_the_Web_Api_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-app` app copied from the Azure portal. - -#### Create Security Groups - -> :warning: You may already have security groups with the names defined below in your tenant and/or you may not have permissions to create new security groups. In that case, skip the steps below and update the configuration files in your project(s) with the desired names/IDs of existing groups in your tenant. - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select **Groups** blade on the left. -1. In the **Groups** blade, select **New Group**. - 1. For **Group Type**, select **Security** - 1. For **Group Name**, enter **GroupAdmin** - 1. For **Group Description**, enter **Admin Security Group** - 1. Add **Group Owners** and **Group Members** as you see fit. - 1. Select **Create**. -1. In the **Groups** blade, select **New Group**. - 1. For **Group Type**, select **Security** - 1. For **Group Name**, enter **GroupMember** - 1. For **Group Description**, enter **User Security Group** - 1. Add **Group Owners** and **Group Members** as you see fit. - 1. Select **Create**. -1. Assign the user accounts that you plan to work with to these security groups. - -For more information, visit: [Create a basic group and add members using Azure AD](https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-groups-create-azure-portal) - -#### Configure Security Groups - -You have two different options available to you on how you can further configure your application to receive the `groups` claim. - -1. [Receive **all the groups** that the signed-in user is assigned to in an Azure AD tenant, included nested groups](#configure-your-application-to-receive-all-the-groups-the-signed-in-user-is-assigned-to-including-nested-groups). -2. [Receive the **groups** claim values from a **filtered set of groups** that your application is programmed to work with](#configure-your-application-to-receive-the-groups-claim-values-from-a-filtered-set-of-groups-a-user-may-be-assigned-to) (Not available in the [Azure AD Free edition](https://azure.microsoft.com/pricing/details/active-directory/)). - -> To get the on-premise group's `samAccountName` or `On Premises Group Security Identifier` instead of Group ID, please refer to the document [Configure group claims for applications with Azure Active Directory](https://docs.microsoft.com/azure/active-directory/hybrid/how-to-connect-fed-group-claims#prerequisites-for-using-group-attributes-synchronized-from-active-directory). - -##### Configure your application to receive **all the groups** the signed-in user is assigned to, including nested groups - -1. In the app's registration screen, select the **Token Configuration** blade in the left to open the page where you can configure the claims provided tokens issued to your application. -1. Select the **Add groups claim** button on top to open the **Edit Groups Claim** screen. -1. Select `Security groups` **or** the `All groups (includes distribution lists but not groups assigned to the application)` option. Choosing both negates the effect of `Security Groups` option. -1. Under the **ID** section, select `Group ID`. This will result in Azure AD sending the [object id](https://docs.microsoft.com/graph/api/resources/group?view=graph-rest-1.0) of the groups the user is assigned to in the **groups** claim of the [ID Token](https://docs.microsoft.com/azure/active-directory/develop/id-tokens) that your app receives after signing-in a user. - -##### Configure your application to receive the `groups` claim values from a **filtered set of groups** a user may be assigned to - -###### Prerequisites, benefits and limitations of using this option - -1. This option is useful when your application is interested in a selected set of groups that a signing-in user may be assigned to and not every security group this user is assigned to in the tenant. This option also saves your application from running into the [overage](#the-groups-overage-claim) issue. -1. This feature is not available in the [Azure AD Free edition](https://azure.microsoft.com/pricing/details/active-directory/). -1. **Nested group assignments** are not available when this option is utilized. - -###### Steps to enable this option in your app - -1. In the app's registration screen, select the **Token Configuration** blade in the left to open the page where you can configure the claims provided tokens issued to your application. -1. Select the **Add groups claim** button on top to open the **Edit Groups Claim** screen. -1. Select `Groups assigned to the application`. - 1. Choosing additional options like `Security Groups` or `All groups (includes distribution lists but not groups assigned to the application)` will negate the benefits your app derives from choosing to use this option. -1. Under the **ID** section, select `Group ID`. This will result in Azure AD sending the object [id](https://docs.microsoft.com/graph/api/resources/group?view=graph-rest-1.0) of the groups the user is assigned to in the `groups` claim of the [ID Token](https://docs.microsoft.com/azure/active-directory/develop/id-tokens) that your app receives after signing-in a user. -1. If you wish to have 'groups' claims available to *Access Tokens* issued to your Web API, then you can also choose the `Group ID` option under the **Access** section. This will result in Azure AD sending the [Object ID](https://docs.microsoft.com/graph/api/resources/group?view=graph-rest-1.0) of the groups the user is assigned to in the `groups` claim of the [Access Token](https://aka.ms/access-tokens) issued to the client applications of your API. -1. In the app's registration screen, select on the **Overview** blade in the left to open the Application overview screen. Select the hyperlink with the name of your application in **Managed application in local directory** (note this field title can be truncated for instance `Managed application in ...`). When you select this link you will navigate to the **Enterprise Application Overview** page associated with the service principal for your application in the tenant where you created it. You can navigate back to the app registration page by using the *back* button of your browser. -1. Select the **Users and groups** blade in the left to open the page where you can assign users and groups to your application. - 1. Select the **Add user** button on the top row. - 1. Select **User and Groups** from the resultant screen. - 1. Choose the groups that you want to assign to this application. - 1. Click **Select** in the bottom to finish selecting the groups. - 1. Select **Assign** to finish the group assignment process. - 1. Your application will now receive these selected groups in the `groups` claim when a user signing in to your app is a member of one or more these **assigned** groups. -1. Select the **Properties** blade in the left to open the page that lists the basic properties of your application.Set the **User assignment required?** flag to **Yes**. - -> :bulb: **Important security tip** -> -> When you set **User assignment required?** to **Yes**, Azure AD will check that only users assigned to your application in the **Users and groups** blade are able to sign-in to your app.To enable this, follow the instructions [here](https://docs.microsoft.com/azure/active-directory/manage-apps/assign-user-or-group-access-portal#configure-an-application-to-require-user-assignment). You can assign users directly or by assigning security groups they belong to. - -#### Configure the app to recognize Group IDs - -> :warning: During **Token Configuration**, if you have chosen any other option except **groupID** (e.g. like **DNSDomain\sAMAccountName**) you should enter the **group name** (for example `contoso.com\Test Group`) instead of the **object ID** below: - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter the objectID for GroupAdmin group copied from Azure Portal` and replace the existing value with the **object ID** of the **GroupAdmin** group copied from the Azure portal. -1. Find the key `Enter the objectID for GroupMember group copied from Azure Portal` and replace the existing value with the **object ID** of the **GroupMember** group copied from the Azure portal. - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Enter the objectID for 'GroupAdmin' group copied from Azure Portal` and replace the existing value with the **object ID** of the **GroupAdmin** group copied from the Azure portal. -1. Find the key `Enter the objectID for 'GroupMember' group copied from Azure Portal` and replace the existing value with the **object ID** of the **GroupMember** group copied from the Azure portal. - -### Step 6: Running the sample - -Using a command line interface such as VS Code integrated terminal, locate the application directory. Then: - -```console - cd SPA - npm start -``` - -In a separate console window, execute the following commands: - -```console - cd API\TodoListAPI - dotnet run -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -2. Sign-in using the button on top-right: - -![login](./ReadmeFiles/ch1_login.png) - -1. Click on the **Get My Tasks** button to access your (the signed-in user's) todo list: - -![todolist](./ReadmeFiles/ch1_todolist.png) - -1. If the signed-in user has the right privileges (i.e. in the right "group"), click on the **See All Tasks** button to access every users' todo list: - -![dashboard](./ReadmeFiles/ch1_dashboard.png) - -1. If the signed-in user does not have the right privileges, clicking on the **See All Tasks** will give an error: - -![error](./ReadmeFiles/ch1_error.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUQ09BMkFPQ0cyWEczSEFJSVVQSVVTREw0TCQlQCN0PWcu). - -## Troubleshooting - -
    - Expand for troubleshooting info - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `dotnet` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -
    - -## About the code - -Much of the specifics of implementing **RBAC** with **Security Groups** is the same with implementing **RBAC** with **App Roles** discussed in the [previous tutorial](../1-call-api-roles/README.md). In order to avoid redundancy, here we discuss particular issues, such as **groups overage**, that might arise with using the **groups** claim. - -### The Groups Overage Claim - -To ensure that the token size doesn’t exceed HTTP header size limits, the Microsoft Identity Platform limits the number of object Ids that it includes in the **groups** claim. - -If a user is member of more groups than the overage limit (**150 for SAML tokens, 200 for JWT tokens, 6 for single-page applications using implicit flow**), then the Microsoft Identity Platform does not emit the group IDs in the `groups` claim in the token. Instead, it includes an **overage** claim in the token that indicates to the application to query the [MS Graph API](https://graph.microsoft.com) to retrieve the user’s group membership. - -> We strongly advise you use the [group filtering feature](#configure-your-application-to-receive-the-groups-claim-values-from-a-filtered-set-of-groups-a-user-may-be-assigned-to) (if possible) to avoid running into group overages. - -#### Create the Overage Scenario for testing - -1. You can use the [BulkCreateGroups.ps1](./AppCreationScripts/BulkCreateGroups.ps1) provided in the [App Creation Scripts](./AppCreationScripts/) folder to create a large number of groups and assign users to them. This will help test overage scenarios during development. You'll need to enter a user's object ID when prompted by the `BulkCreateGroups.ps1` script. If you would like to delete these groups after your testing, run the [BulkRemoveGroups.ps1](./AppCreationScripts/BulkRemoveGroups.ps1). - -> When attending to overage scenarios, which requires a call to [Microsoft Graph](https://graph.microsoft.com) to read the signed-in user's group memberships, your app will need to have the [User.Read](https://docs.microsoft.com/graph/permissions-reference#user-permissions) and [GroupMember.Read.All](https://docs.microsoft.com/graph/permissions-reference#group-permissions) for the [getMemberGroups](https://docs.microsoft.com/graph/api/user-getmembergroups) function to execute successfully. - -> :warning: For the overage scenario, make sure you have granted **Admin Consent** for the MS Graph API's **GroupMember.Read.All** scope for both the Client and the Service apps (see the **App Registration** steps above). - -##### Detecting group overage in your code by examining claims - -1. When you run this sample and an overage occurred, then you'd see the `_claim_names` in the home page after the user signs-in. -1. We strongly advise you use the [group filtering feature](#configure-your-application-to-receive-the-groups-claim-values-from-a-filtered-set-of-groups-a-user-may-be-assigned-to) (if possible) to avoid running into group overages. - -1. In case you cannot avoid running into group overage, we suggest you use the following logic to process groups claim in your token. - 1. Check for the claim `_claim_names` with one of the values being `groups`. This indicates overage. - 1. If found, make a call to the endpoint specified in `_claim_sources` to fetch user’s groups. - 1. If none found, look into the `groups` claim for user’s groups. - -> You can gain a good familiarity of programming for Microsoft Graph by going through the [An introduction to Microsoft Graph for developers](https://www.youtube.com/watch?v=EBbnpFdB92A) recorded session. - -##### Angular Group Guard - -Consider the [group.guard.ts](./SPA/src/app/group.guard.ts). Here, we are checking whether the user's ID token has the `_claim_names` claim with the value `groups`, which indicates that the user has too many group memberships. If so, we redirect the user to the [overage](./SPA/src/app/overage/overage.component.ts) component. There, we initiate a call to MS Graph API's `https://graph.microsoft.com/v1.0/me/checkMemberGroups` endpoint to query the required list of groups that the user belongs to. Finally we check for the designated group IDs among this list: - -```typescript -@Injectable() -export class GroupGuard extends BaseGuard { - -constructor( - @Inject(MSAL_GUARD_CONFIG) protected override msalGuardConfig: MsalGuardConfiguration, - protected override msalBroadcastService: MsalBroadcastService, - protected override authService: MsalService, - protected override location: Location, - protected override router: Router, - ) { - super(msalGuardConfig, msalBroadcastService, authService, location, router); - } - - override activateHelper(state?: RouterStateSnapshot, route?: ActivatedRouteSnapshot): Observable { - let result = super.activateHelper(state, route); - - const requiredGroups: string[] = route ? route.data['requiredGroups'] : []; - - return result.pipe( - concatMap(() => { - let activeAccount = this.authService.instance.getActiveAccount() as AccountWithGroupClaims; - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - activeAccount = this.authService.instance.getAllAccounts()[0] as AccountWithGroupClaims; - } - - // check either the ID token or a non-expired storage entry for the groups membership claim - if (!activeAccount?.idTokenClaims?.groups && !checkGroupsInStorage(activeAccount)) { - - if (activeAccount.idTokenClaims?._claim_names && activeAccount.idTokenClaims?._claim_names.groups) { - window.alert('You have too many group memberships. The application will now query Microsoft Graph to check if you are a member of any of the groups required.'); - return this.router.navigate(['/overage']); - } - - window.alert('Token does not have groups claim. Please ensure that your account is assigned to a security group and then sign-out and sign-in again.'); - return of(false); - } - - // code omitted for brevity... - }) - ); - } -} -``` - -In [app-routing.module.ts](./SPA/src/app/app-routing.module.ts), we add **GroupGuard** to routes we want to check for group membership: - -```typescript -const routes: Routes = [ - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - GroupGuard - ], - data: { - requiredGroups: [groups.groupMember, groups.groupAdmin] - } - }, - { - path: 'dashboard', - component: DashboardComponent, - canActivate: [ - GroupGuard, - ], - data: { - requiredGroups: [groups.groupAdmin] - } - }, - { - path: 'overage', - component: OverageComponent, - canActivate: [ - BaseGuard, - ] - }, -]; -``` - -#### .NET Core web API and how to handle the overage scenario - -1. In [Startup.cs](./API/TodoListAPI/Startup.cs), `OnTokenValidated` event calls **ProcessAnyGroupsOverage** method defined in [GraphHelper.cs](./API//TodoListAPI/Services/GraphHelper.cs) to process groups overage claim. - -```csharp -services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - { - // code omitted for brevity... - - options.Events.OnTokenValidated = async context => - { - // code omitted for brevity... - - if (context != null) - { - // Calls method to process groups overage claim (before policy checks kick-in) - await GraphHelper.ProcessAnyGroupsOverage(context, requiredGroupsIds); - } - - await Task.CompletedTask; - }; - }, options => - { - Configuration.Bind("AzureAd", options); - }, "Bearer", true) - .EnableTokenAcquisitionToCallDownstreamApi(options => Configuration.Bind("AzureAd", options)) - .AddMicrosoftGraph(Configuration.GetSection("MSGraph")) - .AddInMemoryTokenCaches(); -``` - -`AddMicrosoftGraph` registers the service for `GraphServiceClient`. The values for `BaseUrl` and `Scopes` defined in `GraphAPI` section of the **appsettings.json**. - -1. In [GraphHelper.cs](./API/TodoListAPI/Utils/GraphHelper.cs), **ProcessAnyGroupsOverage** method checks if incoming token contains the *Group Overage* claim. If so, it will call **ProcessUserGroupsForOverage** method to retrieve groups, which in turn calls the Microsoft Graph `/checkMemberGroups` endpoint. - -```csharp -public static async Task ProcessAnyGroupsOverage(TokenValidatedContext context) -{ - // Checks if the incoming token containes a groups overage claim. - if (HasOverageOccurred(context.Principal)) - { - await ProcessUserGroupsForOverage(context, requiredGroupsIds); - } -} -``` - -#### Caching user group memberships in overage scenario - -Since overaged tokens will not contain group membership IDs, yet these IDs are required for controlling access to pages and/or resources, applications have to call Microsoft Graph whenever a user action (e.g. accessing a page on the UI, accessing a todolist item in the web API etc.) takes place. These network calls are costly and will impact the application performance and user experience. As such, both the SPA and web API projects here would benefit from caching the group membership IDs once they are fetched from Microsoft Graph for the first time. By default, these are cached for **1 hour** in the sample. Cached groups will miss any changes to a users group membership for this duration. If you need more fine grained control, you can configure cache duration in [auth-config.ts](./SPA/src/app/auth-config.ts) for the SPA and in [appsettings.json](./API/TodoListAPI/appsettings.json) for the web API. If your scenario requires capturing real-time changes to a user's group membership, consider implementing [Microsoft Graph change notifications](https://learn.microsoft.com/graph/api/resources/webhooks) instead. - -##### Group authorization policy - -The ASP.NET middleware supports roles populated from claims by specifying the claim in the `RoleClaimType` property of `TokenValidationParameters`. Since the `groups` claim contains the object IDs of the security groups than the actual names by default, you'd use the group IDs instead of group names. See [Role-based authorization in ASP.NET Core](https://docs.microsoft.com/aspnet/core/security/authorization/roles) for more info. See [Startup.cs](./API/TodoListAPI/Startup.cs) for more. - -```csharp -// The following lines code instruct the asp.net core middleware to use the data in the "groups" claim in the [Authorize] attribute and for User.IsInrole() - -// See https://docs.microsoft.com/aspnet/core/security/authorization/roles -services.Configure(OpenIdConnectDefaults.AuthenticationScheme, options => -{ - // Use the groups claim for populating roles - options.TokenValidationParameters.RoleClaimType = "groups"; -}); - -// Adding authorization policies that enforce authorization using Azure AD roles. -services.AddAuthorization(options => -{ - options.AddPolicy(AuthorizationPolicies.AssignmentToGroupMemberGroupRequired, policy => policy.RequireRole(Configuration["AzureAd:Groups:GroupMember"], Configuration["AzureAd:Groups:GroupAdmin"])); - options.AddPolicy(AuthorizationPolicies.AssignmentToGroupAdminGroupRequired, policy => policy.RequireRole(Configuration["AzureAd:Groups:GroupAdmin"])); -}); -``` - -These policies can be used in controllers as shown below: - -```csharp -// GET: api/todolist/getAll -[HttpGet] -[Route("getAll")] -[RequiredScope(RequiredScopesConfigurationKey = "AzureAd:Scopes")] -[Authorize(Policy = AuthorizationPolicies.AssignmentToGroupAdminGroupRequired)] -public async Task>> GetAll() -{ - return await _context.TodoItems.ToListAsync(); -} -``` - -## Next Steps - -Learn how to [Protect and call an API using App Roles](../../5-AccessControl/1-call-api-roles/README.md). - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -* [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) -* [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -* [Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -* [Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -* [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -* [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -* [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals) -* [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) - -* [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) diff --git a/5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_dashboard.png b/5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_dashboard.png deleted file mode 100644 index 2fce6cd2f7468dd1e8f678a83f092a88ac4d6e4c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18926 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 diff --git a/5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_error.png b/5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_error.png deleted file mode 100644 index 0844ab8b686a8ed9923bab85441d212ad27ae517..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33872 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�!hzu!0N7Pkf2ZW|pH8z7+c7En=&2q*}V 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 T1jfK52bo{Dx`w@a@7aF?6%iqB diff --git a/5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_login.png b/5-AccessControl/2-call-api-groups/ReadmeFiles/ch1_login.png deleted file mode 100644 index 4c18dbce8a4318e3fc9a3e550f9bc8bfba2f13db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30069 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 diff --git a/5-AccessControl/2-call-api-groups/ReadmeFiles/topology.png b/5-AccessControl/2-call-api-groups/ReadmeFiles/topology.png deleted file mode 100644 index 6abec2db4ba34f11a0ba683c6f57783a162a1a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26517 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 C6uvhA diff --git a/5-AccessControl/2-call-api-groups/SPA/angular.json b/5-AccessControl/2-call-api-groups/SPA/angular.json deleted file mode 100644 index 8d2fb7c3..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/angular.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "SPA": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/spa", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "SPA:build:production" - }, - "development": { - "browserTarget": "SPA:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "SPA:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - } - } - } - } - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/karma.conf.js b/5-AccessControl/2-call-api-groups/SPA/karma.conf.js deleted file mode 100644 index af0f20e5..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/karma.conf.js +++ /dev/null @@ -1,50 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/spa'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/5-AccessControl/2-call-api-groups/SPA/package-lock.json b/5-AccessControl/2-call-api-groups/SPA/package-lock.json deleted file mode 100644 index 214004d4..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/package-lock.json +++ /dev/null @@ -1,9506 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@ampproject/remapping": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.1.0", - "@jridgewell/trace-mapping": "^0.3.9" - } - }, - "@angular-devkit/architect": { - "version": "0.1400.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.5.tgz", - "integrity": "sha512-A5sRLPK3qGJAehYtX4ayUDwxQZ02yvsrxcpf3sv492IxbF7ymdMhcxIp+0UG6wIsLvpQkpW9ekJUdKmFB6GVAw==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "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.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-angular/-/build-angular-14.1.0.tgz", - "integrity": "sha512-AtecSuDEPLYd3p7uFVKpoA0XNcq+NvVYFJK8h90BG+IRZtzEm7ZJeYdohXVeVfTO5GvpNFN1XoHxR5rxiXeBhg==", - "dev": true, - "requires": { - "@ampproject/remapping": "2.2.0", - "@angular-devkit/architect": "0.1401.0", - "@angular-devkit/build-webpack": "0.1401.0", - "@angular-devkit/core": "14.1.0", - "@babel/core": "7.18.6", - "@babel/generator": "7.18.7", - "@babel/helper-annotate-as-pure": "7.18.6", - "@babel/plugin-proposal-async-generator-functions": "7.18.6", - "@babel/plugin-transform-async-to-generator": "7.18.6", - "@babel/plugin-transform-runtime": "7.18.6", - "@babel/preset-env": "7.18.6", - "@babel/runtime": "7.18.6", - "@babel/template": "7.18.6", - "@discoveryjs/json-ext": "0.5.7", - "@ngtools/webpack": "14.1.0", - "ansi-colors": "4.1.3", - "babel-loader": "8.2.5", - "babel-plugin-istanbul": "6.1.1", - "browserslist": "^4.9.1", - "cacache": "16.1.1", - "copy-webpack-plugin": "11.0.0", - "critters": "0.0.16", - "css-loader": "6.7.1", - "esbuild": "0.14.49", - "esbuild-wasm": "0.14.49", - "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.0", - "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.14", - "postcss-import": "14.1.0", - "postcss-loader": "7.0.1", - "postcss-preset-env": "7.7.2", - "regenerator-runtime": "0.13.9", - "resolve-url-loader": "5.0.0", - "rxjs": "6.6.7", - "sass": "1.53.0", - "sass-loader": "13.0.2", - "semver": "7.3.7", - "source-map-loader": "4.0.0", - "source-map-support": "0.5.21", - "stylus": "0.58.1", - "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.73.0", - "webpack-dev-middleware": "5.3.3", - "webpack-dev-server": "4.9.3", - "webpack-merge": "5.8.0", - "webpack-subresource-integrity": "5.1.0" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.0", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", - "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" - } - }, - "@babel/core": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.18.6.tgz", - "integrity": "sha512-cQbWBpxcbbs/IUredIPkHiAGULLV8iwgNRMFzvbhEXISp4f3rUUXE5+TIw6KwUWUR3DwyI6gmBRnmAtYaWehwQ==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helpers": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.2.1", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@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" - } - }, - "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 - }, - "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "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" - } - }, - "esbuild": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.49.tgz", - "integrity": "sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==", - "dev": true, - "optional": true, - "requires": { - "esbuild-android-64": "0.14.49", - "esbuild-android-arm64": "0.14.49", - "esbuild-darwin-64": "0.14.49", - "esbuild-darwin-arm64": "0.14.49", - "esbuild-freebsd-64": "0.14.49", - "esbuild-freebsd-arm64": "0.14.49", - "esbuild-linux-32": "0.14.49", - "esbuild-linux-64": "0.14.49", - "esbuild-linux-arm": "0.14.49", - "esbuild-linux-arm64": "0.14.49", - "esbuild-linux-mips64le": "0.14.49", - "esbuild-linux-ppc64le": "0.14.49", - "esbuild-linux-riscv64": "0.14.49", - "esbuild-linux-s390x": "0.14.49", - "esbuild-netbsd-64": "0.14.49", - "esbuild-openbsd-64": "0.14.49", - "esbuild-sunos-64": "0.14.49", - "esbuild-windows-32": "0.14.49", - "esbuild-windows-64": "0.14.49", - "esbuild-windows-arm64": "0.14.49" - } - }, - "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" - } - }, - "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 - }, - "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", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "dev": true, - "requires": { - "tslib": "^1.9.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 - } - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, - "@angular-devkit/build-webpack": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-webpack/-/build-webpack-0.1401.0.tgz", - "integrity": "sha512-jKfnHal09mVnEapmNrAHXL/00LfafmfEUtlOPzQMgGJL7MWCeMcFthsbcOnGuzUerbiiquRk/KmLTERYjH+ZrQ==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1401.0", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1401.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1401.0.tgz", - "integrity": "sha512-dHgP2/5EXkJpdf6Y1QHQX2RP8xTli/CFZH3uNnTh+EuAib/kwu+Z6K3UttZWB5VGhAF1u/xf97Vly/UkXvjKAg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.1.0", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.1.0.tgz", - "integrity": "sha512-Y2d/+nFmjjY4eatc3cwdDDAnpnhG3KTX2OVW7dXSUxW3eY5e3vdMlVUbFiKwvwAshlrJy85Y6RMvZSBN4VrpnA==", - "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" - } - }, - "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 - }, - "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" - } - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "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 - } - } - }, - "@angular-devkit/core": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.5.tgz", - "integrity": "sha512-/CUGi6QLwh79FvsOY7M+1LQL3asZsbQW/WBd5f1iu5y7TLNqCwo+wOb0ZXLDNPw45vYBxFajtt3ob3U7qx3jNg==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/schematics": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.5.tgz", - "integrity": "sha512-sufxITBkn2MvgEREt9JQ3QCKHS+sue1WsVzLE+TWqG5MC/RPk0f9tQ5VoHk6ZTzDKUvOtSoc7G+n0RscQsyp5g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "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/animations": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.0.4.tgz", - "integrity": "sha512-+Qe+wLA0DOHlOdFRQSEJoenhFm5zcKwkDItqAFT5NVYOT04yxXq8NFRIHSbqn468qR70EkX514lKi6pr6nxGYQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/cdk": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-14.0.4.tgz", - "integrity": "sha512-zPM4VZadoKzTF9TZ7Yx5gJ7GtQpt62f8ofdH/BF2atG+TaNzOEFqtzogP4WuJDFAxJXOPMePobhth4YjUk0Wbw==", - "requires": { - "parse5": "^5.0.0", - "tslib": "^2.3.0" - }, - "dependencies": { - "parse5": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - } - } - }, - "@angular/cli": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.5.tgz", - "integrity": "sha512-/Iqvy3vRqakHdxNi+Qo18xXQr8E1cCaKzMBnxR2wHNdlu1lyaw0p20E8LumoueXCrs+/SK6aKDvN6ek0R/q8Jg==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1400.5", - "@angular-devkit/core": "14.0.5", - "@angular-devkit/schematics": "14.0.5", - "@schematics/angular": "14.0.5", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.1" - } - }, - "@angular/common": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.0.4.tgz", - "integrity": "sha512-CvlFa2lCxen0LB3N45IzZDdMIqpcasXfVUhiAkLxZgT+kSTunc/rg8hMoLHVfmFpkQKCQmPVyuzNXnSwIFhYkQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.0.4.tgz", - "integrity": "sha512-WdRpZFTX2vt71sSfQ89C1K5l2zhYtn8ON+ZlAVxyZ5uT0nA/Z/vuMLfNZB1WmcGVDOc7JmQduSiSaI0hhQqXqw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.0.4.tgz", - "integrity": "sha512-j3T0dOwNov6rKcaxLMSlPLRvrBT6MyBTum18x6XvZRqb75RUAJ/yV+PXgtA//XZ2hjuy87+CvZy3tBKktvY7bA==", - "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" - } - }, - "@angular/core": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.0.4.tgz", - "integrity": "sha512-uMS/X+/5RokF3uiiD1IAr6Ha9k7QPegHrAB3QW0x6WRUTMq0K+08F+AeF5COmbfYMMaxofD6x8XmM+BLeg/0hw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.0.4.tgz", - "integrity": "sha512-u/9y09WQ00y6BQeNo69hMa/Fx+xKHGnmcjMtS3xkZtmoCP+A0ebumG0Y9DfXs2olJY2//O5di7Qu3fwlBg+3Cw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/material": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-14.0.4.tgz", - "integrity": "sha512-Ysz6oPbpLH7CvRR6oxQwpUImSbFqxL4+eiH0LPc7vkaOSrvGdZ/7cWhAfT6hVnw3bEY+eq5qBSMgyVUB44z4eg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.0.4.tgz", - "integrity": "sha512-VFeFpQ+248m8GiCqcsHwH4PET7tR1cyXnhsep1EeI4MDaO+aIbsUcESqXzMm5+ChOmNyiCtLQu8QvfHZK0uDVA==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.0.4.tgz", - "integrity": "sha512-snVbAKfnBuCUMgop6ln111B/ouMnDR1ZzMzpiKefdJDGUvASCLbR8XAioY+zXUI82QbNg5masUPia1Fy+yTvGw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.0.4", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.0.4.tgz", - "integrity": "sha512-aqtOjIjVNtWbpedDdni0yGfGR6sEb8S3jJB9jf43ththmHKxAlW7PKP2NgEmx0uJ2xY2iGET7Gkpl8RBwvoHgQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.3.tgz", - "integrity": "sha512-0D16cKV2FN3C8nEH0aXvJJF9FnSQ4f3oefoWa15PrpuGon6sAGvTHJbwwUoB+vB4e7YlB4x+R4pcyGRxPm08Jg==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.28.3", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.28.3.tgz", - "integrity": "sha512-2SdyH2el3s8BzPURf9RK17BvvXvaMEGpLc3D9WilZcmjJqP4nStVH7Ogwr/SNTuGV48FUhqEkP0RxDvzuFJSIw==", - "requires": { - "@azure/msal-common": "^7.4.1" - } - }, - "@azure/msal-common": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-7.4.1.tgz", - "integrity": "sha512-zxcxg9pRdgGTS5mrRJeQvwA8aIjD8qSGzaAiz5SeTVkyhtjB0AeFnAcvBOKHv/TkswWNfYKpERxsXOAKXkXk0w==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.6.tgz", - "integrity": "sha512-tzulrgDT0QD6U7BJ4TKVk2SDDg7wlP39P9yAx1RfLy7vP/7rsDRlWVfbWxElslu56+r7QOhB2NSDsabYYruoZQ==", - "dev": true - }, - "@babel/core": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.10.tgz", - "integrity": "sha512-liKoppandF3ZcBnIYFjfSDHZLKdLHGJRkoWtG8zQyGJBQfIYobpnVGI5+pLBNtS6psFLDzyq8+h5HiVljW9PNA==", - "dev": true, - "requires": { - "@ampproject/remapping": "^2.1.0", - "@babel/code-frame": "^7.16.7", - "@babel/generator": "^7.17.10", - "@babel/helper-compilation-targets": "^7.17.10", - "@babel/helper-module-transforms": "^7.17.7", - "@babel/helpers": "^7.17.9", - "@babel/parser": "^7.17.10", - "@babel/template": "^7.16.7", - "@babel/traverse": "^7.17.10", - "@babel/types": "^7.17.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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.17.10", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.10.tgz", - "integrity": "sha512-46MJZZo9y3o4kmhBVc7zW7i8dtR1oIK/sdO5NcfcZRhTGYi+KKJRtHNgsU6c4VUcJmUNV/LQdebD/9Dlv4K+Tg==", - "dev": true, - "requires": { - "@babel/types": "^7.17.10", - "@jridgewell/gen-mapping": "^0.1.0", - "jsesc": "^2.5.1" - } - }, - "@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" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.6.tgz", - "integrity": "sha512-vFjbfhNCzqdeAtZflUFrG5YIFqGTqsctrtkZ1D/NB0mDW9TwW3GmmUepYY4G9wCET5rY5ugz4OGTcLd614IzQg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.18.9.tgz", - "integrity": "sha512-WvypNAYaVh23QcjpMR24CwZY2Nz6hqdOcFdPbNpV56hL5H6KiFheO7Xm1aPdlLQ7d5emYZX7VZwPp9x3z+2opw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-member-expression-to-functions": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-create-regexp-features-plugin": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.18.6.tgz", - "integrity": "sha512-7LcpH1wnQLGrI+4v+nPp+zUvIkF9x0ddv1Hkdue10tg3gmRnLy97DXh4STiOf1qeIInyD69Qv5kKSZzKD8B/7A==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@babel/helper-define-polyfill-provider": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.1.tgz", - "integrity": "sha512-J9hGMpJQmtWmj46B3kBHmL38UhJGhYX7eqkcq+2gsstyYt341HmPeWspihX43yVRA0mS+8GGk2Gckc7bY/HCmA==", - "dev": true, - "requires": { - "@babel/helper-compilation-targets": "^7.13.0", - "@babel/helper-module-imports": "^7.12.13", - "@babel/helper-plugin-utils": "^7.13.0", - "@babel/traverse": "^7.13.0", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2", - "semver": "^6.1.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.6.tgz", - "integrity": "sha512-8n6gSfn2baOY+qlp+VSzsosjCVGFqWKmDF0cCWOybh52Dw3SEyoWR1KrhMJASjLwIEkkAufZ0xvr+SxLHSpy2Q==", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.6.tgz", - "integrity": "sha512-0mWMxV1aC97dhjCah5U5Ua7668r5ZmSC2DLfH2EZnf9c3/dHZKiFa5pRLMH5tjSl471tY6496ZWk/kjNONBxhw==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-module-imports": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.6.tgz", - "integrity": "sha512-L//phhB4al5uucwzlimruukHB3jRd5JGClwRMD/ROrVjXfLqovYnvQrK/JK36WYyVwGGO7OD3kMyVTjx+WVPhw==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.18.9.tgz", - "integrity": "sha512-aBXPT3bmtLryXaoJLyYPXPlSD4p1ld9aYeR+sJNOZjJJGiOpb+fKfh3NkcCu7J54nUJwCERPBExCCpyCOHnu/w==", - "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" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-replace-supers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.18.9.tgz", - "integrity": "sha512-dNsWibVI4lNT6HiuOIBr1oyxo40HvIVmbwPUm3XZ7wMh4k2WxrxTqZwSqw/eEmXDS9np0ey5M2bz9tBmO9c+YQ==", - "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.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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-simple-access": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.18.6.tgz", - "integrity": "sha512-iNpIgTgyAvDQpDj76POqg+YEt8fPxx3yaNBg3S30dxNKm2SWfYhD0TGrK/Eu9wHpUW63VQU894TsTg+GLbUa1g==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.18.9.tgz", - "integrity": "sha512-imytd2gHi3cJPsybLRbmFrF7u5BIEuI2cNheyKi3/iOBC63kNn3q8Crn2xVuESli0aM4KYsyEqKyS7lFL8YVtw==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - } - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz", - "integrity": "sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.18.9.tgz", - "integrity": "sha512-cG2ru3TRAL6a60tfQflpEfs4ldiPwF6YW3zfJiRgmoFVIaC1vGnBBgatfec+ZUziPHkHSaXAuEck3Cdkf3eRpQ==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.18.9", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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/helpers": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.18.6.tgz", - "integrity": "sha512-vzSiiqbQOghPngUYt/zWGvK3LAsPhz55vc9XNN0xAl2gV4ieShI2OQli5duxWHD+72PZPTKAcfcZDE1Cwc5zsQ==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.6", - "@babel/types": "^7.18.6" - }, - "dependencies": { - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - } - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.6.tgz", - "integrity": "sha512-uQVSa9jJUe/G/304lXspfWVpKpK4euFLgGiMQFOCpM/bgcAdeoHwi/OQz23O9GK2osz26ZiXRRV9aV+Yl1O8tw==", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.18.6.tgz", - "integrity": "sha512-WAz4R9bvozx4qwf74M+sfqPMKfSqwM0phxPTR6iJIi8robgzXwkEgmeJG1gEKhm6sDqT/U9aV3lfcqybIpev8w==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-remap-async-to-generator": "^7.18.6", - "@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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.18.9.tgz", - "integrity": "sha512-kDDHQ5rflIeY5xl69CEqGEZ0KY369ehsCIEbTGb4siHG5BE9sga/T0r0OUwyZNLMmZE79E1kbsqAjwFCW4ds6Q==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-compilation-targets": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.18.8" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-import-assertions": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.18.6.tgz", - "integrity": "sha512-/DU3RXad9+bZwrgWJQKbr39gYbJpLJHezqEzRzi/BHRlJ9zsQb4CK2CA/5apllXNomwA1qHwzvHl+AdEmC5krQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.18.9.tgz", - "integrity": "sha512-5sDIJRV1KtQVEbt/EIBwGy4T01uYIo4KRB3VUqzkhrAIOGx7AoctL9+Ux88btY0zXdDyPJ9mW+bg+v+XEkGmtw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@babel/plugin-transform-classes": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.18.9.tgz", - "integrity": "sha512-EkRQxsxoytpTlKJmSPYrsOMjCILacAjtSVkd4gChEe2kXjFCun3yohhW5I7plXJhCemM0gKsaGMcO8tinvCA5g==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-optimise-call-expression": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-replace-supers": "^7.18.9", - "@babel/helper-split-export-declaration": "^7.18.6", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.18.9.tgz", - "integrity": "sha512-p5VCYNddPLkZTq4XymQIaIfZNJwT9YsjkPOhkVEqt6QIpQFZVM9IltqqYpOEkJoN1DPznmxUDyZ5CTZs/ZCuHA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9" - } - }, - "@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" - }, - "dependencies": { - "@babel/compat-data": { - "version": "7.18.8", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.18.8.tgz", - "integrity": "sha512-HSmX4WZPPK3FUxYp7g2T6EyO8j96HlZJlxmKPSh6KAcqwyDrfx7hKjXpAW/0FhFfTJsR0Yt4lAjLI2coMptIHQ==", - "dev": true - }, - "@babel/helper-compilation-targets": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.18.9.tgz", - "integrity": "sha512-tzLCyVmqUiFlcFoAPLA/gL9TeYrF61VLNtb+hvkuVaB5SUjW7jcfrglBIX1vUIoT7CLP3bBlIMeyEsIl2eFQNg==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.8", - "@babel/helper-validator-option": "^7.18.6", - "browserslist": "^4.20.2", - "semver": "^6.3.0" - } - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "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-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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.18.6.tgz", - "integrity": "sha512-Pra5aXsmTsOnjM3IajS8rTaLCy++nGM4v3YR4esk5PCsyg9z8NA5oQLwxzMUtDBd8F+UmVza3VxoAaWCbzH1rg==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-commonjs": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.18.6.tgz", - "integrity": "sha512-Qfv2ZOWikpvmedXQJDSbxNqy7Xr/j2Y8/KfijM0iJyKkBTmWuvCA1yeH1yDM7NJhBW/2aXxeucLj6i80/LAJ/Q==", - "dev": true, - "requires": { - "@babel/helper-module-transforms": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - } - }, - "@babel/plugin-transform-modules-systemjs": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.18.9.tgz", - "integrity": "sha512-zY/VSIbbqtoRoJKo2cDTewL364jSlZGvn0LKOf9ntbfxOvjfmyrdtEEOAdswOswhZEb8UH3jDkCKHd1sPgsS0A==", - "dev": true, - "requires": { - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-module-transforms": "^7.18.9", - "@babel/helper-plugin-utils": "^7.18.9", - "@babel/helper-validator-identifier": "^7.18.6", - "babel-plugin-dynamic-import-node": "^2.3.3" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.9.tgz", - "integrity": "sha512-wt5Naw6lJrL1/SGkipMiFxJjtyczUWTP38deiP1PO60HsBjDeKk08CGC3S8iVuvf0FmTdgKwU1KIXzSKL1G0Ug==", - "dev": true, - "requires": { - "@babel/types": "^7.18.9", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@babel/helper-environment-visitor": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true - }, - "@babel/helper-function-name": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz", - "integrity": "sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A==", - "dev": true, - "requires": { - "@babel/template": "^7.18.6", - "@babel/types": "^7.18.9" - } - }, - "@babel/helper-module-transforms": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.18.9.tgz", - "integrity": "sha512-KYNqY0ICwfv19b31XzvmI/mfcylOzbLtowkw+mfvGPAQ3kfCnMLYbED3YecL5tPd8nAYFQFAd6JHp2LxZk/J1g==", - "dev": true, - "requires": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-simple-access": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/helper-validator-identifier": "^7.18.6", - "@babel/template": "^7.18.6", - "@babel/traverse": "^7.18.9", - "@babel/types": "^7.18.9" - } - }, - "@babel/template": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.6.tgz", - "integrity": "sha512-JoDWzPe+wgBsTTgdnIma3iHNFC7YVJoPssVBDjiHfNlyt4YcunDtcDOUmfVDfCK5MfdsaIoX9PkijPhjH3nYUw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6" - } - }, - "@babel/traverse": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.9.tgz", - "integrity": "sha512-LcPAnujXGwBgv3/WHv01pHtb2tihcyW1XuL9wd7jqh1Z8AQkTd+QVjMrMijrln0T7ED3UXLIy36P9Ao7W75rYg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.9", - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-function-name": "^7.18.9", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.9", - "@babel/types": "^7.18.9", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/parser": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.18.9.tgz", - "integrity": "sha512-9uJveS9eY9DJ0t64YbIBZICtJy8a5QrDEVdiLCG97fVLpDTpGX7t8mMSb6OWw6Lrnjqj4O8zwjELX3dhoMgiBg==", - "dev": true - } - } - }, - "@babel/types": { - "version": "7.18.9", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.9.tgz", - "integrity": "sha512-WwMLAg2MvJmt/rKEVQBBhIVffMmnilX4oe0sRe7iPOHIGsqpruFHHdrfj4O1CMMtgMtCU4oPafZjDPCRgO57Wg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@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/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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.18.6.tgz", - "integrity": "sha512-UmEOGF8XgaIqD74bC8g7iV3RYj8lMf0Bw7NJzvnS9qQhM4mg+1WHKotUIdjxgD2RGrgFLZZPCFPFj3P/kVDYhg==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.18.8.tgz", - "integrity": "sha512-ivfbE3X2Ss+Fj8nnXvKJS6sjRG4gzwPMsP+taZC+ZzEGjAYlvENixmt1sZ5Ca6tWls+BlKSGKPJ6OOXvXCbkFg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.18.6.tgz", - "integrity": "sha512-8uRHk9ZmRSnWqUgyae249EJZ94b0yAGLBIqzZzl+0iEdbno55Pmlt/32JZsHwXD9k/uZj18Aqqk35wBX4CBTXA==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.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/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.18.9", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.18.9.tgz", - "integrity": "sha512-39Q814wyoOPtIB/qGopNIL9xDChOE1pNU0ZY5dO0owhiVt/5kFm4li+/bBtwc7QotG0u5EPzqhZdjMtmqBqyQA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.9", - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.6.tgz", - "integrity": "sha512-XNRwQUXYMP7VLuy54cr/KS/WeL3AZeORhrmeZ7iewgu+X2eBqmpaLI/hzqr9ZxCeUoq0ASK4GUzSM0BDhZkLFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6" - } - }, - "@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.6", - "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.18.6.tgz", - "integrity": "sha512-WrthhuIIYKrEFAwttYzgRNQ5hULGmwTj+D6l7Zdfsv5M7IWV/OZbUfbeL++Qrzx1nVJwWROIFhCHRYQV4xbPNw==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.18.6", - "@babel/helper-compilation-targets": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-async-generator-functions": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-json-strings": "^7.18.6", - "@babel/plugin-proposal-logical-assignment-operators": "^7.18.6", - "@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.6", - "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", - "@babel/plugin-proposal-optional-chaining": "^7.18.6", - "@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.6", - "@babel/plugin-transform-classes": "^7.18.6", - "@babel/plugin-transform-computed-properties": "^7.18.6", - "@babel/plugin-transform-destructuring": "^7.18.6", - "@babel/plugin-transform-dotall-regex": "^7.18.6", - "@babel/plugin-transform-duplicate-keys": "^7.18.6", - "@babel/plugin-transform-exponentiation-operator": "^7.18.6", - "@babel/plugin-transform-for-of": "^7.18.6", - "@babel/plugin-transform-function-name": "^7.18.6", - "@babel/plugin-transform-literals": "^7.18.6", - "@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.6", - "@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.6", - "@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.6", - "@babel/plugin-transform-sticky-regex": "^7.18.6", - "@babel/plugin-transform-template-literals": "^7.18.6", - "@babel/plugin-transform-typeof-symbol": "^7.18.6", - "@babel/plugin-transform-unicode-escapes": "^7.18.6", - "@babel/plugin-transform-unicode-regex": "^7.18.6", - "@babel/preset-modules": "^0.1.5", - "@babel/types": "^7.18.6", - "babel-plugin-polyfill-corejs2": "^0.3.1", - "babel-plugin-polyfill-corejs3": "^0.5.2", - "babel-plugin-polyfill-regenerator": "^0.3.1", - "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.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.6.tgz", - "integrity": "sha512-t9wi7/AW6XtKahAe20Yw0/mMljKq0B1r2fPdvaAdV/KPDZewFXdaaa6K7lxmZBZ8FBNpCiAT6iHPmd6QO9bKfQ==", - "requires": { - "regenerator-runtime": "^0.13.4" - } - }, - "@babel/template": { - "version": "7.16.7", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", - "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.16.7", - "@babel/parser": "^7.16.7", - "@babel/types": "^7.16.7" - } - }, - "@babel/traverse": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.18.6.tgz", - "integrity": "sha512-zS/OKyqmD7lslOtFqbscH6gMLFYOfG1YPqCKfAW5KrTeolKqvB8UelR49Fpr6y93kYkW2Ik00mT1LOGiAGvizw==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.18.6", - "@babel/helper-environment-visitor": "^7.18.6", - "@babel/helper-function-name": "^7.18.6", - "@babel/helper-hoist-variables": "^7.18.6", - "@babel/helper-split-export-declaration": "^7.18.6", - "@babel/parser": "^7.18.6", - "@babel/types": "^7.18.6", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.18.7.tgz", - "integrity": "sha512-shck+7VLlY72a2w9c3zYWuE1pwOKEiQHV7GTUbSnhyl5eu3i04t30tBY82ZRWrDfo3gkakCFtevExnxbkf2a3A==", - "dev": true, - "requires": { - "@babel/types": "^7.18.7", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@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/types": { - "version": "7.18.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.18.7.tgz", - "integrity": "sha512-QG3yxTcTIBoAcQmkCs+wAPYZhu7Dk9rXKacINfNbdJDNERTbLQbHGyVG8q/YGMPeCJRIhSY0+fTc5+xuh6WPSQ==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@csstools/postcss-cascade-layers": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@csstools/postcss-cascade-layers/-/postcss-cascade-layers-1.0.5.tgz", - "integrity": "sha512-Id/9wBT7FkgFzdEpiEWrsVd4ltDxN0rI0QS0SChbeQiSuux3z21SJCRLu6h2cvCEUmaRi+VD0mHFj+GJD4GFnw==", - "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-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-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 - }, - "@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 - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.14", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.14.tgz", - "integrity": "sha512-bJWEfQ9lPTvm3SneWwRFVLzrh6nhjwqw7TUFFBEMzwvg7t7PCDenf2lDwqo4NQXzdpgBXyFgDWnQA+2vkruksQ==", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@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 - }, - "@microsoft/microsoft-graph-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-client/-/microsoft-graph-client-3.0.2.tgz", - "integrity": "sha512-eYDiApYmiGsm1s1jfAa/rhB2xQCsX4pWt0vCTd1LZmiApMQfT/c0hXj2hvpuGz5GrcLdugbu05xB79rIV57Pjw==", - "requires": { - "@babel/runtime": "^7.12.5", - "tslib": "^2.2.0" - } - }, - "@microsoft/microsoft-graph-types": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.25.0.tgz", - "integrity": "sha512-H/HK4MsRJ1H+G/HwbU/z225BKwzoMU3fawD8xivGxDgyGIDzdZf07Ruz/wPSM+tSJJin/swz3TwFllxveduG8Q==", - "dev": true - }, - "@ngtools/webpack": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-14.1.0.tgz", - "integrity": "sha512-d4U6ymDCXckVgfjYEv1Wjzd78ZSm0NKgq8mN6FdlrCupg02LPIODjeKyNr4c4zwMAOJeHkVNEZ+USoDEK3XSsw==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "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.0", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.0.tgz", - "integrity": "sha512-DmfBvNXGaetMxj9LTp8NAN9vEidXURrf5ZTslQzEAi/6GbW+4yjaLFQc6Tue5cpZ9Frlk4OBo/Snf1Bh/S7qTQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" - } - }, - "@npmcli/git": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@npmcli/git/-/git-3.0.1.tgz", - "integrity": "sha512-UU85F/T+F1oVn3IsB/L6k9zXIMpXBuUBE25QDH0SsURwT6IOBqkC7M16uqo2vVZIyji3X1K4XH9luip7YekH1A==", - "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": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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.0", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.0.tgz", - "integrity": "sha512-UR6D5f4KEGWJV6BGPH3Qb2EtgH+t+1XQ1Tt85c7qicN6cezzuHPdZwwAxqZr4JLtnQu0LZsTza/5gmNmSl8XLg==", - "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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@schematics/angular": { - "version": "14.0.5", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.5.tgz", - "integrity": "sha512-xZjXHLn1djIvKJFiOfspTrzAomtDGRqGgsOo06glBkC+cqKCyyXU1Hgxnd3S5V+8a6TpYgX25AXihtE3BeCJzg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.5", - "@angular-devkit/schematics": "14.0.5", - "jsonc-parser": "3.0.0" - } - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@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/component-emitter": { - "version": "1.2.11", - "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", - "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.5", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.5.tgz", - "integrity": "sha512-dhsC09y1gpJWnK+Ff4SGvCuSnk9DaU0BJZSzOwa6GVSg65XtTugLBITDAAzRU5duGBoXBHpdR/9jHGxJjNflJQ==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.13", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.13.tgz", - "integrity": "sha512-6bSZTPaTIACxn48l50SR+axgrqm6qXFIxrdAKaG6PaJk3+zuUr35hBlgT7vOmJcum+OEaIBLtHV/qloEAFITeA==", - "dev": true, - "requires": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.18", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "@types/express-serve-static-core": { - "version": "4.17.29", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.29.tgz", - "integrity": "sha512-uMd++6dMKS32EOuw1Uli3e3BPgdLIXmezcfHv7N4c1s3gkhikBplORPpMq3fuWkxncZN1reb16d5n8yhQ80x7Q==", - "dev": true, - "requires": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*" - } - }, - "@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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.2.tgz", - "integrity": "sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==", - "dev": true - }, - "@types/node": { - "version": "18.0.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.0.3.tgz", - "integrity": "sha512-HzNRZtp4eepNitP+BD6k2L6DROIDG4Q0fm4x+dwfsr6LGmROENnok75VGw40628xf+iR24WeMFcHuuBDUAzzsQ==", - "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/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/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "sha512-d/Hs3nWDxNL2xAczmOVZNj92YZCS6RGxfBPjKzuu/XirCgXdpKEb88dYNbrYGint6IVWLNP+yonwVAuRC0T2Dg==", - "dev": true, - "requires": { - "@types/express": "*" - } - }, - "@types/serve-static": { - "version": "1.13.10", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.13.10.tgz", - "integrity": "sha512-nCkHGI4w7ZgAdNkrEu0bv+4xNV/XDqW+DydknebMOQwkpDGx8G+HTlj7R7ABI8i8nKxVw0wtKPi1D+lPOkh4YQ==", - "dev": true, - "requires": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "@types/sockjs": { - "version": "0.3.33", - "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.33.tgz", - "integrity": "sha512-f0KEEe05NvUnat+boPTZ0dgaLZ4SfSouXUgv5noUiefG2ajgKjmETo9ZJyuqsl7dfl2aHlLJUiki6B4ZYldiiw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.0.tgz", - "integrity": "sha512-QOxyigPVrpZ2GXT+PFyZTl6TtOFc5egxHIP9IlQ+RbupQuX4RkT/Bee4/kQuC02Xkzg84JcT7oLYtDIQxp+v7w==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.0.tgz", - "integrity": "sha512-0GWpv50YSOcLXaN6/FAKY3vfRbllXWV2xvfA/oKJF8pzFhWXPV+yjhJXDBbjscDYowv7Yw1A3uigpzn5iEGTyw==", - "dev": true, - "requires": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "autoprefixer": { - "version": "10.4.7", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.7.tgz", - "integrity": "sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==", - "dev": true, - "requires": { - "browserslist": "^4.20.3", - "caniuse-lite": "^1.0.30001335", - "fraction.js": "^4.2.0", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-dynamic-import-node": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz", - "integrity": "sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==", - "dev": true, - "requires": { - "object.assign": "^4.1.0" - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-polyfill-corejs2": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.1.tgz", - "integrity": "sha512-v7/T6EQcNfVLfcN2X8Lulb7DjprieyLWJK/zOWH5DUYcAgex9sP3h25Q+DLsX9TloXe3y1O8l2q2Jv9q8UVB9w==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.11", - "@babel/helper-define-polyfill-provider": "^0.3.1", - "semver": "^6.1.1" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "babel-plugin-polyfill-corejs3": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.5.2.tgz", - "integrity": "sha512-G3uJih0XWiID451fpeFaYGVuxHEjzKTHtc9uGFEjR6hHrvNzeS/PX+LLLcetJcytsB5m4j+K3o/EpXJNb/5IEQ==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1", - "core-js-compat": "^3.21.0" - } - }, - "babel-plugin-polyfill-regenerator": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.3.1.tgz", - "integrity": "sha512-Y2B06tvgHYt1x0yz17jGkGeeMr5FeKUu+ASJ+N6nB5lQ8Dapfg42i0OVrf8PNGJ3zKL4A23snMi1IRwrqqND7A==", - "dev": true, - "requires": { - "@babel/helper-define-polyfill-provider": "^0.3.1" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.0.tgz", - "integrity": "sha512-DfJ+q6EPcGKZD1QWUjSpqp+Q7bDQTsQIF4zfUAtZ6qk+H/3/QRhg9CEp39ss+/T2vw0+HaidC0ecJj/DRLIaKg==", - "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.10.3", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - } - } - }, - "bonjour-service": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/bonjour-service/-/bonjour-service-1.0.13.tgz", - "integrity": "sha512-LWKRU/7EqDUC9CTAQtuZl5HzBALoCYwtLhffW3et7vZMwv3bWLpJf8bRYlMD5OCcDpTfnPgNCV4yo9ZIaJGMiA==", - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.1.tgz", - "integrity": "sha512-Nq8MFCSrnJXSc88yliwlzQe3qNe3VntIjhsArW9IJOEPSHNx23FalwApUVbzAWABLhYJJ7y8AynWI/XM8OdfjQ==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001359", - "electron-to-chromium": "^1.4.172", - "node-releases": "^2.0.5", - "update-browserslist-db": "^1.0.4" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true - }, - "cacache": { - "version": "16.0.7", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.0.7.tgz", - "integrity": "sha512-a4zfQpp5vm4Ipdvbj+ZrPonikRhm6WBEd4zT1Yc1DXsmAxrPgDwWBLF/u/wTVXSFPIgOJ1U3ghSa2Xm4s3h28w==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001363", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001363.tgz", - "integrity": "sha512-HpQhpzTGGPVMnCjIomjt+jvyUu8vNFo3TaDiZ/RcoTrlOq/5+tC8zHdsbgFB6MxmaY+jCpsH09aD80Bb4Ow3Sg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.6.1.tgz", - "integrity": "sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "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 - } - } - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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 - } - } - }, - "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" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "content-type": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", - "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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": { - "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" - } - }, - "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-compat": { - "version": "3.23.5", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.23.5.tgz", - "integrity": "sha512-fHYozIFIxd+91IIbXJgWd/igXIc8Mf9is0fusswjnGIWVG96y2cwyUdlCkGOw6rMLHKAxg7xtCIVaHsyOUnJIg==", - "dev": true, - "requires": { - "browserslist": "^4.21.2", - "semver": "7.0.0" - }, - "dependencies": { - "browserslist": { - "version": "4.21.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.2.tgz", - "integrity": "sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001366", - "electron-to-chromium": "^1.4.188", - "node-releases": "^2.0.6", - "update-browserslist-db": "^1.0.4" - } - }, - "caniuse-lite": { - "version": "1.0.30001368", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001368.tgz", - "integrity": "sha512-wgfRYa9DenEomLG/SdWgQxpIyvdtH3NW8Vq+tB6AwR9e56iOIcu1im5F/wNdDf04XlKHXqIx4N8Jo0PemeBenQ==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.198", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.198.tgz", - "integrity": "sha512-jwqQPdKGeAslcq8L+1SZZgL6uDiIDmTe9Gq4brsdWAH27y7MJ2g9Ue6MyST3ogmSM49EAQP7bype1V5hsuNrmQ==", - "dev": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "semver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", - "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==", - "dev": true - } - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "requires": { - "object-assign": "^4", - "vary": "^1" - } - }, - "cosmiconfig": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", - "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", - "dev": true, - "requires": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "css": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/css/-/css-3.0.0.tgz", - "integrity": "sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==", - "dev": true, - "requires": { - "inherits": "^2.0.4", - "source-map": "^0.6.1", - "source-map-resolve": "^0.6.0" - }, - "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 - } - } - }, - "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 - }, - "css-select": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "6.6.3", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-6.6.3.tgz", - "integrity": "sha512-7GDvDSmE+20+WcSMhP17Q1EVWUrLlbxxpMDqG731n8P99JhnQZHR9YvtjPvEHfjFUjvQJvdpKCjlKOX+xe4UVA==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.11", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.11.tgz", - "integrity": "sha512-VS20KRyorrbMCQmpdl2hg5KaOUsda1RbnsJg461FfrcyCUg+pkd0b40BSW4niQyTheww4DBXQnS7HwSrKkipLw==", - "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" - } - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha512-hjf+xovcEn31w/EUYdTXQh/8smFL/dzYjohQGEIgjyNavaJfBY2p5F527Bo1VPATxv0VYTUC2bOcXvqFwk78Og==", - "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.3", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", - "integrity": "sha512-s82itHOnYrN0Ib8r+z7laQz3sdE+4FP3d9Q7VLO7U+KRT+CR0GsWuyHxzdAY82I7cXv0G/twrqomTJLOssO5HA==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", - "dev": true, - "requires": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.180", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.180.tgz", - "integrity": "sha512-7at5ash3FD9U5gPa3/wPr6OdiZd/zBjvDZaaHBpcqFOFUhZiWnb7stkqk8xUFL9H9nk7Yok5vCCNK8wyC/+f8A==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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.0", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.0.tgz", - "integrity": "sha512-4KzwW3F3bk+KlzSOY57fj/Jx6LyRQ1nbcyIadehl+AnXjKT7gDO0ORdRi/84ixvMKTym6ZKuxvbzN62HDDU1Lg==", - "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" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "esbuild-android-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.49.tgz", - "integrity": "sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==", - "dev": true, - "optional": true - }, - "esbuild-android-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.49.tgz", - "integrity": "sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==", - "dev": true, - "optional": true - }, - "esbuild-darwin-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.49.tgz", - "integrity": "sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==", - "dev": true, - "optional": true - }, - "esbuild-darwin-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.49.tgz", - "integrity": "sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.49.tgz", - "integrity": "sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==", - "dev": true, - "optional": true - }, - "esbuild-freebsd-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.49.tgz", - "integrity": "sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==", - "dev": true, - "optional": true - }, - "esbuild-linux-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.49.tgz", - "integrity": "sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==", - "dev": true, - "optional": true - }, - "esbuild-linux-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.49.tgz", - "integrity": "sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.49.tgz", - "integrity": "sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==", - "dev": true, - "optional": true - }, - "esbuild-linux-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.49.tgz", - "integrity": "sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==", - "dev": true, - "optional": true - }, - "esbuild-linux-mips64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.49.tgz", - "integrity": "sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==", - "dev": true, - "optional": true - }, - "esbuild-linux-ppc64le": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.49.tgz", - "integrity": "sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==", - "dev": true, - "optional": true - }, - "esbuild-linux-riscv64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.49.tgz", - "integrity": "sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==", - "dev": true, - "optional": true - }, - "esbuild-linux-s390x": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.49.tgz", - "integrity": "sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==", - "dev": true, - "optional": true - }, - "esbuild-netbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.49.tgz", - "integrity": "sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==", - "dev": true, - "optional": true - }, - "esbuild-openbsd-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.49.tgz", - "integrity": "sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==", - "dev": true, - "optional": true - }, - "esbuild-sunos-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.49.tgz", - "integrity": "sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==", - "dev": true, - "optional": true - }, - "esbuild-wasm": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-wasm/-/esbuild-wasm-0.14.49.tgz", - "integrity": "sha512-5ddzZv8M3WI1fWZ5rEfK5cSA9swlWJcceKgqjKLLERC7FnlNW50kF7hxhpkyC0Z/4w7Xeyt3yUJ9QWNMDXLk2Q==", - "dev": true - }, - "esbuild-windows-32": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.49.tgz", - "integrity": "sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==", - "dev": true, - "optional": true - }, - "esbuild-windows-64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.49.tgz", - "integrity": "sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==", - "dev": true, - "optional": true - }, - "esbuild-windows-arm64": { - "version": "0.14.49", - "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.49.tgz", - "integrity": "sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==", - "dev": true, - "optional": true - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "express": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.1.tgz", - "integrity": "sha512-zZBcOX9TfehHQhtupq57OF8lFZ3UZi08Y97dwFCkD8p9d/d2Y3M+ykKcwaMDEL+4qyUolgBDX6AblpR3fL212Q==", - "dev": true, - "requires": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.0", - "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.10.3", - "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 - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.6.tgz", - "integrity": "sha512-0sQoMh9s0BYsm+12Huy/rkKxVu4R1+r96YX5cG44rHV0pQ6iC3Q+mkoMFaGWObMFYQxCVT+ssG1ksneA2MI9KQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.1", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.1.tgz", - "integrity": "sha512-yLAMQs+k0b2m7cVxpS1VKJVvoz7SS9Td1zss3XRwXj+ZDH00RJgnuLx7E44wx02kQLrdM3aOOy+FpzS7+8OizA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - } - }, - "fs-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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.2.tgz", - "integrity": "sha512-Jfm3OyCxHh9DJyc28qGk+JmfkpO41A4XkneDSujN9MDXrm4oDKdHvndhZ2dN94+ERNfkYJWDclW6k2L/ZGHjXA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "glob": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.0.1.tgz", - "integrity": "sha512-cF7FYZZ47YzmCu7dDy50xSRRfO3ErRfrXuLZcNIuyiJEco0XSrGtuilG19L5xp3NcwTx7Gn+X6Tv3fmsUPTbow==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "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", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "hosted-git-info": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-5.0.0.tgz", - "integrity": "sha512-rRnjWu0Bxj+nIfUOkz0695C0H6tRrN5iYIzYejb0tDEefe2AekHu/U5Kn9pEie5vsJqpNQU02az7TGSH3qpz4Q==", - "dev": true, - "requires": { - "lru-cache": "^7.5.1" - } - }, - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "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", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "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 - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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.5.6", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.6.tgz", - "integrity": "sha512-dnyv2/YsXhnm461G+R/Pe5bWP41Nm6LBXEYWI6eiFP4fiwx6WRI/CD0zbdVAudd9xwLEF2IDcKXLHit0FYjUzw==", - "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" - } - } - } - }, - "ip": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", - "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.0.tgz", - "integrity": "sha512-6Lthe1hqXHBNsqvgDzGO6l03XNeu3CrG4RqQ1KM9+l5+jNGpEJfIELx1NS3SEHmJQA8np/u+E4EPRKRiu6m19A==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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.4", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.4.tgz", - "integrity": "sha512-r1/DshN4KSE7xWEknZLLLLDn5CJybV3nw01VTkp6D5jzLuELlcbudfj/eSQFvrKsJuTVCGnePO7ho82Nw9zzfw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6", - "universalify": "^2.0.0" - } - }, - "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 - }, - "karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "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": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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 - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.0.tgz", - "integrity": "sha512-HVl9ZqccQihZ7JM85dco1MvO9G+ONvxoGa9rkhzFsneGLKSUg1gJf9bWzhRhcvm2qChhWpebQhP44qxjKIUCaQ==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.6.0.tgz", - "integrity": "sha512-3v8R7fd45UB6THucSht6wN2/7AZEruQbXdjygPZcxt5TA/msO6si9CN5MefUuKXbYnJHTBnYcx4famwcyQd+sA==", - "dev": true, - "requires": { - "date-format": "^4.0.11", - "debug": "^4.3.4", - "flatted": "^3.2.5", - "rfdc": "^1.3.0", - "streamroller": "^3.1.1" - } - }, - "lru-cache": { - "version": "7.12.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.12.0.tgz", - "integrity": "sha512-OIP3DwzRZDfLg9B9VP/huWBlpvbkmbfiBy8xmsXp4RPmE4A3MhwNozc5ZJ3fWnSg8fDcdlE/neRTPG2ycEKliw==", - "dev": true - }, - "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.7", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.7.tgz", - "integrity": "sha512-ygaiUSNalBX85388uskeCyhSAoOSgzBbtVCr9jA2RROssFL9Q19/ZXFqS+2Th2sr1ewNIWgFdLzLC3Yl1Zv+lw==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": { - "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" - } - }, - "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": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "requires": { - "brace-expansion": "^2.0.1" - } - }, - "minimist": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", - "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true - }, - "needle": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.1.0.tgz", - "integrity": "sha512-gCE9weDhjVGCRqS8dwDR/D3GTAeyXLXuqp7I8EzH6DllZGXSUyxuqqLh+YX9rMAWaaTFyVAg6rHGL25dqvczKw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.5.tgz", - "integrity": "sha512-U9h1NLROZTq9uE1SNffn6WuPDg8icmi3ns4rEl/oTfIle4iLjTliCzgTsbaIFMq/Xn078/lfY/BL0GWZ+psK4Q==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "normalize-package-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-4.0.0.tgz", - "integrity": "sha512-m+GL22VXJKkKbw62ZaBBjv8u6IE3UI4Mh5QakIqs3fWiKe0Xyi6L97hakwZK41/LD4R/2ly71Bayx0NLMwLA/g==", - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" - } - }, - "npm-packlist": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-5.1.1.tgz", - "integrity": "sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==", - "dev": true, - "requires": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^1.1.2", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "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.1.1", - "resolved": "https://registry.npmjs.org/npm-registry-fetch/-/npm-registry-fetch-13.1.1.tgz", - "integrity": "sha512-5p8rwe6wQPLJ8dMqeTnA57Dp9Ox6GH9H60xkyJup07FmVlu3Mk7pf/kIIpl9gaN5bM8NM+UUx3emUWvDNTt39w==", - "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" - }, - "dependencies": { - "@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 - }, - "cacache": { - "version": "16.1.1", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.1.tgz", - "integrity": "sha512-VDKN+LHyCQXaaYZ7rA/qtkURU+/yYhviUdvqEv2LT6QPZU8jpyzEkEVAcKlKLt5dJ5BRp11ym8lo3NKLluEPLg==", - "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" - } - }, - "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" - } - }, - "make-fetch-happen": { - "version": "10.1.8", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.1.8.tgz", - "integrity": "sha512-0ASJbG12Au6+N5I84W+8FhGS6iM8MyzvZady+zaQAu+6IOaESFzCLLD0AR1sAFF3Jufi8bxm586ABN6hWd3k7g==", - "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" - } - }, - "minipass-fetch": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.0.tgz", - "integrity": "sha512-H9U4UVBGXEyyWJnqYDCLp1PwD8XIkJ4akNHp1aGVI+2Ym7wQMlxDKi4IB4JbmyU+pl9pEs/cVrK6cOuvmbK4Sg==", - "dev": true, - "requires": { - "encoding": "^0.1.13", - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - } - }, - "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" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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.2", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.2.tgz", - "integrity": "sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "define-properties": "^1.1.3", - "has-symbols": "^1.0.1", - "object-keys": "^1.1.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": 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 - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "postcss": { - "version": "8.4.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.14.tgz", - "integrity": "sha512-E398TUmfAYFPBSdzgeieK2Y1+1cpdxJx8yXbK/m57nRhKSmk1GB2tO4lbLBtlkfPQTDKfe4Xqv1ASWPpayPEig==", - "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.8", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.8.tgz", - "integrity": "sha512-8rbj8kVu00RQh2fQF81oBqtduiANu4MIxhyf0HbbStgPtnFlWn0yiaYTpLHrPnJbffVY1s9apWsIoVZcc68FxA==", - "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 - }, - "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 - }, - "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": "14.1.0", - "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-14.1.0.tgz", - "integrity": "sha512-flwI+Vgm4SElObFVPpTIT7SU7R3qk2L7PyduMcokiaVKuWv9d/U+Gm/QAd8NDLuykTWTkcrjOeD2Pp1rMeBTGw==", - "dev": true, - "requires": { - "postcss-value-parser": "^4.0.0", - "read-cache": "^1.0.0", - "resolve": "^1.1.7" - } - }, - "postcss-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 - }, - "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 - }, - "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 - }, - "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 - }, - "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.1.10", - "resolved": "https://registry.npmjs.org/postcss-nesting/-/postcss-nesting-10.1.10.tgz", - "integrity": "sha512-lqd7LXCq0gWc0wKXtoKDru5wEUNjm3OryLVNRZ8OnW8km6fSNUuFrjEhU3nklxXE2jvd4qrox566acgh+xQt8w==", - "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 - }, - "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.7.2", - "resolved": "https://registry.npmjs.org/postcss-preset-env/-/postcss-preset-env-7.7.2.tgz", - "integrity": "sha512-1q0ih7EDsZmCb/FMDRvosna7Gsbdx8CvYO5hYT120hcp2ZAuOHpSzibujZ4JpIUcAC02PG6b+eftxqjTFh5BNA==", - "dev": true, - "requires": { - "@csstools/postcss-cascade-layers": "^1.0.4", - "@csstools/postcss-color-function": "^1.1.0", - "@csstools/postcss-font-format-keywords": "^1.0.0", - "@csstools/postcss-hwb-function": "^1.0.1", - "@csstools/postcss-ic-unit": "^1.0.0", - "@csstools/postcss-is-pseudo-class": "^2.0.6", - "@csstools/postcss-normalize-display-values": "^1.0.0", - "@csstools/postcss-oklab-function": "^1.1.0", - "@csstools/postcss-progressive-custom-properties": "^1.3.0", - "@csstools/postcss-stepped-value-functions": "^1.0.0", - "@csstools/postcss-trigonometric-functions": "^1.0.1", - "@csstools/postcss-unset-value": "^1.0.1", - "autoprefixer": "^10.4.7", - "browserslist": "^4.21.0", - "css-blank-pseudo": "^3.0.3", - "css-has-pseudo": "^3.0.4", - "css-prefers-color-scheme": "^6.0.3", - "cssdb": "^6.6.3", - "postcss-attribute-case-insensitive": "^5.0.1", - "postcss-clamp": "^4.1.0", - "postcss-color-functional-notation": "^4.2.3", - "postcss-color-hex-alpha": "^8.0.4", - "postcss-color-rebeccapurple": "^7.1.0", - "postcss-custom-media": "^8.0.2", - "postcss-custom-properties": "^12.1.8", - "postcss-custom-selectors": "^6.0.3", - "postcss-dir-pseudo-class": "^6.0.4", - "postcss-double-position-gradients": "^3.1.1", - "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.3", - "postcss-image-set-function": "^4.0.6", - "postcss-initial": "^4.0.1", - "postcss-lab-function": "^4.2.0", - "postcss-logical": "^5.0.4", - "postcss-media-minmax": "^5.0.0", - "postcss-nesting": "^10.1.9", - "postcss-opacity-percentage": "^1.1.2", - "postcss-overflow-shorthand": "^3.0.3", - "postcss-page-break": "^3.0.4", - "postcss-place": "^7.0.4", - "postcss-pseudo-class-any-link": "^7.1.5", - "postcss-replace-overflow-wrap": "^4.0.0", - "postcss-selector-not": "^6.0.0", - "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 - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "read-package-json": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-5.0.1.tgz", - "integrity": "sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==", - "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": "^1.0.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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.0.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.0.1.tgz", - "integrity": "sha512-vn5DU6yg6h8hP/2OkQo3K7uVILvY4iu0oI4t3HFa81UPkhGJwkRwM10JEc3upjdhHjs/k8GJY1sRBhk5sr69Bw==", - "dev": true, - "requires": { - "regenerate": "^1.4.2" - } - }, - "regenerator-runtime": { - "version": "0.13.9", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", - "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" - }, - "regenerator-transform": { - "version": "0.15.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "regexpu-core": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.1.0.tgz", - "integrity": "sha512-bb6hk+xWd2PEOkj5It46A16zFMs2mv86Iwpdu94la4S3sJ7C973h2dHpYKwIBGaWSO7cIRJ+UX0IeMaWcO4qwA==", - "dev": true, - "requires": { - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.0.1", - "regjsgen": "^0.6.0", - "regjsparser": "^0.8.2", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.0.0" - } - }, - "regjsgen": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.6.0.tgz", - "integrity": "sha512-ozE883Uigtqj3bx7OhL1KNbCzGyW2NQZPl6Hs09WTvCuZD5sTI4JY58bkbQWa/Y9hxIsvJ3M8Nbf7j54IqeZbA==", - "dev": true - }, - "regjsparser": { - "version": "0.8.4", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.8.4.tgz", - "integrity": "sha512-J3LABycON/VNEu3abOviqGHuB/LOtOQj8SKmfP9anY5GfAVw/SPjwzSjxGjbZXIxbGfqTHtJw58C2Li/WkStmA==", - "dev": true, - "requires": { - "jsesc": "~0.5.0" - }, - "dependencies": { - "jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "dev": true - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.5.0.tgz", - "integrity": "sha512-FOTfP3LK5VN3dDtr+wjFAeKVe5nTPPTC2+NUFJ8kyuO+YbIl/aME0eQDiX2MCVgnhKyuUYaEjgZEx8iL/4AV6A==", - "requires": { - "tslib": "^1.9.0" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==" - } - } - }, - "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 - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sass": { - "version": "1.53.0", - "resolved": "https://registry.npmjs.org/sass/-/sass-1.53.0.tgz", - "integrity": "sha512-zb/oMirbKhUgRQ0/GFz8TSAwRq2IlR29vOUJZOx0l8sV+CkHUfHa4u5nqrG+1VceZp7Jfj59SVW9ogdhTvJDcQ==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "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 - } - } - }, - "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 - }, - "selfsigned": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.0.1.tgz", - "integrity": "sha512-LmME957M1zOsUhG+67rAjKfiWFox3SBxE/yymatMZsAx+oMrJ0YQ8AToOnyCm7xbeg2ep37IHLxdu0o2MavQOQ==", - "dev": true, - "requires": { - "node-forge": "^1" - } - }, - "semver": { - "version": "7.3.7", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.7.tgz", - "integrity": "sha512-QlYTucUYOews+WeEujDoEGziz4K6c47V/Bd+LjSSYcA94p+DmINdf7ncaUinThfvZyu13lN9OY1XDxt8C0Tw0g==", - "dev": true, - "requires": { - "lru-cache": "^6.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.1", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.1.tgz", - "integrity": "sha512-0y9pnIso5a9i+lJmsCdtmTTgJFFSvNQKDnPQRz28mGNnxbmqYg2QPtJTLFxhymFZhAIn50eHAKzJeiNaKr+yUQ==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.0.4" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.5.tgz", - "integrity": "sha512-sNjbT9dX63nqUFIOv95tTVm6elyIU4RvB1m8dOeZt+IgWwcWklFDOdmGcfo3zSiRsnR/3pJkjY5lfoGqEe4Eig==", - "dev": true, - "requires": { - "@types/component-emitter": "^1.2.10", - "component-emitter": "~1.3.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" - } - }, - "socks": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.6.2.tgz", - "integrity": "sha512-zDZhHhZRY9PxRruRMR7kMhnf3I8hDs4S3f9RecfnGxvcBHQcKcIH/oUcEWffsfl1XxdYlA7nnlGbbTvPz9D8gA==", - "dev": true, - "requires": { - "ip": "^1.1.5", - "smart-buffer": "^4.2.0" - } - }, - "socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "dev": true, - "requires": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true - }, - "source-map-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-resolve": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.6.0.tgz", - "integrity": "sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0" - } - }, - "source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.11", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.11.tgz", - "integrity": "sha512-Ctl2BrFiM0X3MANYgj3CkygxhRmr9mi6xhejbdO960nF6EDJApTYpn0BQnDKlnNBULKiCN1n3w9EBkHK8ZWg+g==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.1.tgz", - "integrity": "sha512-iPhtd9unZ6zKdWgMeYGfSBuqCngyJy1B/GPi/lTpwGpa3bajuX30GjUVd0/Tn/Xhg0mr4DOSENozz9Y06qyonQ==", - "dev": true, - "requires": { - "date-format": "^4.0.10", - "debug": "^4.3.4", - "fs-extra": "^10.1.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - }, - "dependencies": { - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - } - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "stylus": { - "version": "0.58.1", - "resolved": "https://registry.npmjs.org/stylus/-/stylus-0.58.1.tgz", - "integrity": "sha512-AYiCHm5ogczdCPMfe9aeQa4NklB2gcf4D/IhzYPddJjTgPc+k4D/EVE0yfQbZD43MHP3lPy+8NZ9fcFxkrgs/w==", - "dev": true, - "requires": { - "css": "^3.0.0", - "debug": "^4.3.2", - "glob": "^7.1.6", - "sax": "~1.2.4", - "source-map": "^0.7.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.11", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.11.tgz", - "integrity": "sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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.3", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.3.tgz", - "integrity": "sha512-Fx60G5HNYknNTNQnzQ1VePRuu89ZVYWfjRAeT5rITuCY/1b08s49e5kSQwHDirKZWuoKOBRFS98EUUoZ9kLEwQ==", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "^0.3.7", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.0", - "terser": "^5.7.2" - }, - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.0.tgz", - "integrity": "sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "dev": true - }, - "unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "dev": true, - "requires": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - } - }, - "unicode-match-property-value-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.0.0.tgz", - "integrity": "sha512-7Yhkc0Ye+t4PNYzOGKedDhXbYIBe1XEQYQxOPyhcXNMJ0WCABqqj6ckydd6pWRZTHV4GuCPKdBAUiMc60tsKVw==", - "dev": true - }, - "unicode-property-aliases-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.0.0.tgz", - "integrity": "sha512-5Zfuy9q/DFr4tfO7ZPeVXb1aPoeQSdeFMLpYuFebehDAhbuevLs5yxSZmIFN1tP5F9Wl4IpJrYojg85/zgyZHQ==", - "dev": true - }, - "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": "2.0.0", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", - "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.4.tgz", - "integrity": "sha512-jnmO2BEGUjsMOe/Fg9u0oczOe/ppIDZPebzccl1yDWGLFP16Pa1/RM5wEoKYPG2zstNcDuAStejyxsOuKINdGA==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "webpack": { - "version": "5.73.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.73.0.tgz", - "integrity": "sha512-svjudQRPPa0YiOYa2lM/Gacw0r6PvxptHj4FuEKQ2kX05ZLkjbVc5MnPs6its5j7IZljnIqSVo/OsY2X0IpHGA==", - "dev": true, - "requires": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^0.0.51", - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/wasm-edit": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "acorn": "^8.4.1", - "acorn-import-assertions": "^1.7.6", - "browserslist": "^4.14.5", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.9.3", - "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.3.1", - "webpack-sources": "^3.2.3" - }, - "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" - } - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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": { - "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" - } - }, - "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.9.3", - "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.9.3.tgz", - "integrity": "sha512-3qp/eoboZG5/6QgiZ3llN8TUzkSpYg1Ko9khWX1h40MIEUNS2mDoIa8aXsPfskER+GbTvs/IJZ1QTBBhhuetSw==", - "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": { - "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" - } - }, - "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" - } - }, - "ws": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.8.1.tgz", - "integrity": "sha512-bGy2JzvzkPowEJV++hF07hAD6niYSr0JzBNo/J29WsB57A2r7Wlc1UFcTR9IzrPvuNVO4B8LGqF8qcpsVOhJCA==", - "dev": true - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.0.1.tgz", - "integrity": "sha512-9BK1jFpLzJROCI5TzwZL/TU4gqjK5xiHV/RfWLOahrjAko/e4DJkRDZQXfvqAsiZzzYhgAzbgz6lg48jcm4GLg==", - "dev": true - }, - "zone.js": { - "version": "0.11.6", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.6.tgz", - "integrity": "sha512-umJqFtKyZlPli669gB1gOrRE9hxUUGkZr7mo878z+NEBJZZixJkKeVYfnoLa7g25SseUDc92OZrMKKHySyJrFg==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/package.json b/5-AccessControl/2-call-api-groups/SPA/package.json deleted file mode 100644 index 99dc752b..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/package.json +++ /dev/null @@ -1,44 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.4.3", - "@azure/msal-browser": "^2.28.3", - "@microsoft/microsoft-graph-client": "^3.0.2", - "rxjs": "^6.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@microsoft/microsoft-graph-types": "^2.25.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/app-routing.module.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 02f4fce2..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,76 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { DashboardComponent } from './dashboard/dashboard.component'; -import { OverageComponent } from './overage/overage.component'; - -import { BaseGuard } from './base.guard'; -import { GroupGuard } from './group.guard'; -import { groups } from './auth-config'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'todo-edit/:id', - component: TodoEditComponent, - canActivate: [ - GroupGuard - ], - data: { - requiredGroups: [groups.groupMember, groups.groupAdmin] - } - }, - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - GroupGuard - ], - data: { - requiredGroups: [groups.groupMember, groups.groupAdmin] - } - }, - { - path: 'dashboard', - component: DashboardComponent, - canActivate: [ - GroupGuard, - ], - data: { - requiredGroups: [groups.groupAdmin] - } - }, - { - path: 'overage', - component: OverageComponent, - canActivate: [ - BaseGuard, - ] - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.css b/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.css deleted file mode 100644 index 43d668de..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.html b/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.html deleted file mode 100644 index 1d78e68a..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.html +++ /dev/null @@ -1,25 +0,0 @@ - - {{ title }} - -
    - - TodoList - Dashboard - - - -
    -
    - - -
    - - \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.ts deleted file mode 100644 index 3a4800e4..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/app.component.ts +++ /dev/null @@ -1,121 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { clearGroupsInStorage } from './utils/storage-utils'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more information, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - const activeAccount = this.authService.instance.getActiveAccount() || this.authService.instance.getAllAccounts()[0]; - clearGroupsInStorage(activeAccount); // make sure to remove groups from storage - - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.logoutPopup({ - account: activeAccount - }); - } else { - this.authService.logoutRedirect({ - account: activeAccount - }); - } - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/app.module.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/app.module.ts deleted file mode 100644 index b2abb692..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/app.module.ts +++ /dev/null @@ -1,123 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon' -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field' - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { DashboardComponent } from './dashboard/dashboard.component'; -import { OverageComponent } from './overage/overage.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoService } from './todo.service'; - -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent, ProtectedResourceScopes -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; -import { BaseGuard } from './base.guard'; -import { GroupGuard } from './group.guard'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map | null>(); - - protectedResourceMap.set(protectedResources.apiTodoList.endpoint, protectedResources.apiTodoList.scopes); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - }; -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - DashboardComponent, - OverageComponent, - TodoViewComponent, - TodoEditComponent - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - MatInputModule, - MatFormFieldModule, - MatCheckboxModule, - MatIconModule, - HttpClientModule, - FormsModule, - MsalModule - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory - }, - MsalService, - BaseGuard, - GroupGuard, - MsalBroadcastService, - TodoService - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/auth-config.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/auth-config.ts deleted file mode 100644 index afbccc3d..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,79 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ -export const protectedResources = { - apiTodoList: { - endpoint: "https://localhost:44351/api/todolist", - scopes: ["api://Enter_the_Web_Api_Application_Id_Here/access_via_group_assignments"] - }, - apiGraph: { - endpoint: "https://graph.microsoft.com/v1.0/me/checkMemberGroups", - scopes: ["User.Read", "GroupMember.Read.All"] - } -} - -/** - * Scopes you add here will be prompted for user consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest = { - scopes: [...protectedResources.apiTodoList.scopes] -}; - -export const groups = { - groupAdmin: "Enter the object ID for GroupAdmin group copied from Azure Portal", - groupMember: "Enter the object ID for GroupMember group copied from Azure Portal" -} - -/** - * IMPORTANT: In case of overage, group list is cached for 1 hr by default, and thus cached groups - * will miss any changes to a users group membership for this duration. For capturing real-time - * changes to a user's group membership, consider implementing Microsoft Graph change notifications. - * For more information, visit: https://learn.microsoft.com/graph/api/resources/webhooks - */ - export const CACHE_TTL_IN_MS = 60 * 60 * 1000; // 1 hour in milliseconds \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/base.guard.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/base.guard.ts deleted file mode 100644 index decabc02..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/base.guard.ts +++ /dev/null @@ -1,221 +0,0 @@ -/* - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. - */ - -import { Injectable, Inject, VERSION } from "@angular/core"; -import { Location } from "@angular/common"; -import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, CanActivateChild, CanLoad, UrlTree, Router } from "@angular/router"; -import { concatMap, catchError, map } from "rxjs/operators"; -import { Observable, of } from "rxjs"; - -import { MsalBroadcastService, MsalGuardConfiguration, MSAL_GUARD_CONFIG, MsalService } from "@azure/msal-angular"; -import { InteractionType, BrowserConfigurationAuthError, BrowserUtils, UrlString, PopupRequest, RedirectRequest, AuthenticationResult } from "@azure/msal-browser"; - -/** - * Guard for protecting routes that require authentication. You can extend it to create custom route guards. - * This class is based on MsalGuard from msal-angular. For more information, visit: - * https://azuread.github.io/microsoft-authentication-library-for-js/ref/classes/_azure_msal_angular.msalguard.html) - */ -@Injectable() -export class BaseGuard implements CanActivate, CanActivateChild, CanLoad { - private loginFailedRoute?: UrlTree; - - constructor( - @Inject(MSAL_GUARD_CONFIG) protected msalGuardConfig: MsalGuardConfiguration, - protected msalBroadcastService: MsalBroadcastService, - protected authService: MsalService, - protected location: Location, - protected router: Router - ) { - // Subscribing so events in MsalGuard will set inProgress$ observable - this.msalBroadcastService.inProgress$.subscribe(); - } - - /** - * Parses url string to UrlTree - * @param url - */ - parseUrl(url: string): UrlTree { - return this.router.parseUrl(url); - } - - /** - * Builds the absolute url for the destination page - * @param path Relative path of requested page - * @returns Full destination url - */ - getDestinationUrl(path: string): string { - this.authService.getLogger().verbose("Guard - getting destination url"); - // Absolute base url for the application (default to origin if base element not present) - const baseElements = document.getElementsByTagName("base"); - const baseUrl = this.location.normalize(baseElements.length ? baseElements[0].href : window.location.origin); - - // Path of page (including hash, if using hash routing) - const pathUrl = this.location.prepareExternalUrl(path); - - // Hash location strategy - if (pathUrl.startsWith("#")) { - this.authService.getLogger().verbose("Guard - destination by hash routing"); - return `${baseUrl}/${pathUrl}`; - } - - /* - * If using path location strategy, pathUrl will include the relative portion of the base path (e.g. /base/page). - * Since baseUrl also includes /base, can just concatentate baseUrl + path - */ - return `${baseUrl}${path}`; - } - - /** - * Interactively prompt the user to login - * @param url Path of the requested page - */ - private loginInteractively(state: RouterStateSnapshot): Observable { - const authRequest = typeof this.msalGuardConfig.authRequest === "function" - ? this.msalGuardConfig.authRequest(this.authService, state) - : { ...this.msalGuardConfig.authRequest }; - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.getLogger().verbose("Guard - logging in by popup"); - return this.authService.loginPopup(authRequest as PopupRequest) - .pipe( - map((response: AuthenticationResult) => { - this.authService.getLogger().verbose("Guard - login by popup successful, can activate, setting active account"); - this.authService.instance.setActiveAccount(response.account); - return true; - }) - ); - } - - this.authService.getLogger().verbose("Guard - logging in by redirect"); - const redirectStartPage = this.getDestinationUrl(state.url); - return this.authService.loginRedirect({ - redirectStartPage, - ...authRequest - } as RedirectRequest) - .pipe( - map(() => false) - ); - } - - /** - * Helper which checks for the correct interaction type, prevents page with Guard to be set as reidrect, and calls handleRedirectObservable - * @param state - */ - protected activateHelper(state?: RouterStateSnapshot, route?: ActivatedRouteSnapshot): Observable { - if (this.msalGuardConfig.interactionType !== InteractionType.Popup && this.msalGuardConfig.interactionType !== InteractionType.Redirect) { - throw new BrowserConfigurationAuthError("invalid_interaction_type", "Invalid interaction type provided to MSAL Guard. InteractionType.Popup or InteractionType.Redirect must be provided in the MsalGuardConfiguration"); - } - this.authService.getLogger().verbose("MSAL Guard activated"); - - /* - * If a page with MSAL Guard is set as the redirect for acquireTokenSilent, - * short-circuit to prevent redirecting or popups. - */ - if (typeof window !== "undefined") { - if (UrlString.hashContainsKnownProperties(window.location.hash) && BrowserUtils.isInIframe() && !this.authService.instance.getConfiguration().system.allowRedirectInIframe) { - this.authService.getLogger().warning("Guard - redirectUri set to page with MSAL Guard. It is recommended to not set redirectUri to a page that requires authentication."); - return of(false); - } - } else { - this.authService.getLogger().info("Guard - window is undefined, MSAL does not support server-side token acquisition"); - return of(true); - } - - /** - * If a loginFailedRoute is set in the config, set this as the loginFailedRoute - */ - if (this.msalGuardConfig.loginFailedRoute) { - this.loginFailedRoute = this.parseUrl(this.msalGuardConfig.loginFailedRoute); - } - - // Capture current path before it gets changed by handleRedirectObservable - const currentPath = this.location.path(true); - - return this.authService.handleRedirectObservable() - .pipe( - concatMap(() => { - if (!this.authService.instance.getAllAccounts().length) { - if (state) { - this.authService.getLogger().verbose("Guard - no accounts retrieved, log in required to activate"); - return this.loginInteractively(state); - } - this.authService.getLogger().verbose("Guard - no accounts retrieved, no state, cannot load"); - return of(false); - } - - this.authService.getLogger().verbose("Guard - at least 1 account exists, can activate or load"); - - // Prevent navigating the app to /#code= or /code= - if (state) { - /* - * Path routing: - * state.url: /#code=... - * state.root.fragment: code=... - */ - - /* - * Hash routing: - * state.url: /code - * state.root.fragment: null - */ - const urlContainsCode: boolean = this.includesCode(state.url); - const fragmentContainsCode: boolean = !!state.root && !!state.root.fragment && this.includesCode(`#${state.root.fragment}`); - const hashRouting: boolean = this.location.prepareExternalUrl(state.url).indexOf("#") === 0; - - // Ensure code parameter is in fragment (and not in query parameter), or that hash hash routing is used - if (urlContainsCode && (fragmentContainsCode || hashRouting)) { - this.authService.getLogger().info("Guard - Hash contains known code response, stopping navigation."); - - // Path routing (navigate to current path without hash) - if (currentPath.indexOf("#") > -1) { - return of(this.parseUrl(this.location.path())); - } - - // Hash routing (navigate to root path) - return of(this.parseUrl("")); - } - } - - return of(true); - - }), - catchError((error: Error) => { - this.authService.getLogger().error("Guard - error while logging in, unable to activate"); - this.authService.getLogger().errorPii(`Guard - error: ${error.message}`); - /** - * If a loginFailedRoute is set, checks to see if Angular 10+ is used and state is passed in before returning route - * Apps using Angular 9 will receive of(false) in canLoad interface, as it does not support UrlTree return types - */ - if (this.loginFailedRoute && parseInt(VERSION.major, 10) > 9 && state) { - this.authService.getLogger().verbose("Guard - loginFailedRoute set, redirecting"); - return of(this.loginFailedRoute); - } - return of(false); - }) - ); - } - - includesCode(path: string): boolean { - return (path.lastIndexOf("/code") > -1 && - path.lastIndexOf("/code") === path.length - "/code".length) || // path.endsWith("/code") - path.indexOf("#code=") > -1 || - path.indexOf("&code=") > -1; - } - - canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { - this.authService.getLogger().verbose("Guard - canActivate"); - return this.activateHelper(state, route); - } - - canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable { - this.authService.getLogger().verbose("Guard - canActivateChild"); - return this.activateHelper(state, route); - } - - canLoad(): Observable { - this.authService.getLogger().verbose("Guard - canLoad"); - // @ts-ignore - return this.activateHelper(); - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.css b/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.css deleted file mode 100644 index 972c19a3..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.css +++ /dev/null @@ -1,4 +0,0 @@ -.card-section { - margin: 5%; - padding: 5%; -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.html b/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.html deleted file mode 100644 index cd4c4ca6..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.html +++ /dev/null @@ -1,6 +0,0 @@ - - Owner: {{tb.owner}} -
      -
    1. {{task.description}}
    2. -
    -
    \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.ts deleted file mode 100644 index 12364bdd..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/dashboard/dashboard.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { TodoService } from './../todo.service'; -import { Todo } from '../todo.service'; - -@Component({ - selector: 'app-dashboard', - templateUrl: './dashboard.component.html', - styleUrls: ['./dashboard.component.css'] -}) -export class DashboardComponent implements OnInit { - - users: string[] = []; - todos: Todo[] = []; - table: any = []; - - constructor(private service: TodoService) { } - - ngOnInit(): void { - this.getAll() - } - - getAll(): void { - this.service.getAll() - .subscribe((todos: Todo[]) => { - this.todos = todos; - this.tabulateTodos(this.todos); - }); - } - - tabulateTodos(todos: Todo[]): void { - todos.map((todo) => { - if (!this.users.includes(todo.owner!)) { - this.users.push(todo.owner!) - this.table.push({"owner": todo.owner, "tasks": todos.filter(t => t.owner === todo.owner && !t.status)}) - } - }) - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/graph.service.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/graph.service.ts deleted file mode 100644 index ba4e87ff..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/graph.service.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { Injectable } from '@angular/core'; - -import { AuthenticationResult, InteractionRequiredAuthError } from '@azure/msal-browser'; -import { MsalService } from '@azure/msal-angular'; -import { Client, PageCollection } from '@microsoft/microsoft-graph-client'; - -import { protectedResources } from './auth-config'; - -@Injectable({ - providedIn: 'root' -}) -export class GraphService { - - constructor(private authService: MsalService) { } - - private getGraphClient(accessToken: string) { - // Initialize Graph client - const graphClient = Client.init({ - // Use the provided access token to authenticate requests - authProvider: (done) => { - done(null, accessToken); - }, - }); - - return graphClient; - }; - - private async getToken(scopes: string[]): Promise { - let authResponse: AuthenticationResult | null = null; - - try { - authResponse = await this.authService.instance.acquireTokenSilent({ - account: this.authService.instance.getActiveAccount()!, - scopes: scopes, - }); - - } catch (error) { - if (error instanceof InteractionRequiredAuthError) { - // TODO: get default interaction type from auth config - - authResponse = await this.authService.instance.acquireTokenPopup({ - scopes: protectedResources.apiGraph.scopes, - }); - } - - console.log(error); - } - - return authResponse ? authResponse.accessToken : ""; - } - - async getFilteredGroups(filterGroups: string[] = []): Promise { - let groups: string[] = []; - - try { - const accessToken = await this.getToken(protectedResources.apiGraph.scopes); - - // Get a graph client instance for the given access token - const graphClient = this.getGraphClient(accessToken); - - // Makes request to fetch groups list, which is expected to have multiple pages of data. - let response: PageCollection = await graphClient.api(protectedResources.apiGraph.endpoint) - .post({ - groupIds: filterGroups - }); - - groups = response.value; - return groups; - } catch (error) { - console.log(error); - } - - return groups; - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/group.guard.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/group.guard.ts deleted file mode 100644 index b556ac2f..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/group.guard.ts +++ /dev/null @@ -1,77 +0,0 @@ -import { ActivatedRouteSnapshot, Router, RouterStateSnapshot, UrlTree } from "@angular/router"; -import { Inject, Injectable } from "@angular/core"; -import { Location } from "@angular/common"; -import { Observable, of } from "rxjs"; -import { concatMap } from "rxjs/operators"; - -import { MsalBroadcastService, MsalGuardConfiguration, MsalService, MSAL_GUARD_CONFIG } from "@azure/msal-angular"; -import { AccountInfo } from "@azure/msal-browser"; - -import { BaseGuard } from "./base.guard"; -import { checkGroupsInStorage, getGroupsFromStorage } from "./utils/storage-utils"; - -type AccountWithGroupClaims = AccountInfo & { - idTokenClaims?: { - groups?: string[], - _claim_names?: { - groups?: string | string[] - }, - _claim_sources?: { - src1?: { - endpoint: string | string[] - } - } - } -} - -@Injectable() -export class GroupGuard extends BaseGuard { - - constructor( - @Inject(MSAL_GUARD_CONFIG) protected override msalGuardConfig: MsalGuardConfiguration, - protected override msalBroadcastService: MsalBroadcastService, - protected override authService: MsalService, - protected override location: Location, - protected override router: Router, - ) { - super(msalGuardConfig, msalBroadcastService, authService, location, router); - } - - override activateHelper(state?: RouterStateSnapshot, route?: ActivatedRouteSnapshot): Observable { - let result = super.activateHelper(state, route); - - const requiredGroups: string[] = route ? route.data['requiredGroups'] : []; - - return result.pipe( - concatMap(() => { - let activeAccount = this.authService.instance.getActiveAccount() as AccountWithGroupClaims; - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - activeAccount = this.authService.instance.getAllAccounts()[0] as AccountWithGroupClaims; - } - - // check either the ID token or a non-expired storage entry for the groups membership claim - if (!activeAccount?.idTokenClaims?.groups && !checkGroupsInStorage(activeAccount)) { - - if (activeAccount.idTokenClaims?._claim_names && activeAccount.idTokenClaims?._claim_names.groups) { - window.alert('You have too many group memberships. The application will now query Microsoft Graph to check if you are a member of any of the groups required.'); - return this.router.navigate(['/overage']); - } - - window.alert('Token does not have groups claim. Please ensure that your account is assigned to a security group and then sign-out and sign-in again.'); - return of(false); - } - - const hasRequiredGroup = requiredGroups.some((group: string) => - activeAccount?.idTokenClaims?.groups?.includes(group) || getGroupsFromStorage(activeAccount)?.includes(group) - ); - - if (!hasRequiredGroup) { - window.alert('You do not have access. Please ensure that your account is assigned to the required security group and then sign-out and sign-in again.'); - } - - return of(hasRequiredGroup); - }) - ); - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.css b/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.css deleted file mode 100644 index 20d78221..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,25 +0,0 @@ -#table-container { - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.html b/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.html deleted file mode 100644 index 3e752449..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and call a protected web API - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and acquire an access - token for a protected web API - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    -
    ApplicationAppIdUrl in the Azure portal
    - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    - \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.ts deleted file mode 100644 index 9f109e2a..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { filter } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../utils/claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.css b/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.css deleted file mode 100644 index 2be89b0b..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.css +++ /dev/null @@ -1,4 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.html b/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.html deleted file mode 100644 index b85f7320..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.html +++ /dev/null @@ -1,14 +0,0 @@ - - You have too many group memberships! - The application will now query Microsoft Graph to check if you are member of any of the required groups by the application. - This operation requires Admin Consent for the GroupMember.Read.All scope - Once this is done, you may go back and try to access again. - - - -
    - You are a member of the following groups: -
      -
    1. {{group}}
    2. -
    -
    \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.ts deleted file mode 100644 index 330f346d..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/overage/overage.component.ts +++ /dev/null @@ -1,37 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { MsalService } from '@azure/msal-angular'; - -import { GraphService } from '../graph.service'; -import { setGroupsInStorage } from '../utils/storage-utils'; - -import { groups } from '../auth-config'; - -@Component({ - selector: 'app-overage', - templateUrl: './overage.component.html', - styleUrls: ['./overage.component.css'] -}) -export class OverageComponent implements OnInit { - - requiredGroupsByApplication: string[] = []; - - constructor(private authService: MsalService, private graphService: GraphService) { } - - ngOnInit(): void { - this.getGroups(); - } - - async getGroups(): Promise { - try { - // Filter out the required groups defined in auth-config.ts - this.requiredGroupsByApplication = await this.graphService.getFilteredGroups(Object.values(groups)); - - const activeAccount = this.authService.instance.getActiveAccount() || this.authService.instance.getAllAccounts()[0]; - - // Store the groups in session storage for this user - setGroupsInStorage(activeAccount, this.requiredGroupsByApplication); - } catch (error) { - console.log(error); - } - } -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/sample.spec.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/sample.spec.ts deleted file mode 100644 index 0881c861..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/overage')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.css b/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.css deleted file mode 100644 index 9295c096..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.css +++ /dev/null @@ -1,14 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} - -.form-field { - min-width: 100px; - max-width: 800px; - width: 100%; -} - -.input-field { - width: 100%; -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.html b/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.html deleted file mode 100644 index bc0853b4..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.html +++ /dev/null @@ -1,14 +0,0 @@ - -
    -

    Edit a task

    -
    -
    -
    -
    - - - - -
    -
    \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.ts deleted file mode 100644 index de6744d1..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-edit/todo-edit.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { TodoService } from './../todo.service'; -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { Todo } from '../todo.service'; - -@Component({ - selector: 'app-todo-edit', - templateUrl: './todo-edit.component.html', - styleUrls: ['./todo-edit.component.css'] -}) -export class TodoEditComponent implements OnInit { - - todo: Todo = { - id: 1, - description: "undefined", - status: false, - }; - - constructor(private route: ActivatedRoute, private router: Router, private service: TodoService) { } - - ngOnInit(): void { - this.route.paramMap.subscribe((params) => { - let id = +params.get('id')!; - this.service.getTodo(+id).subscribe((response: Todo) => { - this.todo = response; - }) - }) - } - - editTodo(todo: Todo): void { - this.todo.description = todo.description; - this.service.editTodo(this.todo).subscribe(() => { - this.router.navigate(['/todo-view']); - }) - } - -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.css b/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.css deleted file mode 100644 index 6e93921c..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.css +++ /dev/null @@ -1,26 +0,0 @@ -table { - min-width: 100px; - width: 100%; -} - -.form-field { - min-width: 100px; - width: 90%; -} - -.input-field { - width: 90%; -} - -.card-section { - margin-top: 5%; -} - -#submit-button { - margin-left: 1%; -} - -.material-icons:hover { - color: orange !important; - cursor: pointer -} \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.html b/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.html deleted file mode 100644 index db724480..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.html +++ /dev/null @@ -1,45 +0,0 @@ - -
    - - Enter a task - - - -
    -
    -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    Status - - Description {{todo.description}} Edit - edit - Remove - delete -
    -
    \ No newline at end of file diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.ts deleted file mode 100644 index 6581b525..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo-view/todo-view.component.ts +++ /dev/null @@ -1,48 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { NgForm } from '@angular/forms'; - -import { TodoService, Todo } from './../todo.service'; - -@Component({ - selector: 'app-todo-view', - templateUrl: './todo-view.component.html', - styleUrls: ['./todo-view.component.css'] -}) -export class TodoViewComponent implements OnInit { - - todo?: Todo; - - todos: Todo[] = []; - - displayedColumns = ['status', 'description', 'edit', 'remove']; - - constructor(private service: TodoService) { } - - ngOnInit(): void { - this.getTodos(); - } - - getTodos(): void { - this.service.getTodos() - .subscribe((todos: Todo[]) => { - this.todos = todos; - }); - } - - addTodo(add: NgForm): void { - this.service.postTodo(add.value).subscribe(() => { - this.getTodos(); - }) - add.resetForm(); - } - - checkTodo(todo: Todo): void { - this.service.editTodo(todo).subscribe(); - } - - removeTodo(id: string): void { - this.service.deleteTodo(+id).subscribe(() => { - this.getTodos(); - }) - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/todo.service.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/todo.service.ts deleted file mode 100644 index 423a6774..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/todo.service.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; - -import { protectedResources } from './auth-config'; - -export type Todo = { - id: number; - description: string; - owner?: string; - status: boolean; -} - -@Injectable({ - providedIn: 'root' -}) -export class TodoService { - url = protectedResources.apiTodoList.endpoint; - - constructor(private http: HttpClient) { } - - getAll() { - return this.http.get(this.url + '/' + 'getAll'); - } - - getTodos() { - return this.http.get(this.url); - } - - getTodo(id: number) { - return this.http.get(this.url + '/' + id); - } - - postTodo(todo: Todo) { - return this.http.post(this.url, todo); - } - - deleteTodo(id: number) { - return this.http.delete(this.url + '/' + id); - } - - editTodo(todo: Todo) { - return this.http.put(this.url + '/' + todo.id, todo); - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/utils/claim-utils.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/utils/claim-utils.ts deleted file mode 100644 index 9c922c7c..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/utils/claim-utils.ts +++ /dev/null @@ -1,198 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case "_claim_names": - case "_claim_sources": - populateClaim( - key, - claims[key], - 'Indicates that the user is member of more groups than the overage limit (200 for JWT tokens). In this case, Azure AD does not emit the group IDs in the groups claim in the token. Instead, it includes an overage claim in the token that indicates to the application to query Microsoft Graph to retrieve the user’s group membership.', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/5-AccessControl/2-call-api-groups/SPA/src/app/utils/storage-utils.ts b/5-AccessControl/2-call-api-groups/SPA/src/app/utils/storage-utils.ts deleted file mode 100644 index 9da39bf5..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/app/utils/storage-utils.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { AccountInfo } from '@azure/msal-browser'; - -import { CACHE_TTL_IN_MS } from '../auth-config'; - -type GroupMembershipEntry = { - groups: string[], - lastAccessed: number, - expiresOn: number, - sourceTokenId: string, -}; - -/** - * Stores the groups in session storage for the given account - * @param {AccountInfo} account - * @param {Array} groups - */ -export const setGroupsInStorage = (account: AccountInfo, groups: string[]): void => { - if (!account.idTokenClaims) return; - - const newEntry: GroupMembershipEntry = { - groups: groups, - lastAccessed: Date.now(), - expiresOn: Date.now() + CACHE_TTL_IN_MS, - sourceTokenId: account.idTokenClaims['uti'] as string, - }; - - sessionStorage.setItem(`gmc.${account.idTokenClaims.aud}.${account.idTokenClaims.oid}`, JSON.stringify(newEntry)); -}; - -/** - * Checks if the groups are in session storage and if their associated ID token is not expired - * @param {AccountInfo} account - * @returns - */ -export const checkGroupsInStorage = (account: AccountInfo): boolean => { - if (!account.idTokenClaims) return false; - - const storageEntry = sessionStorage.getItem(`gmc.${account.idTokenClaims.aud}.${account.idTokenClaims.oid}`); - - if (!storageEntry) return false; - - const parsedStorageEntry = JSON.parse(storageEntry); - return parsedStorageEntry.groups && parsedStorageEntry.expiresOn >= Date.now() && parsedStorageEntry.sourceTokenId === account.idTokenClaims['uti']; -}; - -/** - * Returns the groups array from session storage - * @param {AccountInfo} account - * @returns - */ -export const getGroupsFromStorage = (account: AccountInfo): string[] | null => { - if (!account.idTokenClaims) return null; - - const storageEntry = sessionStorage.getItem(`gmc.${account.idTokenClaims.aud}.${account.idTokenClaims.oid}`); - - if (!storageEntry) return null; - - return (JSON.parse(storageEntry) as GroupMembershipEntry).groups; -}; - -/** - * This method clears session storage of group membership claims for the given account. - * @param {AccountInfo} account - */ -export const clearGroupsInStorage = (account: AccountInfo): void => { - if (!account.idTokenClaims) return; - - for (var key in sessionStorage) { - if (key.startsWith(`gmc.${account.idTokenClaims.aud}.${account.idTokenClaims.oid}`)) { - sessionStorage.removeItem(key); - } - } -}; diff --git a/5-AccessControl/2-call-api-groups/SPA/src/assets/.gitkeep b/5-AccessControl/2-call-api-groups/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/5-AccessControl/2-call-api-groups/SPA/src/environments/environment.prod.ts b/5-AccessControl/2-call-api-groups/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/5-AccessControl/2-call-api-groups/SPA/src/environments/environment.ts b/5-AccessControl/2-call-api-groups/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/5-AccessControl/2-call-api-groups/SPA/src/favicon.svg b/5-AccessControl/2-call-api-groups/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/5-AccessControl/2-call-api-groups/SPA/src/index.html b/5-AccessControl/2-call-api-groups/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/5-AccessControl/2-call-api-groups/SPA/src/main.ts b/5-AccessControl/2-call-api-groups/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/5-AccessControl/2-call-api-groups/SPA/src/polyfills.ts b/5-AccessControl/2-call-api-groups/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/5-AccessControl/2-call-api-groups/SPA/src/styles.css b/5-AccessControl/2-call-api-groups/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/5-AccessControl/2-call-api-groups/SPA/src/test.ts b/5-AccessControl/2-call-api-groups/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/5-AccessControl/2-call-api-groups/SPA/tsconfig.app.json b/5-AccessControl/2-call-api-groups/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/5-AccessControl/2-call-api-groups/SPA/tsconfig.json b/5-AccessControl/2-call-api-groups/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/5-AccessControl/2-call-api-groups/SPA/tsconfig.spec.json b/5-AccessControl/2-call-api-groups/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/5-AccessControl/2-call-api-groups/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ConfigurationTests.cs b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ConfigurationTests.cs deleted file mode 100644 index 7dab21ac..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ConfigurationTests.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Xunit; -using Microsoft.Extensions.Configuration; - -namespace ProfileAPI.Tests -{ - public class ConfigurationTests - { - public static IConfiguration InitConfiguration() - { - var config = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .Build(); - - return config; - } - - [Fact] - public void ShouldNotContainClientId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var clientId = myConfiguration.GetSection("AzureAd")["ClientId"]; - - Assert.False(Guid.TryParse(clientId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainTenantId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var tenantId = myConfiguration.GetSection("AzureAd")["TenantId"]; - - Assert.False(Guid.TryParse(tenantId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainDomain() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var domain = $"https://{myConfiguration.GetSection("AzureAd")["Domain"]}"; - - Assert.False(Uri.TryCreate(domain, UriKind.Absolute, out var uri)); - } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ProfileAPI.Tests.csproj b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ProfileAPI.Tests.csproj deleted file mode 100644 index b906e0f4..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.Tests/ProfileAPI.Tests.csproj +++ /dev/null @@ -1,31 +0,0 @@ - - - - net6.0 - - false - - - - - - Always - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.sln b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.sln deleted file mode 100644 index 0ce6ba81..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31005.135 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProfileAPI.Tests", "ProfileAPI.Tests\ProfileAPI.Tests.csproj", "{4FC6989B-850F-4556-BFDB-6F7E09C833F6}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "ProfileAPI", "ProfileAPI\ProfileAPI.csproj", "{F5A17F91-94F6-4C51-8349-3C6402990920}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {4FC6989B-850F-4556-BFDB-6F7E09C833F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {4FC6989B-850F-4556-BFDB-6F7E09C833F6}.Debug|Any CPU.Build.0 = Debug|Any CPU - {4FC6989B-850F-4556-BFDB-6F7E09C833F6}.Release|Any CPU.ActiveCfg = Release|Any CPU - {4FC6989B-850F-4556-BFDB-6F7E09C833F6}.Release|Any CPU.Build.0 = Release|Any CPU - {F5A17F91-94F6-4C51-8349-3C6402990920}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {F5A17F91-94F6-4C51-8349-3C6402990920}.Debug|Any CPU.Build.0 = Debug|Any CPU - {F5A17F91-94F6-4C51-8349-3C6402990920}.Release|Any CPU.ActiveCfg = Release|Any CPU - {F5A17F91-94F6-4C51-8349-3C6402990920}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {8C83F637-2E4B-4C2F-89E0-B09986656747} - EndGlobalSection -EndGlobal diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Controllers/ProfileController.cs b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Controllers/ProfileController.cs deleted file mode 100644 index 2ea845d4..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Controllers/ProfileController.cs +++ /dev/null @@ -1,170 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System; -using System.Linq; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Authorization; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.Identity.Client; -using Microsoft.Identity.Web; -using Microsoft.Identity.Web.Resource; -using Microsoft.EntityFrameworkCore; -using Microsoft.Extensions.Options; -using Microsoft.Graph; -using ProfileAPI.Models; - -namespace ProfileAPI.Controllers -{ - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class ProfileController : ControllerBase - { - private readonly ProfileContext _context; - private readonly ITokenAcquisition _tokenAcquisition; - private readonly GraphServiceClient _graphServiceClient; - private readonly IOptions _graphOptions; - - public ProfileController(ProfileContext context, ITokenAcquisition tokenAcquisition, GraphServiceClient graphServiceClient, IOptions graphOptions) - { - _context = context; - _tokenAcquisition = tokenAcquisition; - _graphServiceClient = graphServiceClient; - _graphOptions = graphOptions; - } - - // GET: api/ProfileItems/5 - [HttpGet("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:RequiredScopes")] - public async Task> GetProfileItem(string id) - { - ProfileItem profileItem = await _context.ProfileItems.FindAsync(id); - - if (profileItem == null) - { - return NotFound(); - } - - return profileItem; - } - - // POST api/values - [HttpPost] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:RequiredScopes")] - public async Task> PostProfileItem(ProfileItem profileItem) - { - profileItem.FirstLogin = false; - - try - { - User profile = await _graphServiceClient.Me.Request().GetAsync(); - - // populate with data from Graph - profileItem.Id = profile.Id; - profileItem.UserPrincipalName = profile.UserPrincipalName; - profileItem.GivenName = profile.GivenName; - profileItem.Surname = profile.Surname; - profileItem.JobTitle = profile.JobTitle; - profileItem.MobilePhone = profile.MobilePhone; - profileItem.PreferredLanguage = profile.PreferredLanguage; - } - catch (MsalException ex) - { - return BadRequest("An authentication error occurred while acquiring a token for downstream API\n" + ex.ErrorCode + "\n" + ex.Message); - } - catch (MicrosoftIdentityWebChallengeUserException ex) - { - // append the WWW-Authenticate header from the eSTS response to the response to the client app - // to learn more, visit: https://learn.microsoft.com/azure/active-directory/develop/v2-conditional-access-dev-guide - _tokenAcquisition.ReplyForbiddenWithWwwAuthenticateHeader(_graphOptions.Value.Scopes.Split(' '), ex.MsalUiRequiredException); - - return Unauthorized(ex.MsalUiRequiredException.ResponseBody); - } - catch (ServiceException svcex) when (svcex.Message.Contains("Continuous access evaluation resulted in claims challenge")) - { - if (IsClientCapableofClaimsChallenge(HttpContext)) - { - // append the WWW-Authenticate header from the Microsoft Graph response to the response to the client app - // to learn more, visit: https://learn.microsoft.com/azure/active-directory/develop/app-resilience-continuous-access-evaluation?tabs=dotnet - HttpContext.Response.Headers.Add("WWW-Authenticate", svcex.ResponseHeaders.WwwAuthenticate.ToString()); - - return Unauthorized(svcex.RawResponseBody); - } - else - { - return Unauthorized("Continuous access evaluation resulted in claims challenge but the client is not capable. Please enable client capabilities and try again."); - } - } - catch (Exception ex) - { - return BadRequest("An error occurred while calling the downstream API\n" + ex.Message); - } - - _context.ProfileItems.Add(profileItem); - await _context.SaveChangesAsync(); - - return CreatedAtAction("GetProfileItem", new { id = profileItem.Id }, profileItem); - } - - // PUT: api/ProfileItems/5 - [HttpPut("{id}")] - [RequiredScope(RequiredScopesConfigurationKey = "AzureAd:RequiredScopes")] - public async Task PutProfileItem(string id, ProfileItem profileItem) - { - if (id != profileItem.Id) - { - return BadRequest(); - } - - // NOTE: We only update the entry in the local Db, and not in MS graph .. - _context.Entry(profileItem).State = EntityState.Modified; - - try - { - await _context.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!ProfileItemExists(id)) - { - return NotFound(); - } - else - { - throw; - } - } - - return NoContent(); - } - - private bool ProfileItemExists(string id) - { - return _context.ProfileItems.Any(e => e.Id == id); - } - - /// - /// Evaluates for the presence of the client capabilities claim (xms_cc) and accordingly returns a response if present. - /// - private bool IsClientCapableofClaimsChallenge(HttpContext context) - { - string clientCapabilitiesClaim = "xms_cc"; - - if (context == null || context.User == null || context.User.Claims == null || !context.User.Claims.Any()) - { - throw new ArgumentNullException(nameof(context), "No user context is available to pick claims from"); - } - - var ccClaim = context.User.FindAll(clientCapabilitiesClaim).FirstOrDefault(x => x.Type == "xms_cc"); - - if (ccClaim != null && (ccClaim.Value == "cp1" || ccClaim.Value == "CP1")) - { - return true; - } - - return false; - } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileContext.cs b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileContext.cs deleted file mode 100644 index b06f8fe5..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileContext.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace ProfileAPI.Models -{ - public class ProfileContext : DbContext - { - public ProfileContext(DbContextOptions options) - : base(options) - { - - } - public DbSet ProfileItems { get; set; } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileItem.cs b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileItem.cs deleted file mode 100644 index aa1797c8..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Models/ProfileItem.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.ComponentModel.DataAnnotations; - -namespace ProfileAPI.Models -{ - public class ProfileItem - { - [Key] - public string Id { get; set; } - public string UserPrincipalName { get; set; } - public string GivenName { get; set; } - public string Surname { get; set; } - public string JobTitle { get; set; } - public string MobilePhone { get; set; } - public string PreferredLanguage { get; set; } - public bool FirstLogin { get; set; } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/ProfileAPI.csproj b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/ProfileAPI.csproj deleted file mode 100644 index 4990c47f..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/ProfileAPI.csproj +++ /dev/null @@ -1,24 +0,0 @@ - - - - net6.0 - aspnet-ProfileAPI-03230DB1-5145-408C-A48B-BE3DAFC56C30 - 0 - - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - - diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Program.cs b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Program.cs deleted file mode 100644 index d01589a1..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Program.cs +++ /dev/null @@ -1,23 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace ProfileAPI -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Properties/launchSettings.json b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Properties/launchSettings.json deleted file mode 100644 index 5c8e66be..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44351", - "sslPort": 44351 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "https://localhost:44351/api/profile", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "ProfileAPI": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44351/", - "sslPort": 44351 - } - } -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Startup.cs b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Startup.cs deleted file mode 100644 index 0f5ce2b5..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/Startup.cs +++ /dev/null @@ -1,126 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using Microsoft.EntityFrameworkCore; -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.Extensions.Hosting; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.IdentityModel.Logging; -using Microsoft.Identity.Web; -using ProfileAPI.Models; -using Microsoft.AspNetCore.Diagnostics; -using Microsoft.AspNetCore.Http; -using System.IdentityModel.Tokens.Jwt; - -namespace ProfileAPI -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - // This is required to be instantiated before the OpenIdConnectOptions starts getting configured. - // By default, the claims mapping will map claim names in the old format to accommodate older SAML applications. - // 'http://schemas.microsoft.com/ws/2008/06/identity/claims/role' instead of 'roles' - // This flag ensures that the ClaimsIdentity claims collection will be built from the claims in the token - JwtSecurityTokenHandler.DefaultMapInboundClaims = false; - - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - { - Configuration.Bind("AzureAd", options); - options.Events = new JwtBearerEvents(); - - /// - /// Below you can do extended token validation and check for additional claims, such as: - /// - /// - check if the caller's tenant is in the allowed tenants list via the 'tid' claim (for multi-tenant applications) - /// - check if the caller's account is homed or guest via the 'acct' optional claim - /// - check if the caller belongs to right roles or groups via the 'roles' or 'groups' claim, respectively - /// - /// Bear in mind that you can do any of the above checks within the individual routes and/or controllers as well. - /// For more information, visit: https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validate-the-user-has-permission-to-access-this-data - /// - - //options.Events.OnTokenValidated = async context => - //{ - // string[] allowedClientApps = { /* list of client ids to allow */ }; - - // string clientappId = context?.Principal?.Claims - // .FirstOrDefault(x => x.Type == "azp" || x.Type == "appid")?.Value; - - // if (!allowedClientApps.Contains(clientappId)) - // { - // throw new UnauthorizedAccessException("The client app is not permitted to access this API"); - // } - - // await Task.CompletedTask; - //}; - }, options => - { - Configuration.Bind("AzureAd", options); - }) - .EnableTokenAcquisitionToCallDownstreamApi(options => Configuration.Bind("AzureAd", options)) - .AddMicrosoftGraph(Configuration.GetSection("DownstreamAPI")) - .AddInMemoryTokenCaches(); - - services.AddDbContext(opt => opt.UseInMemoryDatabase("Profile")); - - services.AddControllers(); - - // The following flag can be used to get more descriptive errors in development environments - // Enable diagnostic logging to help with troubleshooting. For more details, see https://aka.ms/IdentityModel/PII. - // You might not want to keep this following flag on for production - IdentityModelEventSource.ShowPII = true; - - // Allowing CORS for all domains and HTTP methods for the purpose of the sample - // In production, modify this with the actual domains and HTTP methods you want to allow - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader() - .WithExposedHeaders("WWW-Authenticate"); // expose header to receive claim challenges - })); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - // Since IdentityModel version 5.2.1 (or since Microsoft.AspNetCore.Authentication.JwtBearer version 2.2.0), - // PII hiding in log files is enabled by default for GDPR concerns. - // For debugging/development purposes, one can enable additional detail in exceptions by setting IdentityModelEventSource.ShowPII to true. - IdentityModelEventSource.ShowPII = true; - - app.UseDeveloperExceptionPage(); - } - else - { - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } - - app.UseCors("default"); - app.UseHttpsRedirection(); - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.Development.json b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.Development.json deleted file mode 100644 index e203e940..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Debug", - "System": "Information", - "Microsoft": "Information" - } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.json b/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.json deleted file mode 100644 index e4ece0c7..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI/appsettings.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "AzureAd": { - "Instance": "https://login.microsoftonline.com/", - "TenantId": "Enter the tenant ID", - "ClientId": "Enter the client ID (aka 'Application ID')", - "ClientSecret": "Enter the client Secret", - "ClientCapabilities": [ "CP1" ], - "RequiredScopes": [ "access_graph_on_behalf_of_user" ] - }, - "DownstreamAPI": { - "Scopes": "User.Read offline_access", - "BaseUrl": "https://graph.microsoft.com/v1.0/" - }, - "https_port": 44351, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" -} diff --git a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/AppCreationScripts.md b/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Cleanup.ps1 b/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index 23ef545e..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,189 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'service' (ProfileAPI) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'ProfileAPI'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'ProfileAPI'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (ProfileAPI) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'ProfileAPI'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed ProfileAPI.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'ProfileAPI'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'ProfileAPI'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } - Write-Host "Removing 'client' (ProfileSPA) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'ProfileSPA'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'ProfileSPA'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (ProfileSPA) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'ProfileSPA'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed ProfileSPA.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'ProfileSPA'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'ProfileSPA'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Configure.ps1 b/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Configure.ps1 deleted file mode 100644 index f89c40d9..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,539 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -# Create an application key -# See https://www.sabin.io/blog/adding-an-azure-active-directory-application-and-key-using-powershell/ -Function CreateAppKey([DateTime] $fromDate, [double] $durationInMonths) -{ - $key = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPasswordCredential - - $key.StartDateTime = $fromDate - $key.EndDateTime = $fromDate.AddMonths($durationInMonths) - $key.KeyId = (New-Guid).ToString() - $key.DisplayName = "app secret" - - return $key -} - -# Adds the requiredAccesses (expressed as a pipe separated string) to the requiredAccess structure -# The exposed permissions are in the $exposedPermissions collection, and the type of permission (Scope | Role) is -# described in $permissionType -Function AddResourcePermission($requiredAccess, ` - $exposedPermissions, [string]$requiredAccesses, [string]$permissionType) -{ - foreach($permission in $requiredAccesses.Trim().Split("|")) - { - foreach($exposedPermission in $exposedPermissions) - { - if ($exposedPermission.Value -eq $permission) - { - $resourceAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess - $resourceAccess.Type = $permissionType # Scope = Delegated permissions | Role = Application permissions - $resourceAccess.Id = $exposedPermission.Id # Read directory data - $requiredAccess.ResourceAccess += $resourceAccess - } - } - } -} - -# -# Example: GetRequiredPermissions "Microsoft Graph" "Graph.Read|User.Read" -# See also: http://stackoverflow.com/questions/42164581/how-to-configure-a-new-azure-ad-application-through-powershell -Function GetRequiredPermissions([string] $applicationDisplayName, [string] $requiredDelegatedPermissions, [string]$requiredApplicationPermissions, $servicePrincipal) -{ - # If we are passed the service principal we use it directly, otherwise we find it from the display name (which might not be unique) - if ($servicePrincipal) - { - $sp = $servicePrincipal - } - else - { - $sp = Get-MgServicePrincipal -Filter "DisplayName eq '$applicationDisplayName'" - } - $appid = $sp.AppId - $requiredAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess - $requiredAccess.ResourceAppId = $appid - $requiredAccess.ResourceAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess] - - # $sp.Oauth2Permissions | Select Id,AdminConsentDisplayName,Value: To see the list of all the Delegated permissions for the application: - if ($requiredDelegatedPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.Oauth2PermissionScopes -requiredAccesses $requiredDelegatedPermissions -permissionType "Scope" - } - - # $sp.AppRoles | Select Id,AdminConsentDisplayName,Value: To see the list of all the Application permissions for the application - if ($requiredApplicationPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.AppRoles -requiredAccesses $requiredApplicationPermissions -permissionType "Role" - } - return $requiredAccess -} - - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function creates a new Azure AD scope (OAuth2Permission) with default and provided values -#> -Function CreateScope( [string] $value, [string] $userConsentDisplayName, [string] $userConsentDescription, [string] $adminConsentDisplayName, [string] $adminConsentDescription, [string] $consentType) -{ - $scope = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope - $scope.Id = New-Guid - $scope.Value = $value - $scope.UserConsentDisplayName = $userConsentDisplayName - $scope.UserConsentDescription = $userConsentDescription - $scope.AdminConsentDisplayName = $adminConsentDisplayName - $scope.AdminConsentDescription = $adminConsentDescription - $scope.IsEnabled = $true - $scope.Type = $consentType - return $scope -} - -<#.Description - This function creates a new Azure AD AppRole with default and provided values -#> -Function CreateAppRole([string] $types, [string] $name, [string] $description) -{ - $appRole = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole - $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string] - $typesArr = $types.Split(',') - foreach($type in $typesArr) - { - $appRole.AllowedMemberTypes += $type; - } - $appRole.DisplayName = $name - $appRole.Id = New-Guid - $appRole.IsEnabled = $true - $appRole.Description = $description - $appRole.Value = $name; - return $appRole -} - -<#.Description - This function takes a string as input and creates an instance of an Optional claim object -#> -Function CreateOptionalClaim([string] $name) -{ - <#.Description - This function creates a new Azure AD optional claims with default and provided values - #> - - $appClaim = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim - $appClaim.AdditionalProperties = New-Object System.Collections.Generic.List[string] - $appClaim.Source = $null - $appClaim.Essential = $false - $appClaim.Name = $name - return $appClaim -} - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the service AAD application - Write-Host "Creating the AAD application (ProfileAPI)" - # Get a 6 months application key for the service Application - $fromDate = [DateTime]::Now; - $key = CreateAppKey -fromDate $fromDate -durationInMonths 6 - - # create the application - $serviceAadApplication = New-MgApplication -DisplayName "ProfileAPI" ` - -Web ` - @{ ` - } ` - -Api ` - @{ ` - RequestedAccessTokenVersion = 2 ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - #add a secret to the application - $pwdCredential = Add-MgApplicationPassword -ApplicationId $serviceAadApplication.Id -PasswordCredential $key - $serviceAppKey = $pwdCredential.SecretText - - $currentAppId = $serviceAadApplication.AppId - $currentAppObjectId = $serviceAadApplication.Id - - $serviceIdentifierUri = 'api://'+$currentAppId - Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @($serviceIdentifierUri) - - # create the service principal of the newly created application - $serviceServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($serviceServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "idtyp" - $optionalClaims.AccessToken += ($newClaim) - $newClaim = CreateOptionalClaim -name "xms_cc" - $optionalClaims.AccessToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - - # rename the user_impersonation scope if it exists to match the readme steps or add a new scope - - # delete default scope i.e. User_impersonation - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = $serviceAadApplication.Api.Oauth2PermissionScopes | Where-Object { $_.Value -eq "User_impersonation" } - - if($scope -ne $null) - { - # disable the scope - $scope.IsEnabled = $false - $scopes.Add($scope) - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - - # clear the scope - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @()} - } - - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = CreateScope -value access_graph_on_behalf_of_user ` - -userConsentDisplayName "Access Microsoft Graph as the signed-in user" ` - -userConsentDescription "Allow the Microsoft Graph APi on your behalf." ` - -adminConsentDisplayName "Access Microsoft Graph as the signed-in user" ` - -adminConsentDescription "Allow the app to access Microsoft Graph Api as the signed-in user" ` - -consentType "User" ` - - - $scopes.Add($scope) - - # add/update scopes - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - Write-Host "Done creating the service application (ProfileAPI)" - - # URL of the AAD application in the Azure portal - # Future? $servicePortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $servicePortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "service$currentAppIdProfileAPI" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'service' to 'Microsoft Graph') - Write-Host "Getting access from 'service' to 'Microsoft Graph'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "Microsoft Graph"` - -requiredDelegatedPermissions "User.Read|offline_access" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'Microsoft Graph' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'ProfileAPI' at `n $servicePortalUrl" -ForegroundColor Green - # Create the client AAD application - Write-Host "Creating the AAD application (ProfileSPA)" - # create the application - $clientAadApplication = New-MgApplication -DisplayName "ProfileSPA" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200", "http://localhost:4200/auth"; ` - } ` - -SignInAudience AzureADMyOrg ` - #end of command - - $currentAppId = $clientAadApplication.AppId - $currentAppObjectId = $clientAadApplication.Id - - $tenantName = (Get-MgApplication -ApplicationId $currentAppObjectId).PublisherDomain - #Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @("https://$tenantName/ProfileSPA") - - # create the service principal of the newly created application - $clientServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($clientServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "acct" - $optionalClaims.AccessToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - Write-Host "Done creating the client application (ProfileSPA)" - - # URL of the AAD application in the Azure portal - # Future? $clientPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $clientPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "client$currentAppIdProfileSPA" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'client' to 'service') - Write-Host "Getting access from 'client' to 'service'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "ProfileAPI"` - -requiredDelegatedPermissions "access_graph_on_behalf_of_user" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'service' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'ProfileSPA' at `n $clientPortalUrl" -ForegroundColor Green - - # Configure known client applications for service - Write-Host "Configure known client applications for the 'service'" - $knownApplications = New-Object System.Collections.Generic.List[System.String] - $knownApplications.Add($clientAadApplication.AppId) - Update-MgApplication -ApplicationId $serviceAadApplication.Id -Api @{KnownClientApplications = $knownApplications} - Write-Host "knownclientapplication setting configured." - - - # Update config file for 'service' - # $configFile = $pwd.Path + "\..\API\ProfileAPI\appsettings.json" - $configFile = $(Resolve-Path ($pwd.Path + "\..\API\ProfileAPI\appsettings.json")) - - $dictionary = @{ "Enter the client Secret" = $serviceAppKey;"Enter the client ID (aka 'Application ID')" = $serviceAadApplication.AppId;"Enter the tenant ID" = $tenantId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $clientAadApplication.AppId;"Enter_the_Tenant_Info_Here" = $tenantId;"Enter_the_Web_Api_Application_Id_Here" = $serviceAadApplication.AppId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - Write-Host "IMPORTANT: Please follow the instructions below to complete a few manual step(s) in the Azure portal": - Write-Host "- For service" - Write-Host " - Navigate to $servicePortalUrl" - Write-Host " - Application 'service' publishes delegated permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/README-use-certificate.md b/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/README-use-certificate.md deleted file mode 100644 index 67d116f2..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/README-use-certificate.md +++ /dev/null @@ -1,175 +0,0 @@ -# How to use certificates instead of secrets in your client applications - -We recommend you familiarize yourself with [Using certificates with Microsoft\.Identity\.Web](https://github.com/AzureAD/microsoft-identity-web/wiki/Certificates#getting-certificates-from-key-vault) as it provides various ways for a developer to use a certificate instead of a client secret to authenticate their apps with Azure AD. -> Note: Please carefully go through [Getting certificates from Key Vault](https://github.com/AzureAD/microsoft-identity-web/wiki/Certificates#getting-certificates-from-key-vault) when deploying your app to production. - -- [Using a Client certificate with KeyVault](#using-a-client-certificate-with-keyvault) - - [To be able to use a certificate, please make the following changes:](#to-be-able-to-use-a-certificate-please-make-the-following-changes) -- [Using a local Client certificate](#using-a-local-client-certificate) - - [Generate a self-signed certificate](#generate-a-self-signed-certificate) - - [Add a certificate in the application's registration page](#add-a-certificate-in-the-applications-registration-page) -- [More information](#more-information) - - [Using Azure KeyVault](#using-azure-keyvault) - - [About Managed Identities for Azure Resources](#about-managed-identities-for-azure-resources) - -## Using a Client certificate with KeyVault - -This sample was configured to use a client secret, but have an option to use a certificate instead. - -### To be able to use a certificate, please make the following changes: - -1. Open Client/appsettings.json file -1. **Comment out** the next line: - -```json -"ClientSecret": "[Copy the client secret added to the app from the Azure portal]" -``` - -1. **Un-comment** the following lines: - -```json -"ClientCertificates": [ - { - "SourceType": "KeyVault", - "KeyVaultUrl": "[Enter URL for you KeyVault]", - "KeyVaultCertificateName": "the name of the certificate, for ex.TodoListClient-aspnetcore-webapi" - } -] -``` - -1. While inside the sample folder, open a PowerShell terminal - -1. Set next execution policy - -```powershell -Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force -``` - -1. Run the Cleanup.ps1 script to delete any existing old App Registration for the sample - -```powershell -AppCreationScripts-withCert/Cleanup.ps1 -``` - -1. Run the AppCreationScripts-withCert/Configure.ps1 script to re-create the App Registration. The script will also create a [application name].pfx file that will be **manually** uploaded into Key Vault. When asked about a password, remember it - you will need the password when uploading the certificate. - -```powershell -AppCreationScripts-withCert/Configure.ps1 -``` - -1. To use KeyVault, sign in to the [Azure portal](https://portal.azure.com) and [create an Azure Key Vault](https://docs.microsoft.com/azure/key-vault/general/quick-create-portal) -1. Inside Client/appsettings.json file - update "KeyVaultUrl" key to have URL of your Key Vault, like https://[your Key Vault name here].vault.azure.net -1. [Upload](https://docs.microsoft.com/azure/key-vault/certificates/tutorial-import-certificate#import-a-certificate-to-key-vault) the generated AppCreationScripts-withCert\.PFX file into the Key Vault -1. Run the sample as indicated in [README.md](README.md) -1. Use the account you used to upload the certificate to key vault to sign-into the web app. -1. In production environments, you'd give access to your deployed web app or Virtual machine to read this certificate's Key Vault entry. - -## Using a local Client certificate - -1. Open Client/appsettings.json file -2. **Comment out** the next line: - -```json -"ClientSecret": "[Copy the client secret added to the app from the Azure portal]" -``` - -1. **Un-comment** the following lines: - -```json -"ClientCertificates": [ - { - "SourceType": "StoreWithDistinguishedName", - "CertificateStorePath": "CurrentUser/My", - "CertificateDistinguishedName": "" - } -] -``` - -1. While inside the sample folder, open a Powershell terminal - -1. Set next execution policy - -```powershell -Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force -``` - -1. Run the *Cleanup.ps1* script to delete any existing old App Registration for the sample - -```powershell -AppCreationScripts-withCert/Cleanup.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" -``` - -1. Run the AppCreationScripts-withCert/Configure.ps1 script to re-create the App Registration. The script will also create a [application name].pfx file that will be **manually** uploaded into Key Vault. When asked about a password, remember it - you will need the password when uploading the certificate. - -```powershell -AppCreationScripts-withCert/Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" -``` - -1. Run the sample as indicated in [README.md](README.md) - -### Generate a self-signed certificate - -If you wish to generate a new self-signed certificate yourself, you can follow the steps below. If you have an actual valid certificate available, you can skip the following step. - -
    -Click here to use Powershell - -To generate a new self-signed certificate, we will use the [New-SelfSignedCertificate](https://docs.microsoft.com/powershell/module/pkiclient/new-selfsignedcertificate) Powershell command. - -1. Open PowerShell and run the command with the following parameters to create a new self-signed certificate that will be stored in the **current user** certificate store on your computer: - -```PowerShell -$cert=New-SelfSignedCertificate -Subject "/CN=the name will be assigned automatically by PowerShell script and it will be equal to the Application name" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -``` - -1. Export this certificate using the "Manage User Certificate" MMC snap-in accessible from the Windows Control Panel. You can also add other options to generate the certificate in a different store such as the **Computer** or **service** store (see [How to: View Certificates with the MMC Snap-in](https://docs.microsoft.com/dotnet/framework/wcf/feature-details/how-to-view-certificates-with-the-mmc-snap-in) for more details). - -Export one with private key as *the name will be assigned automatically by PowerShell script and it will be equal to the Application name.pfx* and another as *the name will be assigned automatically by PowerShell script and it will be equal to the Application name.cer* without private key. - -
    - -
    -Click here to use OpenSSL - -Type the following in a terminal. - -```PowerShell -openssl req -x509 -newkey rsa:2048 -sha256 -days 365 -keyout the name will be assigned automatically by PowerShell script and it will be equal to the Application name.key -out the name will be assigned automatically by PowerShell script and it will be equal to the Application name.cer -nodes -batch - -Generating a RSA private key -......................................................... -......................................................... -writing new private key to 'the name will be assigned automatically by PowerShell script and it will be equal to the Application name.key' -``` - -The following files should be generated: *the name will be assigned automatically by PowerShell script and it will be equal to the Application name.key*, *the name will be assigned automatically by PowerShell script and it will be equal to the Application name.cer* -You can generate the the name will be assigned automatically by PowerShell script and it will be equal to the Application name.pfx certificate + private key combination with the command below: - -```console -openssl pkcs12 -export -out the name will be assigned automatically by PowerShell script and it will be equal to the Application name.pfx -inkey the name will be assigned automatically by PowerShell script and it will be equal to the Application name.key -in the name will be assigned automatically by PowerShell script and it will be equal to the Application name.cer -``` - -Enter an export password when prompted and make a note of it. - -The following file should be generated: *the name will be assigned automatically by PowerShell script and it will be equal to the Application name.pfx*. - -
    - -### Add a certificate in the application's registration page - -1. Select **Upload certificate** and, in select the browse button on the right to select the certificate you just exported. -1. Select **Add** - -## More information - -### Using Azure KeyVault - -Cloud applications and services use cryptographic keys and secrets to help keep information secure. [Azure KeyVault](https://azure.microsoft.com/services/key-vault/) safeguards these keys and secrets. When you use Key Vault, you can encrypt authentication keys, storage account keys, data encryption keys, .pfx files, and passwords by using keys that are protected by hardware security modules (HSMs). - -### About Managed Identities for Azure Resources - -[Azure KeyVault](https://azure.microsoft.com/services/key-vault/#product-overview) - -[Managed Identities for Azure Resources](https://docs.microsoft.com/azure/active-directory/managed-identities-azure-resources/) - -[Managed Identities for Azure App Services](https://docs.microsoft.com/azure/app-service/overview-managed-identity?tabs=dotnet) diff --git a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/sample.json b/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/sample.json deleted file mode 100644 index bc33cdb4..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/AppCreationScripts/sample.json +++ /dev/null @@ -1,106 +0,0 @@ -{ - "Sample": { - "Author": "derisen", - "Title": "An Angular single-page application calling an AspNetCore web API which calls the Microsoft Graph API using the on-behalf-of (OBO) flow", - "Level": 300, - "Client": "Angular SPA", - "Service": ".NET Core web API", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Platform": "javascript", - "Languages": [ - "typescript", - "csharp" - ], - "Products": [ - "azure-active-directory", - "msal-js", - "msal-angular", - "microsoft-identity-web" - ], - "Description": "An Angular single-page application signing-in a user and calling an AspNetCore Web API protected with Azure AD. The Web API in turn then calls the Microsoft Graph API using the on-behalf-of (OBO) flow" - }, - "ReadmeSetup": { - "CertificateOption": "1" - }, - "AADApps": [ - { - "Id": "service", - "Name": "ProfileAPI", - "Kind": "WebApi", - "SDK": "MicrosoftIdentityWeb", - "Audience": "AzureADMyOrg", - "SampleSubPath": "6-AdvancedScenarios\\1-call-api-obo\\API", - "PasswordCredentials": "Auto", - "Scopes": ["access_graph_on_behalf_of_user"], - "RequiredResourcesAccess": [ - { - "Resource": "Microsoft Graph", - "DelegatedPermissions": ["User.Read", "offline_access"] - } - ], - "OptionalClaims": { - "AccessTokenClaims": ["idtyp", "xms_cc"] - } - }, - { - "Id": "client", - "Name": "ProfileSPA", - "Kind": "SinglePageApplication", - "Audience": "AzureADMyOrg", - "HomePage": "http://localhost:4200", - "ReplyUrls": "http://localhost:4200, http://localhost:4200/auth", - "SampleSubPath": "6-AdvancedScenarios\\1-call-api-obo\\SPA", - "SDK": "MsalAngular", - "RequiredResourcesAccess": [ - { - "Resource": "service", - "DelegatedPermissions": ["access_graph_on_behalf_of_user"] - } - ], - "OptionalClaims": { - "AccessTokenClaims": ["acct"] - } - } - ], - "CodeConfiguration": [ - { - "App": "service", - "SettingKind": "Replace", - "SettingFile": "\\..\\API\\ProfileAPI\\appsettings.json", - "Mappings": [ - { - "key": "Enter the client Secret", - "value": "service.AppKey" - }, - { - "key": "Enter the client ID (aka 'Application ID')", - "value": ".AppId" - }, - { - "key": "Enter the tenant ID", - "value": "$tenantId" - } - ] - }, - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Tenant_Info_Here", - "value": "$tenantId" - }, - { - "key": "Enter_the_Web_Api_Application_Id_Here", - "value": "service.AppId" - } - ] - } - ] -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/README.md b/6-AdvancedScenarios/1-call-api-obo/README.md deleted file mode 100644 index 7cb1d0c0..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/README.md +++ /dev/null @@ -1,491 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates an Angular single-page application (SPA) which lets a user authenticate with their Azure AD tenant and obtains an access token to call an ASP.NET Core web API, protected by Azure Active Directory (Azure AD). -languages: - - typescript - - csharp -products: - - azure-active-directory - - msal-js - - msal-angular - - microsoft-identity-web - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-graph-obo -extensions: - services: ms-identity - platform: javascript - endpoint: AAD v2.0 - level: 300 - client: Angular SPA - service: .NET Core web API ---- - -# An Angular single-page application calling an AspNetCore web API which calls the Microsoft Graph API using the on-behalf-of(OBO) flow - -* [Overview](#overview) -* [Scenario](#scenario) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates an Angular single-page application (SPA) which lets a user authenticate with their Azure AD tenant and obtains an [access token](https://aka.ms/access-tokens) to call an ASP.NET Core web API, protected by [Azure Active Directory (Azure AD)](https://azure.microsoft.com/services/active-directory/). -The web API then proceeds to obtain another access token for [Microsoft Graph API](https://developer.microsoft.com/graph) using the [OAuth 2.0 on-behalf-of flow](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-on-behalf-of-flow). -The web API's call to Microsoft Graph is made using the [Microsoft Graph SDK](https://docs.microsoft.com/graph/sdks/sdks-overview). - -## Scenario - -- The sample implements an **onboarding** scenario where a profile is created for a new user whose fields are pre-populated by the available information about the user on Microsoft Graph. -- The **ProfileSPA** uses [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) to authenticate a user. -- Once the user authenticates, **ProfileSPA** obtains an [access token](https://aka.ms/access-tokens) from Azure AD. -- The access token is then used to authorize the **ProfileAPI**. This access token is also used to obtain another access token to call MS Graph API **on user's behalf**. In order to call MS Graph API, **ProfileAPI** uses the [Microsoft Graph SDK](https://docs.microsoft.com/graph/sdks/sdks-overview). -- To protect its endpoint and accept only the authorized calls, the ProfileAPI uses [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web). - -![Overview](./ReadmeFiles/topology.png) - -## Contents - -| File/folder | Description | -|-------------------------------------|------------------------------------------------------------| -| `SPA/src/app/auth-config.ts` | Authentication parameters for SPA project reside here. | -| `SPA/src/app/app.module.ts` | MSAL Angular is initialized here. | -| `API/ProfileAPI/appsettings.json` | Authentication parameters for API project reside here. | -| `API/ProfileAPI/Startup.cs` | Microsoft.Identity.Web is initialized here. | -| `API/ProfileAPI/ProfileController.cs` | MVC controller serving API endpoints | - -## Prerequisites - -* Either [Visual Studio](https://visualstudio.microsoft.com/downloads/) or [Visual Studio Code](https://code.visualstudio.com/download) and [.NET Core SDK](https://www.microsoft.com/net/learn/get-started) -* An **Azure AD** tenant. For more information, see: [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/test-setup-environment#get-a-test-tenant) -* A user account in your **Azure AD** tenant. - ->This sample will not work with a **personal Microsoft account**. If you're signed in to the [Azure portal](https://portal.azure.com) with a personal Microsoft account and have not created a user account in your directory before, you will need to create one before proceeding. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console -git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 6-AdvancedScenarios/1-call-api-obo/API/ProfileAPI - dotnet restore -``` - -### Step 3. Trust development certificates - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 4. Install Angular SPA dependencies - -```console - cd ../../ - cd SPA - npm install -``` - -There are two projects in this sample. Each needs to be separately registered in your Azure AD tenant. To register these projects, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Choose the Azure AD tenant where you want to create your applications - -To manually register the apps, as a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -#### Register the service app (ProfileAPI) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `ProfileAPI`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Certificates & secrets** blade in the left to open the page where you can generate secrets and upload certificates. -1. In the **Client secrets** section, select **New client secret**: - 1. Type a key description (for instance `app secret`). - 1. Select one of the available key durations (**6 months**, **12 months** or **Custom**) as per your security posture. - 1. The generated key value will be displayed when you select the **Add** button. Copy and save the generated value for use in later steps. - 1. You'll need this key later in your code's configuration files. This key value will not be displayed again, and is not retrievable by any other means, so make sure to note it from the Azure portal before navigating to any other screen or blade. - > :bulb: For enhanced security, instead of using client secrets, consider [using certificates](./README-use-certificate.md) and [Azure KeyVault](https://azure.microsoft.com/services/key-vault/#product-overview). - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **Microsoft APIs** tab is selected. - 1. In the *Commonly used Microsoft APIs* section, select **Microsoft Graph** - 1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is requested by apps that signs-in users. - 1. In the **Delegated permissions** section, select **User.Read**, **offline_access** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`api://{clientId}`) by selecting **Save**. Read more about Application ID URI at [Validation differences by supported account types \(signInAudience\)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and enter the values as indicated below: - 1. For **Scope name**, use `access_graph_on_behalf_of_user`. - 1. Select **Admins and users** options for **Who can consent?**. - 1. For **Admin consent display name** type in *Access Microsoft Graph as the signed-in user*. - 1. For **Admin consent description** type in *Allow the app to access Microsoft Graph Api as the signed-in user*. - 1. For **User consent display name** type in *Access Microsoft Graph on your behalf*. - 1. For **User consent description** type in *Allow the Microsoft Graph APi on your behalf.*. - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **idtyp**. - > Indicates token type. This claim is the most accurate way for an API to determine if a token is an app token or an app+user token. This is not issued in tokens issued to users. - 1. Select **Add** to save your changes. -1. Still on the same app registration, select the **Manifest** blade to the left. - 1. Set the **optionalClaims** property as shown below to request client capabilities claim *xms_cc*: - - ```json - "optionalClaims": - { - "accessToken": [ - { - "additionalProperties": [], - "essential": false, - "name": "xms_cc", - "source": null - } - ], - "idToken": [], - "saml2Token": [] - } - ``` - -##### Configure the service app (ProfileAPI) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\ProfileAPI\appsettings.json` file. -1. Find the key `Enter the client Secret` and replace the existing value with the generated secret that you saved during the creation of `ProfileAPI` copied from the Azure portal. -1. Find the key `Enter the client ID (aka 'Application ID')` and replace the existing value with the application ID (clientId) of `ProfileAPI` app copied from the Azure portal. -1. Find the key `Enter the tenant ID` and replace the existing value with your Azure AD tenant/directory ID. - -#### Register the client app (ProfileSPA) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `ProfileSPA`. - 1. Under **Supported account types**, select **Accounts in this organizational directory only** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200` - 1. `http://localhost:4200/auth` - 1. Click **Save** to save your changes. -1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `ProfileAPI`. - 1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is requested by apps that signs-in users. - 1. In the **Delegated permissions** section, select **access_graph_on_behalf_of_user** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **acct**. - > Provides user's account status in tenant. If the user is a **member** of the tenant, the value is *0*. If they're a **guest**, the value is *1*. - 1. Select **Add** to save your changes. - -##### Configure the client app (ProfileSPA) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `ProfileSPA` app copied from the Azure portal. -1. Find the key `Enter_the_Tenant_Info_Here` and replace the existing value with your Azure AD tenant/directory ID. -1. Find the key `Enter_the_Web_Api_Application_Id_Here` and replace the existing value with the application ID (clientId) of `ProfileAPI` app copied from the Azure portal. - -#### Configure Known Client Applications for service (ProfileAPI) - -For a middle-tier web API (`ProfileAPI`) to be able to call a downstream web API, the middle tier app needs to be granted the required permissions as well. However, since the middle-tier cannot interact with the signed-in user, it needs to be explicitly bound to the client app in its **Azure AD** registration. This binding merges the permissions required by both the client and the middle-tier web API and presents it to the end user in a single consent dialog. The user then consent to this combined set of permissions. To achieve this, you need to add the **Application Id** of the client app to the `knownClientApplications` property in the **manifest** of the web API. Here's how: - -1. In the [Azure portal](https://portal.azure.com), navigate to your `ProfileAPI` app registration, and select the **Manifest** blade. -1. In the manifest editor, change the `knownClientApplications: []` line so that the array contains the Client ID of the client application (`ProfileSPA`) as an element of the array. - -For instance: - -```json - "knownClientApplications": ["Enter_the_Application_Id_Here"], -``` - -1. **Save** the changes to the manifest. - -### Step 5: Running the sample - -Using a command line interface such as VS Code integrated terminal, locate the application directory. Then: - -```console - cd SPA - npm start -``` - -In a separate console window, execute the following commands: - -```console - cd API/ProfileAPI - dotnet run -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. -2. Sign-in using the button on top-right corner. -3. If this is your first sign-in, you will be redirected to the onboarding page (the app will try to make a **GET** request: if this is the first time, it will fail -this is expected). -4. Hit **Accept** and a new account will be created for you in the database, pre-populated by the information about you fetched from Microsoft Graph. -5. Submit your changes. When you sign-in next time, the application will recognize you and show you the profile associated with your ID in the database. - -![Screenshot](./ReadmeFiles/screenshot.png) - -> :information_source: Did the sample not work for you as expected? Then please reach out to us using the [GitHub Issues](../../../../issues) page. - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## Troubleshooting - -
    - Expand for troubleshooting info - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `dotnet` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To debug the .NET Core web API that comes with this sample, install the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) for Visual Studio Code. - -Learn more about using [.NET Core with Visual Studio Code](https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/d365community/forum/79b1327d-d925-ec11-b6e6-000d3a4f06a4). - -
    - -## About the code - -### Configuring the middle-tier web API (ProfileAPI) - -In [Startup.cs](./API/ProfileAPI/Startup.cs), add services for authentication, token validation, token caching and Graph SDK support using the [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) APIs as shown below: - -```csharp -public void ConfigureServices(IServiceCollection services) - { - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(Configuration) - .EnableTokenAcquisitionToCallDownstreamApi() - .AddMicrosoftGraph(Configuration.GetSection("DownstreamAPI")) - .AddInMemoryTokenCaches(); - - services.AddDbContext(opt => opt.UseInMemoryDatabase("Profile")); - - services.AddControllers(); - - // Allowing CORS for all domains and methods for the purpose of sample - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader() - .WithExposedHeaders("WWW-Authenticate"); - })); - } -``` - -Notice the [WWW-Authenticate](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/WWW-Authenticate) header exposed in the CORS policy setup. This header tells the client app that authentication is needed for the middle-tier API, as middle-tier API has no user interface and cannot prompt the user itself. - -### Gaining consent for the middle-tier web API - -The middle-tier application adds the client to the `knownClientApplications` list in its manifest, and then the client app can trigger a combined consent flow for both itself and the middle-tier application. On the Microsoft identity platform, this is done using the `/.default` scope. When triggering a consent screen using known client applications and `/.default`, the consent screen will show permissions for both the client to the middle-tier API, and also request whatever permissions are required by the middle-tier API. The user provides consent for both applications, and then the OBO flow works. - -> :information_source: **KnownClientApplications** is an attribute in **application manifest**. It is used for bundling consent if you have a solution that contains two (or more) parts: a client app and a custom web API. If you enter the `appID` (clientID) of the client app into this array, the user will have to consent only once to the client app. Azure AD will know that consenting to the client means implicitly consenting to the web API. It will automatically provision service principals for both the client and web API at the same time. Both the client and the web API app must be registered in the same tenant. - -### Handle Continuous Access Evaluation (CAE) challenge from Microsoft Graph - -Continuous access evaluation (CAE) enables applications to do just-in time token validation, for instance enforcing user session revocation in the case of password change/reset but there are other benefits. For details, see [Continuous access evaluation](https://docs.microsoft.com/azure/active-directory/conditional-access/concept-continuous-access-evaluation). - -Microsoft Graph is now CAE-enabled. This means that it can ask its client apps for more claims when conditional access policies require it. Your can enable your application to be ready to consume CAE-enabled APIs by: - -1. Declaring that the client app is capable of handling [claims challenges](https://aka.ms/claimschallenge). -2. Processing the claim challenge when they are thrown by MS Graph Api. - -#### Declare the CAE capability in the configuration - -The sample SPA (ProfileSPA) declares that it's CAE-capable by adding the `clientCapabilities` property in the configuration in [auth-config.ts](./SPA/src/app/auth-config.ts): - -```typescript -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', - redirectUri: '/auth', - postLogoutRedirectUri: '/', - clientCapabilities: ['CP1'] // This lets the resource server know that this client can handle claim challenges. - }, -} -``` - -The middle-tier web API (ProfileAPI) also needs to declare that it's CAE-capable in [appsettings.json](./API/ProfileAPI/appsettings.json): - -```json -"AzureAd": { - "Instance": "https://login.microsoftonline.com/", - "TenantId": "Enter the tenant ID", - "ClientId": "Enter the client ID (aka 'Application ID')", - "ClientSecret": "Enter the client Secret", - "ClientCapabilities": [ "CP1" ] -}, -``` - -#### Processing the CAE challenge from Microsoft Graph - -Once the middle-tier web API (ProfileAPI) app receives the CAE claims challenge from Microsoft Graph, it needs to process the challenge and redirect the user back to Azure AD for re-authorization. However, since the middle-tier web API does not have UI to carry out this, it needs to propagate the error to the client app (ProfileSPA) instead, where it can be handled. This is shown in [ProfileController](./API/ProfileAPI/Controllers/ProfileController.cs): - -```csharp -try -{ - User profile = await _graphServiceClient.Me.Request().GetAsync(); -} -catch (ServiceException svcex) when (svcex.Message.Contains("Continuous access evaluation resulted in claims challenge")) -{ - if (IsClientCapableofClaimsChallenge(HttpContext)) - { - // append the WWW-Authenticate header from the Microsoft Graph response to the response to the client app - // to learn more, visit: https://learn.microsoft.com/azure/active-directory/develop/app-resilience-continuous-access-evaluation?tabs=dotnet - HttpContext.Response.Headers.Add("WWW-Authenticate", svcex.ResponseHeaders.WwwAuthenticate.ToString()); - - return Unauthorized(svcex.RawResponseBody); - } - else - { - return Unauthorized("Continuous access evaluation resulted in claims challenge but the client is not capable"); - } -} -``` - -On the client side, we use MSAL's `acquireToken` API and provide the claims challenge as a parameter in the token request. This is shown in [profile.service.ts](../SPA/src/app/profile.service.ts), where we handle the response from the Microsoft Graph API with the `handleClaimsChallenge` method: - -```typescript -handleClaimsChallenge(response: HttpErrorResponse): void { - const authenticateHeader: string | null = response.headers.get('WWW-Authenticate'); - const claimsChallengeMap = parseChallenges(authenticateHeader!); - let account: AccountInfo = this.authService.instance.getActiveAccount()!; - - /** - * This method stores the claim challenge to the session storage in the browser to be used when acquiring a token. - * To ensure that we are fetching the correct claim from the storage, we are using the clientId - * of the application and oid (user’s object id) as the key identifier of the claim with schema - * cc.. - */ - addClaimsToStorage( - `cc.${msalConfig.auth.clientId}.${account?.idTokenClaims?.oid}.${new URL(protectedResources.profileApi.endpoint).hostname}`, - claimsChallengeMap['claims'] - ); - - // make a token request afterwards - this.authService.instance.acquireTokenPopup({ - account: account, - scopes: protectedResources.profileApi.scopes, - claims: claimsChallengeMap['claims'] - }).catch((error) => { - console.log(error); - }); -} -``` - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -* [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) -* [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -* [Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -* [Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -* [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -* [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -* [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals) -* [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -* [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) -* [Validating Access Tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) -* [User and application tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#user-and-application-tokens) -* [Validation differences by supported account types](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation) -* [How to manually validate a JWT access token using the Microsoft identity platform](https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation/blob/master/README.md) diff --git a/6-AdvancedScenarios/1-call-api-obo/ReadmeFiles/screenshot.png b/6-AdvancedScenarios/1-call-api-obo/ReadmeFiles/screenshot.png deleted file mode 100644 index a5697da7202e2b985d693cffe5f8e298d2216a13..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24778 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
    }=gf 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 VnU`BZBKafjvM{}BLNLA&^-ox793%h$ diff --git a/6-AdvancedScenarios/1-call-api-obo/ReadmeFiles/topology.png b/6-AdvancedScenarios/1-call-api-obo/ReadmeFiles/topology.png deleted file mode 100644 index 96421099a3ec72e09e71b6c3c1934fa21efc0c3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 48242 zcmb5WWl$Vl)GZt#!66VdSc1FTpb0X#6C}914ekMgI}C2YA-Dy185k@`aF-C=-ENcT zeQ(wG>#JKeKuuTo>D~LBvt_N-geuBQprgD)dG_oXx|F1t^0Q|zf}TBlE{F6QIFcb( z9uNF^?x-vw@~nJ>cpLbFVD?Gw)3aw)(WrL@uYm8!_L7>8&z@oQJpDXRV89@H_N)a_ zO6-%Wo9>W*9hjm_vvwD{VYl=3J>-v185J6> zm|1&)Bd!E|pls2C*FR{(a)3{SgDM*CzoR$-VcAbdXu}K@*;M~K6OBIT-&wR_pL!La zF2xaND< z;s-RYU4P?K$fNP|@m2ah`qb9fr?Es}9n=ALheZsVatIrzq@*PCI*_xov&U(HnQurc z(k;R3?IoS8IX(8HnSwL*c4XBxHL*!aW=o90-OsZ|lNLmka7?U!{r(+j&S@$3qqrEk ztgI}V(*m1XAv1l!Xd`?17+!43`Oy51kphgyW49C$6!iM^4>T!>X8P%|H&!|Wz@;ar zr);hV3mbE>0X{H>?%3Fe!yOF*tVo56gT?TQ) z-$$tjF;HAD|E^-+>y63QZX@I{9r|c%YYQm@ydHa475J8ijDiuS<9k(c`NQ z>#oEXEx@a;u2%f=B~?2Y@blU0b_Pw0%;gM<=fH^I7Zm%;zmHkTdtw^Bf%!1e$HBvk zqGg*rbTgr3jeF1`!R-EmHv9Rx7Sh-_Fw;=K&Z(BW1L6bkXFIMf>~REikL6KGSYubl zrRN{=Xu}`^5w(Z1{{}YNbmSxN`JZ_w^!R_B+y7Z85S&5ox)dowt^fHxj*hYld(a5j z_0cJY@b&>~4XPrkGflc@>rS$}^8j(5dc!rCzQt!^tsjm$ zaBYAXoT1t3!G*`7i`KrJrCmZxkv65s^pjiA?puuE43P?Cqz}5+o1Eb*1&Pc-i-qaou7GJf%E#r#YgUnqY`Ty)RzH zw7^^;4tCgj4Wf_XMWHM(_h?+ye96>-#&#+*c?k()(ZFs=M@S|uSYi7t`-vD0r$4xU z!9Yw2n1P~(%S|xj{DP-<7ru*Y7_S;l5_BvKI3JA-ry19?-E%>yeG?MJ6gf(j1S}GH zV$9ZA|K_C2N0Q!qUbZhe5f~hBPT0C;3Tvf*iWdvQIT>pmBy8dlyt%HzoNiy4+?QUSD@OuDJXFCgxIc> z3Z30ei2`Tit6D8hAj7|EoGv6Bc1T!lhMBt zyK(5VXz**`EbRV8wD7auF;_)f6Xv90Ag=`RvDNu8eMEa*IedFx`5{a9eip?J5fx-gOF zUKiJdH^$srd9eiN%l7(GgNtqAY#|MHq|ybjq+%nUmeg}n2{6RgxT@WD(SVMTA>B@l z4HqS5Io@czExiFV8^@-?Yx~FpOzd91?zdGtB0;P5YBnCD!peNn>_RHoVmseaCyO-rGzFgyLh1O$|8YYsZt%zz=`-y8|&OxZ0?kHd4rX;Ssw7KYf?EZO~ zrw3zNPP+7rpR*p_a(KbjEeUF4#Z6GCc^-UKQsUpl#nJ}h5Kb{Mj-*&7UZ>K#s-6A9 zW)eZBfQp1AzS@Ksj&*H}SAAluS*fGbDxUu10-yQ#ciSy7=`xMk9x8%T;cVBlusmrM zFVkUxt4^pSOLe}`;tJ2nLBpS!$!iCbm+H-sHMX_Y`K=9D(NX-{I4|JrTammV0mb&t z{`dq86TU=^wMi^<&T~vpite`0=suL{@c#}2)Pp9+GhV~;Gc!px?n;Hp>j*r*M-^kfwfZ{B&YB7*cp@>5lL3BY)o)Qt~pvRDJnJ<&#VUjxgWwgn+ z*cr{86ue&Qv^N#Nl6;Esnj1l?m77L}b0Qn*KCqj&!4}MSE zo5=VD26-2eM=z~+=X3u{m7i6qdB;y;f5!KN7HPa{_PW;(*6R7xr7tvvB4c^P^c1LC z+L9xf{CxcURUYS-jJhoZKE98>*|c!`4Ta`5zVAwkuLozTc#Mu4(&A*gF;P;cGZu}! z1x?He>6SBYNV4?xRFLA^+Y#$CQv$Nu>nR&AuJm8NnK~yzDp1)i3CDE(?0BhCR}ece z&CJ9pVlGZHyINO=InfjDQ$0O&i5R_FMUhc;;{H42DWI!=_CgkK>lBAQRWGt|M4A{h{}I@E^4Jl?QF*WFV5qyB7Vk8bUiUrn7ka8I;`AK0 zO@@p=&IBf1x=>ADpl^jgYtYvW;@Zj8wT3Zz>WlnXkVUm%>i)MYdviIiu)!GETy# zCAc;do$P(2mv}KF%ez(+Cj-}@q@M7({vBdPMvW+B5Ryc)T`yGKj2ZqDeyH|dCa$F~aI`qr6l*Mh4LQsOB z-A6Oq!s{f`cXEAqbc$x$C3wq(KJ`d@%HC~?OYV|KQ0xP!bm?t9TB*;PyKJpSvG%iF)p7Rts8n`Z4U=a3-B2KVQSKek-Kv|KE_%%=+iAvdc;$-Rg zAhl~wTl(mZW^8cyM%E+dHt1LTEHz(UU3%EJ5f-mt z^*(6X&b-$O@x>pG!Nk(HjygzUhRK?L<@YGfd+d$J^?G7N+=lni7H$s=<2|TDRge5~ z5u&}Zt2uTuzjsuzN$R1gqDlE;eROf3Q1K1If%`cn3TpqaU9a-(#}qEU|KRd>9q#YJ ztf22oH&lR>Kw2tK%`x(Ml0WRq_(tY+FC$-(8IGk?E+^9}$C%eG|F*JDhKRb4l2++tOkyV&2IYsAe{? zjg}X96zV^{M#ga8>A8ap#`=sAj87i~PYytr(-00X=G~mh4$<+N6HYk}0%4pyMRt!1 zy#{kQmuab?ZH;mTl=}eYoK9<3OfH_C_Sr{i%`1N^%|<=ze6#zOXjSH5)XH(e#EM@J z87BINV0g;eEmKv#qye5zgUjqFxLpzPZC&W}UGc6a>5|>exjfF3JMAS~>aF~f)mDTU zzwt2j%i9XRn_}22q1bt7%4|GB_?<0(7RYPxF;a5s^Q(AA3DHhDl5kB>9k5`HP+X+C zr(o9RImHd@0WZX**iXsDNII!Gmfzyg#C;Kth82Pr$9uzWziiPgEMZAH!8&ikp$dR` zjSFN8(OXq;BV>|k%)AJ^x8Zo%)erj{$~gjWQ50mDGc=xj3HpW2<$UIHHwYC9{N-Qf zQc9=1)jvypAVrV2Qf1q_24sW?LOt{oCUU==`637b^XK z)b^A=frQuv+y@#d&M1}eaA1?1Ot}tzidGPYl}qA#iiFf3rj~PYqviS>>@9-z4SSd< z#NttTs5-tTwUr2oN}@{~gWPY}1o571GN|WJo91{K2&uoAXysXuB*~z}WnhQ-pwSr% z!1NKu!mz7*IYtdS`Jx5I*))Tez(!J%28QXT|E)v1(vcE=k-eAlpcGbivwZWiP>Zdl z@5%WE&hB3HYG?M9iYv4bN}a#2Rr;#Cu4nY>r}{sr42lN&m?kXg*G3smt8`sNe+OSN$fRoGqd+H7=} zv#L#S(wKS>Qw2E#28z)7LtE|cY{>BLr_++}%BF{RoiS~@U_SNet}OG;ZfhsKk2Ons zM$Nb49HZv~x=K;F3@EUotl!m1=wh@w#l>?=%A=*HF!NOvJ1^MYHB)E ztyP~yu`lSd4MMG}A+N-vu+6#nstBwJy)(5rgjFNuaZJ81I67CwmUYH4hd|p4D&$~X zHE)?Bg&`jD6-pvtN_Q`Xlj*l=ld&dpxUwd0*(BQ0m#Te zEX{Wh3ttq$Zl80$hUjUWBTGPbH253Tz-SQ%Y;c(Q^7LcV<+p;s6kAiy*s;EnFcm8Cp%6%0evJ8~-gM`Y*e0qli_}BxobBtC#fcME+LR z@Gl%}+@wq7fAf^VY9gF2-DsDFx5>dig;#>xg(90B3#GERM&l32FCTp2ig@&W*qkR(iNtDynE0DWP z)Zq(NDKzo7I!4;;_ka21aFhzlG%=o_jjOIcN?E4Ddd`DTze$-rD}=Y^3D*8d9sd)L|}=aET3k5(SH|f-^kODvDQDW znmIpaJtEU68@&1b`xCm;jX%W?)t&#eM2F^CQ8EVnmfHRPAK204O zg|DkJUf=$~#ciOWDjPa)_j(-i31lV7+}$PjFZPl{h}i|@cQ*w`kp4F$_+aK)9^m4= z7>`PdWDQ_WCz^jMf$`{rC=d#4Ch}vH1i&vVGW0?&@4Sq7=xV3PQ1v{wCUC%UCL3!sRS*qQpl0ys{IqP}Pf>pY)-F zk-{Q^vOogGQ~Dm`wY0vaw^(MDg>~j7Y+6Co0DOsO3KcDL1Q0v+J3`6UZode9k=lu! zvEZ;()mSsxb51hP0cBeAXP;RW>aewVR$E5fO`|OE~spF#FF+d&M}l$&tpAyJrI%% zU#{mOVa6O}V;eR4!;}n>XQ}|uFLnWgW&eWp?N1kSl26uz1J?X$OQIiUb;Xl?`?yy? zICFa_;mR*c0LqihEW(m@BgLqK9oUTSrifsk;W8kGOKT{+1bCsduylL@`I(b!T zEdW27*evR9yWrALzf9_$=)8y=C<`0sP|Jl*dIW#TvbWAQ{StkOdU zvPyT~6vE-eaDbgLQ$z&p{|vIQ%nZ)Zt{D}vnuKDekF_o{gy~rlrYOrNDM!AehY#d) zsfPa!_K7yReMIN4@eMaCIqZc0K*Ur4&@6hN>IXi?H4Z{(DuQi)GE4;K%xpm+V?yB%lExM<)@BF`YSXpIqB~Vg@IuTH*(h++W5nymA=SQEZ znz7dP9&(+c#5sy8cxZZ99;Y+^*gkRl;clUj(>YRR=3>W~OG|+jwiwpBEO=0qRgj1) zUIkR$rg?)?fhvx1juMi%-JMe(1Y+~1*lHzN4((-V%o^U3U2`GU8APyGXQNe*tmyy4 z2-(F|l%Q3Sz_y{#L7V7}wlHP*J;dqgyS@BY>gJp_Xqzcog=pZ-!9@JWO!}$Mhz2#! z!{PEvjw;aXujJEdILx#yC_rN;Rv)^16EG$ruGGg3I4I;yKAX;9do77xlST!FX}ltZ zIS2~NG8R@BtzBH>m&QTfWG=z+e3pa7D{~SUYXigk zS1VoCcQ*y&8()CvD$r0sNaow}y4}q#)Pl43?D!>-Fm!>BHCdXP<@3XWq>-KhSfaJT|qGaBG`|y}_VyYKSb+g_APNjbmG6eUeBTLl`DzHZmW5A(`i)Rcxz!9> zd$jPJ6;c@B11lQ6tO;7C_c)E2$3@!bR7r>UUV~EBj^7$u0!K?oB-Jw zZ6caXmZUo#myL20#4J1H-02fBCgk#MSO{~r6dAO_rAK(yQEHft@jwc zmdZD@$g(VaT7;#f(KZ=XrrFntvS%-{OGjTA=fq~L&P80D$1*B=>XvsGeaaFXhWC=={lZRdA$l`VER5qPtkxj!sxl1*H^OMy}Kh zVp7%9!UqZ&9Z3bE4%QPf5q?UN0-%M7o8yhbMb|}z)^QC_)I%fzbEQ|hN7q~;pZ9r6 z(}vonYOWz~#J0s`%%l&3LLfnbjGm>tq=JbME{Ox?t3g{jShK0|8qe;R zMG>WNBRxZVhp-@A<(6%OGse~ux;h%}$yfE0{wss2=}M?v=mT9a5wt}-Ul(c&^2BYc z&{qC>%NT)cI!8H0H9M~9n z&_=L2uHSFGL-)oHRU%6A&#k#iBjkL})xu-DcK?{JZrjk9rtiHSJ}DzA1&F_|Cn`-SJ8DlF z>hsn zSao^?fZub$u>1q7{PMD5mePFB_N>Y#%PFb2uoY>rtLJbA4mRr2+TR$nTF@B&_J3GuQiAIa= zr+vR!TOY&{Va^_D-RZA-DaBEUD0wMz;b+bMgeKkEzUne`)Ttf zHXiO%Jl@U{$pXB|&*|WyU2)7kVK2Fn%OKn_V^M4?UldC{@)VTZz=(JBg?NAs{TcXB zsx55Aotv{aN;JNoEPDa09)hag?7cWkR5bvU37bK{F@K#fm z{&H7X6U6x}X6D6X$*KINw$Ur!t$0<3n_+w}wKjsV7}#HU)ZV=do9p>!P&)%Z;rTnSsUNDE_e!tzQscp<)k z0Rr1#LQz0L1gS<6D_5ko!-&}OYDjv5h|k%5{y>=oLDuHpR9H%+jGMNehBHF@daU@F~@*q1v1~15q28)czME2*05$?7KUU|szu*n2sfx%a9 zvNuQ0+6sQV#UDanRoqT>QeX{QSLCK8v*VVHiHH-DD!#ERZNTTy5(*mZTebnS5$>s` zvNd2OK(h<$%~OB#rC@;==#x@!sc6~uv?uH&46iFRMNQJ%W<{3 z%HFs*!;~^~Ygz&ll>WOApz^wj!S@86yT}EhS@#m5UD zOWj+HW*)i!1Pn@G450OTRuDL$MHg?*7=_%JnVSps_$nhUAYf;t@t%ea>!TBR>$!$+8(!7D(s*G7zSSG;vGGIP5?{ z97#kctD~TiNn@K)qWn)zk^2m2XkSwV3;qTfpV>Rg(P(36LF8UYlfGiBn@@A1^(>W< zJeI+iik^u2`4MN3hitL4_%~Ce^gk6x1P0KrzK61bF+H)_!58BO(kV*fQHCdf=jJx% z5OBa&J^P8DbeTCx9HvJ^-;!4l7vom|W z%JL7lQp9`C|KuWs4**P~U)sMo@P;dlwxavyTXBXhP<`KNwC>i=kX+;L%wJGWqY1Lu zxg%i;d0IiXCy(}S$kHHy!e9@$^u4pm!(;}GdnXs6lSn_$CD{xyR5OF;AAR2bIEzW z|6hz|w$)Bb95jY@aoXqfV}f}(34KD*=#fJ{%Y_7Bd9xN$S4KdM!EYCp_ePFSP9_Qvef%87sp`T8SY<1;wv)1N|u2&j~0XgQMG;PfJ zt20h4q;hg1sQxKMz{og+;3kwB>NJzK0yqhUQ4cngq4+ed0}c}^n2@lTpOn@VuZ7!$ z;e1Y|kLeRq?WlJB@dw3CbLSot1Oh2voj^b-Vn)ed~|a<3#XD7MB<0y;OoocoNU!$x$7lg{)wC zp(CP5*#HP2@qn5ekVU<))N&!DGtOvEOS&Vk>7FHIIfvG%G*?slJ zL{`o(ev&T~PZquX=YIVF6(B8o;%9M8a5`{yzI9Ci;)L(C$^<-nI<|>~RO@YO(!ZsX z*w5jdHFcTjY|6U?Cjt?Dn%gsFh`H>O+~+0pv8;`{iIz3XlQz#k^e$TpuAhV^2Dx z?8V>z3BYKLP@d-IDbW6pD(nntcN6_Hz(GP+pSbh?6_^o=YhV9*KJ(zbySm*gm@&ZA zarHPeYom4J5?&#sV)pY`8~#gqx(=~fOBdGE)J~j<@zYMss))N0s2IX>(x1>cWT1w8 zr(n1H@lMz*WgEaR?JrdpU#(AZIAYkf8=Agm_R#l*3}PkP?X%9iF>m&~jd0OF&t6_1 z+t1>fIB8w({lB;b=@KM3rD5p)DY9)E0}m5{O|V*G5x!QYpiVjM6pYo)Ab#a@ymUOk zb@JzNSIuiP?uFOx33<&B61hq2TK~PUgWAZd4IC?~t~nKu^^nBxW&GbJ4x*`!+kx85 zKZYGaHI2q11o6P2KhYk@UlsMu;)z0CD5LlbXe@5>h!F1<2ZSDY1+?k++F6|!R@(Gw z#`lETTI09GA~qmW41K3a5*60^%v$jMjS#tjizwnWw28j-@PPcN9_JBLrw)jg(yTZ$FPb3 z@)93I8V#hK&Si=6isAFn&6-$P_HO{daa5Zf7mvBE%C&NFvx)VwzNroj%Z8Mi3kShN z{JZLlCd20+RVS?OJ5}2*4FlZeB9Y2xru<4wO_Hx2sc*#4UfyR)Y-g<}h$zptVfoH+ zL45lYZ7hi{lqE@hc6*}G1)%miUgXnOnUUiyDEdjMh(`Br~2iEwB01Q-Aa<@?Q$G+Cg3|-FTCPN zg$4zB1#3%=ibP&W4lR3F5iyaPX#7$`HmXnk8;QKiOcoKl||H@i_~u=|EmOd|O5Xb;u1-IsHZ{kOG1N_?sjaq5Z5O7w{Fq za4o<(T^u>PGj5jA#2S7{zU*0VtQa;G4O$3JSdypV$vv}Qgr6CC@>7!}rqNlHcnK`| zkDFygza3nZb2FK3+VTU~1@H^{pj;?n;K9a1hdzVx6i;nW>{F}C2}!0;f_G@@J*rlq z%Sm(mS*h(}h?hZb8DU&t-z@|{qt$CSU2#Ijt)aV*5DZ#|^yrU8T#eALw{m>5Vbt^ix$QU*xh`NICF?x|LYS5r@=ysjN%s>l8+C(~-3 z^28574d(oo9DCqe`g-t%jm)W0><^i!93^UhAjdLvZHM=Tlew1?W zWUaHd9(xjscw#JERZ}Lg*a0l$88E#qXGBgEULINv+DFAa2 zz^_#%I<}Sj`2vf*2@0y$a^HIFCkDaLR9O=!YSEP!04QjnMa|Wgt>V5DO9fhmp6h|r z?F2GjGiDi^bkr*@XRG`fMN|T_r&AVvUHIq-8)i)=(1OVADAo0UVsfa*Mrk798LpW&a zy3_}2)<20IOc0p+>-cU#xRp#alR?<3OQ}m@Rt^`Q$=7hOJ(GDbOph;xzdLz*u&c53 zHaE&Uw3z+o7e;yTbAaEs-w+F3{T=^^8()K;c8z|{aAdeS3M_GgZ9`sd1nY)GhJ;R+ zB6%>}wGdDgQ-nV0i&U#~(qGKb&&GAZTz%XX|7!|FfmjNN{$>x>Hnd06b-nUVS1#pm z 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 Is6oL02Zgf=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/@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/@angular-devkit/build-angular/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-angular/node_modules/rxjs/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/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", - "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/core/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/schematics": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.7.tgz", - "integrity": "sha512-nJUJXCBQr7rmVn6IXFAXMCWAB1w6JQmFGuFVW0G3GH/A0e+A3ttzJc6qVLYluqaFoafw394cZu24YJo55E/+Zg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "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/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/schematics/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@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/animations": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.11.tgz", - "integrity": "sha512-HOw8xecbKfs7A5Ezjf+BfXKvvwU7X8I0US5Ey6bOuLvpA3QVOGSLw9BeutY5Q2mPWiRgnNNQW+FOd8Pe9gEkpQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.11" - } - }, - "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.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", - "integrity": "sha512-tABt1EDwBHm0ngsutdkXXWgPgHzapGLC7rSPHXStMc24ngViFZpXGzBCpompjHvXNt6bjklmJmuRvjS6+ktBZA==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1400.7", - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "@schematics/angular": "14.0.7", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.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/@angular-devkit/architect": { - "version": "0.1400.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.7.tgz", - "integrity": "sha512-8dv/Ql86dHajsHYjjr5jvpiV7uXWbt7Mz4K/rGiOi+zzDNKPcZcuCejulWhOySDcCPjT/an47Qcwr+awL4Wr4g==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "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/cli/node_modules/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/cli/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@angular/cli/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@angular/cli/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/cli/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@angular/cli/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/common": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.11.tgz", - "integrity": "sha512-a5w7lz4SoUzCwSDnuUPnfbEYPA8ufFiXz44mOv48P4uIb78q3rZ/R/EyWD1O3yJPof0o8aPNKpKZzuRDv3Q8ow==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.11", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@angular/compiler": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.11.tgz", - "integrity": "sha512-QD4tq37qqPxxNK4o0Pd7dJm06evwEPChV67S/ecX3S6UkSDp8lVoWKiVx9htp/5s4iydKZU4eGu9oTOMOLVdOw==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/core": "14.2.11" - }, - "peerDependenciesMeta": { - "@angular/core": { - "optional": true - } - } - }, - "node_modules/@angular/compiler-cli": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.11.tgz", - "integrity": "sha512-ipIEgueW8bhxVSq6qlgndBLVRCJoTvk1he/TI3w34m2EnZY1ctgGGCm1VbB3XARh+irVesPVMIAxRtjYds7XOw==", - "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.11", - "typescript": ">=4.6.2 <4.9" - } - }, - "node_modules/@angular/core": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.11.tgz", - "integrity": "sha512-4uEIA6ESMLt2f/ivKuVBpME0IbuFHWmpweN4dwJt83DfJBiBfpqdrFYZHz/Kbkh9cGCiP7L4/eKPRWTlAHehhw==", - "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/forms": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.11.tgz", - "integrity": "sha512-sItoA3/I8j/pf3zhv8sR37M5dAYUJpezv8rw2fTT2Y+nZJFUpkFWqX2N4qpMlPY0MP9OX++8K8/d2j0Lfi3wJQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "14.2.11", - "@angular/core": "14.2.11", - "@angular/platform-browser": "14.2.11", - "rxjs": "^6.5.3 || ^7.4.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.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.11.tgz", - "integrity": "sha512-lGi9pF0Kf/GGrVKcfxxfStM2eMSluDTmbcYuVAX28iBn5XEdfsonrkfy2cnxUMnQ7nioMAZBNGOJHbQPKz4jwg==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/animations": "14.2.11", - "@angular/common": "14.2.11", - "@angular/core": "14.2.11" - }, - "peerDependenciesMeta": { - "@angular/animations": { - "optional": true - } - } - }, - "node_modules/@angular/platform-browser-dynamic": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.11.tgz", - "integrity": "sha512-kjcZda+gcAiYd0I3mjLSr6xR/HkUCnmIMyqaFGoHnIDXI2c6wLDxi49pivrJFvUYJPfYAJ6GjlYTM6L9B3XSEQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "14.2.11", - "@angular/compiler": "14.2.11", - "@angular/core": "14.2.11", - "@angular/platform-browser": "14.2.11" - } - }, - "node_modules/@angular/router": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.11.tgz", - "integrity": "sha512-AbnyKXabar2WsG3fL24O1xdwkcRhRKI7u2vc9D8bcp2ks5GOJNxfbtG2Z6PSO18vtDszQxwELRe2cOEe+0TmPQ==", - "dependencies": { - "tslib": "^2.3.0" - }, - "engines": { - "node": "^14.15.0 || >=16.10.0" - }, - "peerDependencies": { - "@angular/common": "14.2.11", - "@angular/core": "14.2.11", - "@angular/platform-browser": "14.2.11", - "rxjs": "^6.5.3 || ^7.4.0" - } - }, - "node_modules/@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "node_modules/@azure/msal-angular": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.6.tgz", - "integrity": "sha512-9/HwlANm5amBpkyrWQSxuCnDdFe9/naZLVzTOoR69wJ8M5d6Bdph9eIxV1VH6k1Y7cLx8FVVhiv6Uu2x5eIuiA==", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@azure/msal-browser": "^2.31.0", - "rxjs": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.31.0.tgz", - "integrity": "sha512-PaGA7VjjUH9LCL7tbHO3lDW5rH7VQdbe3A6roYEJ7ieWP/0HNwzqKQCNrI/4rCyXO501ABhE9clSx8/mHbmVYw==", - "dependencies": { - "@azure/msal-common": "^8.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-8.0.0.tgz", - "integrity": "sha512-KLGVmWoDcpWl/SKb4TZUjWm+l3lim4tUwAAvCM8N8rSHu8r0NtMTySMWBv7d3G8as1SvC4nr3eTae1+9hTp4wg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "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.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - }, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "dependencies": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "dependencies": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "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.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-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-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.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.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "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.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - }, - "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.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-reserved-words": { - "version": "7.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.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@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.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/traverse/node_modules/@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.20.2", - "@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", - "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/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "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/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "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/@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/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "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", - "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/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "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/@microsoft/microsoft-graph-types": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.25.0.tgz", - "integrity": "sha512-H/HK4MsRJ1H+G/HwbU/z225BKwzoMU3fawD8xivGxDgyGIDzdZf07Ruz/wPSM+tSJJin/swz3TwFllxveduG8Q==", - "dev": true - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "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/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@schematics/angular": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.7.tgz", - "integrity": "sha512-I0v1gNFpm9ReL/hUzwjjOa+hk0qvlXv/vjITAWnlUV5dba6FZxzwsrTGsGO6t5XMNsm6QtwpDYDRdy9uy/n/1g==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "jsonc-parser": "3.0.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/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/@schematics/angular/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@schematics/angular/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/@schematics/angular/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@schematics/angular/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/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.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/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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "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": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/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/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/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/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "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/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/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/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "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-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/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "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/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.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/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "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/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "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/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "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", - "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/connect/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/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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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-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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "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/critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "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", - "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/critters/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/critters/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/critters/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/critters/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/critters/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/critters/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/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", - "dev": true, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/csstools" - } - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, - "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/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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "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/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/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/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "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/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/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/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "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/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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "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", - "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/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "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/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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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/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/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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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/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/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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.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", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "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", - "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/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "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", - "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/istanbul-lib-report/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/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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/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-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/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "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/karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "dependencies": { - "which": "^1.2.1" - } - }, - "node_modules/karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/karma-coverage/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma-coverage/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/karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "dependencies": { - "jasmine-core": "^4.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "karma": "^6.0.0" - } - }, - "node_modules/karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "peerDependencies": { - "jasmine-core": ">=3.8", - "karma": ">=0.9", - "karma-jasmine": ">=1.1" - } - }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "node_modules/karma/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/karma/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/karma/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/karma/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/karma/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/karma/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/karma/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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/license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "dependencies": { - "webpack-sources": "^3.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.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/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "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", - "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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "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/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/magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/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/make-fetch-happen/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/memfs": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz", - "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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": "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/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "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/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.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": ">= 10.12.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/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/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "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/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-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "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", - "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/ora/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/ora/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/ora/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/ora/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/ora/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/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "node_modules/parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-sax-parser/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "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/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/postcss-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/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "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/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/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "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/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/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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "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.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "node_modules/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/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "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", - "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/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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/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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "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/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/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/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/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/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/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.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/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dev": true, - "dependencies": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "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/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": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/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/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "dev": true - }, - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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/stylus/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/stylus/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stylus/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/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "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", - "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/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "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/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "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", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "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-dev-server/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "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", - "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/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/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/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "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", - "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/wrap-ansi/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/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.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/zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "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", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "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": { - "@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": {} - }, - "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" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "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", - "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/schematics": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.7.tgz", - "integrity": "sha512-nJUJXCBQr7rmVn6IXFAXMCWAB1w6JQmFGuFVW0G3GH/A0e+A3ttzJc6qVLYluqaFoafw394cZu24YJo55E/+Zg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular/animations": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-14.2.11.tgz", - "integrity": "sha512-HOw8xecbKfs7A5Ezjf+BfXKvvwU7X8I0US5Ey6bOuLvpA3QVOGSLw9BeutY5Q2mPWiRgnNNQW+FOd8Pe9gEkpQ==", - "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.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", - "integrity": "sha512-tABt1EDwBHm0ngsutdkXXWgPgHzapGLC7rSPHXStMc24ngViFZpXGzBCpompjHvXNt6bjklmJmuRvjS6+ktBZA==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1400.7", - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "@schematics/angular": "14.0.7", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.1" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1400.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.7.tgz", - "integrity": "sha512-8dv/Ql86dHajsHYjjr5jvpiV7uXWbt7Mz4K/rGiOi+zzDNKPcZcuCejulWhOySDcCPjT/an47Qcwr+awL4Wr4g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@angular/common": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-14.2.11.tgz", - "integrity": "sha512-a5w7lz4SoUzCwSDnuUPnfbEYPA8ufFiXz44mOv48P4uIb78q3rZ/R/EyWD1O3yJPof0o8aPNKpKZzuRDv3Q8ow==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-14.2.11.tgz", - "integrity": "sha512-QD4tq37qqPxxNK4o0Pd7dJm06evwEPChV67S/ecX3S6UkSDp8lVoWKiVx9htp/5s4iydKZU4eGu9oTOMOLVdOw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/compiler-cli": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-14.2.11.tgz", - "integrity": "sha512-ipIEgueW8bhxVSq6qlgndBLVRCJoTvk1he/TI3w34m2EnZY1ctgGGCm1VbB3XARh+irVesPVMIAxRtjYds7XOw==", - "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" - } - }, - "@angular/core": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-14.2.11.tgz", - "integrity": "sha512-4uEIA6ESMLt2f/ivKuVBpME0IbuFHWmpweN4dwJt83DfJBiBfpqdrFYZHz/Kbkh9cGCiP7L4/eKPRWTlAHehhw==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/forms": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-14.2.11.tgz", - "integrity": "sha512-sItoA3/I8j/pf3zhv8sR37M5dAYUJpezv8rw2fTT2Y+nZJFUpkFWqX2N4qpMlPY0MP9OX++8K8/d2j0Lfi3wJQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@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.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-14.2.11.tgz", - "integrity": "sha512-lGi9pF0Kf/GGrVKcfxxfStM2eMSluDTmbcYuVAX28iBn5XEdfsonrkfy2cnxUMnQ7nioMAZBNGOJHbQPKz4jwg==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/platform-browser-dynamic": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-14.2.11.tgz", - "integrity": "sha512-kjcZda+gcAiYd0I3mjLSr6xR/HkUCnmIMyqaFGoHnIDXI2c6wLDxi49pivrJFvUYJPfYAJ6GjlYTM6L9B3XSEQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@angular/router": { - "version": "14.2.11", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-14.2.11.tgz", - "integrity": "sha512-AbnyKXabar2WsG3fL24O1xdwkcRhRKI7u2vc9D8bcp2ks5GOJNxfbtG2Z6PSO18vtDszQxwELRe2cOEe+0TmPQ==", - "requires": { - "tslib": "^2.3.0" - } - }, - "@assemblyscript/loader": { - "version": "0.10.1", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.4.6", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.4.6.tgz", - "integrity": "sha512-9/HwlANm5amBpkyrWQSxuCnDdFe9/naZLVzTOoR69wJ8M5d6Bdph9eIxV1VH6k1Y7cLx8FVVhiv6Uu2x5eIuiA==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.31.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.31.0.tgz", - "integrity": "sha512-PaGA7VjjUH9LCL7tbHO3lDW5rH7VQdbe3A6roYEJ7ieWP/0HNwzqKQCNrI/4rCyXO501ABhE9clSx8/mHbmVYw==", - "requires": { - "@azure/msal-common": "^8.0.0" - } - }, - "@azure/msal-common": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-8.0.0.tgz", - "integrity": "sha512-KLGVmWoDcpWl/SKb4TZUjWm+l3lim4tUwAAvCM8N8rSHu8r0NtMTySMWBv7d3G8as1SvC4nr3eTae1+9hTp4wg==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.1.tgz", - "integrity": "sha512-EWZ4mE2diW3QALKvDMiXnbZpRvlj+nayZ112nK93SnhqOtpdsbVD4W+2tEoT3YNBAG9RBR0ISY758ZkOgsn6pQ==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.2.tgz", - "integrity": "sha512-k22GoYRAHPYr9I+Gvy2ZQlAe5mGy8BqWst2wRt8cwIufWTxrsVshhIBvYNqC80N0GSFWTsqRVexOtfzlgOEDvA==", - "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.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.19.0.tgz", - "integrity": "sha512-htnV+mHX32DF81amCDrwIDr8nrp1PTm+3wfBN9/v8QJOLEioOCOG7qNyq0nHeFiWbT3Eb7gsPwEmV64UCQ1jzw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "regexpu-core": "^5.1.0" - } - }, - "@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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true - }, - "@babel/helper-wrap-function": { - "version": "7.19.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.19.0.tgz", - "integrity": "sha512-txX8aN8CZyYGTwcLhlk87KRqncAzhh5TpQamZUa0/u3an36NtDpUP6bQgBCBcLeBs09R/OwQu3OjK0k/HwfNDg==", - "dev": true, - "requires": { - "@babel/helper-function-name": "^7.19.0", - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.19.0", - "@babel/types": "^7.19.0" - } - }, - "@babel/helpers": { - "version": "7.20.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.1.tgz", - "integrity": "sha512-J77mUVaDTUJFZ5BpP6mMn6OIl3rEWymk2ZxDBQJUG3P+PbmyMcF3bYWvz0ma69Af1oobDqT/iAsvzhB58xhQUg==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.1", - "@babel/types": "^7.20.0" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.18.6", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.20.3", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.3.tgz", - "integrity": "sha512-OP/s5a94frIPXwjzEcv5S/tpQfc6XhxYUnmWpgdqMWGgYCuErA3SzozaRAMQgSZWKeTJxht9aWAkUY+0UzvOFg==", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.18.6.tgz", - "integrity": "sha512-9Rysx7FOctvT5ouj5JODjAFAkgGoudQuLPamZb0v1TGLpapdNaftzifU8NTWQm0IRjqoYypdrSmyWgkocDQ8Dw==", - "dev": true, - "requires": { - "@babel/helper-annotate-as-pure": "^7.18.6", - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6", - "@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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-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-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.2.tgz", - "integrity": "sha512-y5V15+04ry69OV2wULmwhEA6jwSWXO1TwAtIwiPXcvHcoOQUqpyMVd2bDsQJMW8AurjulIyUV8kDqtjSwHy1uQ==", - "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.19.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.19.1.tgz", - "integrity": "sha512-oWk9l9WItWBQYS4FgXD4Uyy5kq898lvkXpXQxoJEY1RnvPk4R/Dvu2ebXU9q8lP+rlMwUQTFf2Ok6d78ODa0kw==", - "dev": true, - "requires": { - "@babel/helper-create-regexp-features-plugin": "^7.19.0", - "@babel/helper-plugin-utils": "^7.19.0" - } - }, - "@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.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.3.tgz", - "integrity": "sha512-oZg/Fpx0YDrj13KsLyO8I/CX3Zdw7z0O9qOd95SqcoIzuqy/WTGWvePeHAnZCN54SfdyjHcb1S30gc8zlzlHcA==", - "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.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.18.6.tgz", - "integrity": "sha512-poqRI2+qiSdeldcz4wTSTXBRryoq3Gc70ye7m7UD5Ww0nE29IXqMl6r7Nd15WBgRd74vloEMlShtH6CKxVzfmQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.18.6", - "regenerator-transform": "^0.15.0" - } - }, - "@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.1", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.1.tgz", - "integrity": "sha512-d3tN8fkVJwFLkHkBN479SOsw4DMZnz8cdbL/gvuDuzy3TS6Nfw80HuQqhw1pITbIruHyh7d1fMA47kWzmcUEGA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.18.6", - "@babel/generator": "^7.20.1", - "@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.1", - "@babel/types": "^7.20.0", - "debug": "^4.1.0", - "globals": "^11.1.0" - }, - "dependencies": { - "@babel/generator": { - "version": "7.20.4", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.4.tgz", - "integrity": "sha512-luCf7yk/cm7yab6CAW1aiFnmEfBJplb/JojV56MYEK7ziWfGmFlTfmL9Ehwfy4gFhbjBfWO1wj7/TuSbVNEEtA==", - "dev": true, - "requires": { - "@babel/types": "^7.20.2", - "@jridgewell/gen-mapping": "^0.3.2", - "jsesc": "^2.5.1" - } - }, - "@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/types": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.2.tgz", - "integrity": "sha512-FnnvsNWgZCr232sqtXggapvlkk/tuwR/qhGzcmxI0GXLCjmPYQPzio2FbdlWuY6y1sHFfQKk+rRbUZ9VStQMog==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "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 - }, - "@microsoft/microsoft-graph-types": { - "version": "2.25.0", - "resolved": "https://registry.npmjs.org/@microsoft/microsoft-graph-types/-/microsoft-graph-types-2.25.0.tgz", - "integrity": "sha512-H/HK4MsRJ1H+G/HwbU/z225BKwzoMU3fawD8xivGxDgyGIDzdZf07Ruz/wPSM+tSJJin/swz3TwFllxveduG8Q==", - "dev": true - }, - "@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "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": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@schematics/angular": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.7.tgz", - "integrity": "sha512-I0v1gNFpm9ReL/hUzwjjOa+hk0qvlXv/vjITAWnlUV5dba6FZxzwsrTGsGO6t5XMNsm6QtwpDYDRdy9uy/n/1g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "jsonc-parser": "3.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.12", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", - "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==", - "dev": true - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.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/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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "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": "18.11.9", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.9.tgz", - "integrity": "sha512-CRpX21/kGdzjOpFsZSkcrXMGIBWMGNIHXXBVFSH+ggkftxg+XYP20TESbh+zFvFj3EQOl5byk0HTRn1IL6hbqg==", - "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/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/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/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "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" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-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" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "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", - "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 - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "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" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001431", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001431.tgz", - "integrity": "sha512-zBUoFU0ZcxpvSt9IU66dXVT/3ctO1cy4y9cscs1szkPlcWb6pasYM144GqrUygUbT+k7cmUCW61cvskjcv0enQ==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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 - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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-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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "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" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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 - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "cssdb": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cssdb/-/cssdb-7.1.0.tgz", - "integrity": "sha512-Sd99PrFgx28ez4GHu8yoQIufc/70h9oYowDf4EjeIKi8mac9whxRjhM3IaMr6EllP6KKKWtJrMfN6C7T9tIWvQ==", - "dev": true - }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "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" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz", - "integrity": "sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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 - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fastq": { - "version": "1.13.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", - "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, - "requires": { - "reusify": "^1.0.4" - } - }, - "faye-websocket": { - "version": "0.11.4", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "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" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "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", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.0.tgz", - "integrity": "sha512-CmxgYGiEPCLhfLnpPp1MoRmifwEIOgjcHXxOBjv7mY96c+eWScsOP9c112ZyLdWHi0FxHjI+4uVhKYp/gcdRmQ==", - "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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "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 - }, - "karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "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": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "requires": {} - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.0.tgz", - "integrity": "sha512-KA0W9ffgNBLDj6fZCq/lRbgR6ABAodRIDHrZnS48vOtfKa4PzWImb0Md1lmGCdO3n3sbCm/n1/WmrNlZ8kCI3Q==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - } - }, - "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 - }, - "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true - }, - "memfs": { - "version": "3.4.11", - "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.4.11.tgz", - "integrity": "sha512-GvsCITGAyDCxxsJ+X6prJexFQEhOCJaIlUbsAvjzSI5o5O7j2dle3jWvz5Z5aOdpOxW6ol3vI1+0ut+641F1+w==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": "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" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true - }, - "minipass": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.4.tgz", - "integrity": "sha512-I9WPbWHCGu8W+6k1ZiGpPu0GkoKBeorkfKNuAFBNS1HNFJvke82sxvI5bzcCNpWPorkOO5QQ+zomzzwRxejXiw==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "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": { - "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" - }, - "dependencies": { - "@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 - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "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.10", - "resolved": "https://registry.npmjs.org/postcss-custom-properties/-/postcss-custom-properties-12.1.10.tgz", - "integrity": "sha512-U3BHdgrYhCrwTVcByFHs9EOBoqcKq4Lf3kXwbTi4hhq0qWhl/pDWq2THbv/ICX/Fl9KqeHBb8OVrTf2OaYF07A==", - "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.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", - "dev": true, - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, - "postcss-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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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": { - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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.0", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.0.tgz", - "integrity": "sha512-LsrGtPmbYg19bcPHwdtmXwbW+TqNvtY4riE3P83foeHRroMbH6/2ddFBfab3t7kbzc7v7p4wbkIecHImqt0QNg==", - "dev": true, - "requires": { - "@babel/runtime": "^7.8.4" - } - }, - "regex-parser": { - "version": "2.2.11", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "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 - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - } - } - }, - "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 - }, - "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.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" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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.3", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.3.tgz", - "integrity": "sha512-zdpnnKU+H6mOp7nYRXH4GNv1ux6HL6+lHL8g7Ds7Lj8CkdK1jJK/dlwsKDculbyOHifcJ0Pr/yeXnZQ5GeFrcg==", - "dev": true, - "requires": { - "accepts": "~1.3.4", - "base64id": "~2.0.0", - "debug": "~4.3.2", - "engine.io": "~6.2.0", - "socket.io-adapter": "~2.4.0", - "socket.io-parser": "~4.2.0" - } - }, - "socket.io-adapter": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "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" - } - }, - "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": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "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" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "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", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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" - } - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/package.json b/6-AdvancedScenarios/1-call-api-obo/SPA/package.json deleted file mode 100644 index fc9af102..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/package.json +++ /dev/null @@ -1,43 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.4.6", - "@azure/msal-browser": "^2.31.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@microsoft/microsoft-graph-types": "^2.25.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app-routing.module.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 094f93ab..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,47 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { ProfileViewComponent } from './profile-view/profile-view.component'; -import { ProfileEditComponent } from './profile-edit/profile-edit.component'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'profile-edit/:id', - component: ProfileEditComponent, - canActivate: [ - MsalGuard - ] - }, - { - path: 'profile-view', - component: ProfileViewComponent, - canActivate: [ - MsalGuard - ] - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.css b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.css deleted file mode 100644 index 43d668de..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.html b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.html deleted file mode 100644 index a76d9a17..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.html +++ /dev/null @@ -1,24 +0,0 @@ - - {{ title }} - -
    - - Profile - - - -
    -
    - - -
    - - \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.ts deleted file mode 100644 index 1bab848c..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.component.ts +++ /dev/null @@ -1,122 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { clearStorage } from './storage-utils'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - const activeAccount = this.authService.instance.getActiveAccount() || this.authService.instance.getAllAccounts()[0]; - - clearStorage(activeAccount); // clear the storage of any claim challenges - - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.logoutPopup({ - account: activeAccount, - }); - } else { - this.authService.logoutRedirect({ - account: activeAccount, - }); - } - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.module.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.module.ts deleted file mode 100644 index 944458d6..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/app.module.ts +++ /dev/null @@ -1,139 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon' -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatSelectModule } from '@angular/material/select'; - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { ProfileEditComponent } from './profile-edit/profile-edit.component'; -import { ProfileViewComponent } from './profile-view/profile-view.component'; -import { ProfileService } from './profile.service'; - -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent, ProtectedResourceScopes -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; -import { getClaimsFromStorage } from './storage-utils'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map | null>(); - - protectedResourceMap.set(protectedResources.profileApi.endpoint, [...protectedResources.profileApi.scopes]); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - authRequest: (msalService, httpReq, originalAuthRequest) => { - const resource = new URL(httpReq.url).hostname; - let claim = - msalService.instance.getActiveAccount() && - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${msalService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ? window.atob( - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${msalService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ) - : undefined; - return { - ...originalAuthRequest, - claims: claim, - }; - }, - }; -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - ProfileViewComponent, - ProfileEditComponent - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - MatInputModule, - MatFormFieldModule, - MatCheckboxModule, - MatIconModule, - HttpClientModule, - FormsModule, - MatSelectModule, - MsalModule - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory - }, - MsalService, - MsalGuard, - MsalBroadcastService, - ProfileService - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/auth-config.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/auth-config.ts deleted file mode 100644 index 00e72e6b..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,63 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/Enter_the_Tenant_Info_Here', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - clientCapabilities: ['CP1'] // This lets the resource server know that this client can handle claim challenges. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ -export const protectedResources = { - profileApi: { - endpoint: "https://localhost:44351/api/profile", - scopes: ["api://Enter_the_Web_Api_Application_Id_Here/.default"] - } -} - -/** - * Scopes you add here will be prompted for user consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest = { - scopes: [] -}; diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/claim-utils.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/claim-utils.ts deleted file mode 100644 index 0dddb830..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/claim-utils.ts +++ /dev/null @@ -1,207 +0,0 @@ -/** - * This method parses WWW-Authenticate authentication headers - * @param header - * @return {Object} challengeMap - */ -export const parseChallenges = (header: string): Record => { - const schemeSeparator = header.indexOf(' '); - const challenges = header.substring(schemeSeparator + 1).split(', '); - const challengeMap = {} as any; - - challenges.forEach((challenge: string) => { - const [key, value] = challenge.split('='); - challengeMap[key.trim()] = window.decodeURI(value.replace(/(^"|"$)/g, '')); - }); - - return challengeMap; -} - -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ -export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.css b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.css deleted file mode 100644 index e4a58e48..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,26 +0,0 @@ -#table-container { - height: 500px; - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.html b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.html deleted file mode 100644 index 3e752449..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and call a protected web API - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and acquire an access - token for a protected web API - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    -
    ApplicationAppIdUrl in the Azure portal
    - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    - \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.ts deleted file mode 100644 index dc41c8f0..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.css b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.css deleted file mode 100644 index 802ac77f..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.css +++ /dev/null @@ -1,14 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} - -.form-field { - min-width: 100px; - max-width: 800px; - width: 100%; -} - -.input-field { - width: 100%; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.html b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.html deleted file mode 100644 index bc04fdf2..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.html +++ /dev/null @@ -1,49 +0,0 @@ - -
    - userPrincipalName -
    - - - -
    - givenName -
    - - - -
    - surname -
    - - - -
    - jobTitle -
    - - - -
    - mobilePhone -
    - - - -
    - preferredLanguage -
    - - - English - Chinese - - -
    - -
    -
    \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.ts deleted file mode 100644 index f9c8364e..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-edit/profile-edit.component.ts +++ /dev/null @@ -1,38 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { ProfileService } from '../profile.service'; -import { Profile } from '../profile'; - -@Component({ - selector: 'app-profile-edit', - templateUrl: './profile-edit.component.html', - styleUrls: ['./profile-edit.component.css'] -}) -export class ProfileEditComponent implements OnInit { - - profile: Profile = { - firstLogin: true, - }; - - constructor(private route: ActivatedRoute, private router: Router, private profileService: ProfileService) { } - - ngOnInit(): void { - this.route.paramMap.subscribe((params) => { - let id: string = params.get('id')!; - - this.profileService.getProfile(id) - .subscribe((profile) => { - this.profile = profile as Profile; - }) - }) - } - - editProfile(): void { - this.profileService.editProfile(this.profile) - .subscribe(() => { - this.router.navigate(['/profile-view']); - }) - } - -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.css b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.css deleted file mode 100644 index 1b31bc23..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.css +++ /dev/null @@ -1,17 +0,0 @@ -table { - min-width: 100px; - width: 100%; -} - -.form-field { - min-width: 100px; - width: 90%; -} - -.input-field { - width: 90%; -} - -.card-section { - margin: 5%; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.html b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.html deleted file mode 100644 index 80834d0c..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.html +++ /dev/null @@ -1,28 +0,0 @@ -
    - - - - - - - - - - - - - - - - -
    Claim {{element[0]}} Value {{element[1]}}
    -
    - -
    - -
    -

    Welcome Onboard!

    -

    The web API will now query Microsoft Graph to find your profile.

    -

    After that, you may see and update your profile information.

    - -
    \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.ts deleted file mode 100644 index c87cc2c2..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile-view/profile-view.component.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { MsalService } from '@azure/msal-angular'; - -import { ProfileService } from '../profile.service'; -import { Profile } from '../profile'; - -@Component({ - selector: 'app-profile-view', - templateUrl: './profile-view.component.html', - styleUrls: ['./profile-view.component.css'] -}) -export class ProfileViewComponent implements OnInit { - - profile: Profile = { - firstLogin: true, - }; - - userExists = false; - dataSource: any[] = []; - displayedColumns = ['claim', 'value']; - - constructor(private profileService: ProfileService, private authService: MsalService) { } - - ngOnInit(): void { - - // Our mock database assign user Ids based on MS Graph API account id, which corresponds to the "oid" claim in the id_token - // visit https://docs.microsoft.com/en-us/azure/active-directory/develop/id-tokens for more information - const account = this.authService.instance.getAllAccounts()[0]; - this.getProfile(account.idTokenClaims?.oid!); - } - - getProfile(id: string): void { - this.profileService.getProfile(id).subscribe({ - next: (profile) => { - console.log(profile); - this.userExists = true; - this.profile = profile as Profile; - this.dataSource = Object.entries(this.profile); - }, - error: (error) => { - console.log(error); - } - }); - } - - submitProfile(profile: Profile): void { - this.profileService.postProfile(profile) - .subscribe({ - next: (profile: Profile) => { - this.userExists = true; - this.profile = profile; - this.dataSource = Object.entries(this.profile); - }, - error: (error) => { - console.log(error); - } - }); - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.service.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.service.ts deleted file mode 100644 index e60e03b2..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.service.ts +++ /dev/null @@ -1,74 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient, HttpErrorResponse } from '@angular/common/http'; - -import { catchError } from 'rxjs/operators'; - -import { AccountInfo } from '@azure/msal-browser'; -import { MsalService } from '@azure/msal-angular'; - -import { msalConfig, protectedResources } from './auth-config'; -import { addClaimsToStorage } from './storage-utils'; -import { parseChallenges } from './claim-utils'; -import { Profile } from './profile'; - -@Injectable({ - providedIn: 'root' -}) -export class ProfileService { - url = protectedResources.profileApi.endpoint; - - constructor(private http: HttpClient, private authService: MsalService) { } - - getProfile(id: string) { - return this.http.get(this.url + '/' + id) - .pipe( - catchError((error) => { - console.log(error); - - if (error.status === 401 && error.headers.get('WWW-Authenticate')) { - this.handleClaimsChallenge(error) - } - return error; - }) - ); - } - - postProfile(profile: Profile) { - return this.http.post(this.url, profile); - } - - editProfile(profile: Profile) { - return this.http.put(this.url + '/' + profile.id, profile); - } - - /** - * This method inspects the HTTPS response from a http call for the "www-authenticate header" - * If present, it grabs the claims challenge from the header and store it in the sessionStorage - * For more information, visit: https://docs.microsoft.com/en-us/azure/active-directory/develop/claims-challenge#claims-challenge-header-format - * @param response - */ - handleClaimsChallenge(response: HttpErrorResponse): void { - const authenticateHeader: string | null = response.headers.get('WWW-Authenticate'); - const claimsChallengeMap = parseChallenges(authenticateHeader!); - let account: AccountInfo = this.authService.instance.getActiveAccount()!; - - /** - * This method stores the claim challenge to the session storage in the browser to be used when acquiring a token. - * To ensure that we are fetching the correct claim from the storage, we are using the clientId - * of the application and oid (user’s object id) as the key identifier of the claim with schema - * cc.. - */ - addClaimsToStorage( - `cc.${msalConfig.auth.clientId}.${account?.idTokenClaims?.oid}.${new URL(protectedResources.profileApi.endpoint).hostname}`, - claimsChallengeMap['claims'] - ); - - this.authService.instance.acquireTokenPopup({ - account: account, - scopes: protectedResources.profileApi.scopes, - claims: claimsChallengeMap['claims'] - }).catch((error) => { - console.log(error); - }); - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.ts deleted file mode 100644 index 1194bf37..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/profile.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { User } from "@microsoft/microsoft-graph-types"; - -export type Profile = Pick & { - firstLogin: boolean, -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/sample.spec.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/sample.spec.ts deleted file mode 100644 index 92593cb7..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/profile-view')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/storage-utils.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/storage-utils.ts deleted file mode 100644 index 3909a8a5..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/app/storage-utils.ts +++ /dev/null @@ -1,41 +0,0 @@ -import { msalConfig } from './auth-config'; - -/** - * This method stores the claim challenge to the sessionStorage in the browser to be used when acquiring a token - * @param {String} claimsChallenge - */ -export const addClaimsToStorage = (claimsChallengeId: string, claimsChallenge: string): void => { - isBase64String(claimsChallenge) ? sessionStorage.setItem(claimsChallengeId, claimsChallenge) - : sessionStorage.setItem(claimsChallengeId, window.btoa(claimsChallenge)); -}; - -/** - * This method fetches the claim challenge from sessionStorage - * @param {string} claimsChallengeId - * @returns - */ -export const getClaimsFromStorage = (claimsChallengeId: string): any => { - return sessionStorage.getItem(claimsChallengeId); -}; - -/** - * This method clears sessionStorage of any claims challenge entry - * @param {Object} account - */ -export const clearStorage = (account: any): void => { - for (var key in sessionStorage) { - if (key.startsWith(`cc.${msalConfig.auth.clientId}.${account.idTokenClaims.oid}`)) { - sessionStorage.removeItem(key); - } - } -}; - -/** - * Checks if a string is base64 encoded - * @param str a string to be checked if it is base64 encoded - * @returns {boolean} true if the string is base64 encoded, false otherwise - */ -export const isBase64String = (str: string): boolean => { - const base64regex = /[A-Za-z0-9+/=]/; - return base64regex.test(str); -}; \ No newline at end of file diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/assets/.gitkeep b/6-AdvancedScenarios/1-call-api-obo/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.prod.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/favicon.svg b/6-AdvancedScenarios/1-call-api-obo/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/index.html b/6-AdvancedScenarios/1-call-api-obo/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/main.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/polyfills.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/styles.css b/6-AdvancedScenarios/1-call-api-obo/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/src/test.ts b/6-AdvancedScenarios/1-call-api-obo/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.app.json b/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.json b/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.spec.json b/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/6-AdvancedScenarios/1-call-api-obo/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/ConfigurationTests.cs b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/ConfigurationTests.cs deleted file mode 100644 index 5b2477c2..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/ConfigurationTests.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using Xunit; -using Microsoft.Extensions.Configuration; - -namespace TodoListAPI.Tests -{ - public class ConfigurationTests - { - public static IConfiguration InitConfiguration() - { - var config = new ConfigurationBuilder() - .AddJsonFile("appsettings.json") - .Build(); - - return config; - } - - [Fact] - public void ShouldNotContainClientId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var clientId = myConfiguration.GetSection("AzureAd")["ClientId"]; - - Assert.False(Guid.TryParse(clientId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainTenantId() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var tenantId = myConfiguration.GetSection("AzureAd")["TenantId"]; - - Assert.False(Guid.TryParse(tenantId, out var theGuid)); - } - - [Fact] - public void ShouldNotContainDomain() - { - var myConfiguration = ConfigurationTests.InitConfiguration(); - var domain = $"https://{myConfiguration.GetSection("AzureAd")["Domain"]}"; - - Assert.False(Uri.TryCreate(domain, UriKind.Absolute, out var uri)); - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj deleted file mode 100644 index 66ff194e..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.Tests/TodoListAPI.Tests.csproj +++ /dev/null @@ -1,30 +0,0 @@ - - - - net6.0 - - false - - - - - Always - - - - - - - - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - runtime; build; native; contentfiles; analyzers; buildtransitive - all - - - - diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.sln b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.sln deleted file mode 100644 index b8b6a92e..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI.sln +++ /dev/null @@ -1,31 +0,0 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.31005.135 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI", "TodoListAPI\TodoListAPI.csproj", "{3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}" -EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "TodoListAPI.Tests", "TodoListAPI.Tests\TodoListAPI.Tests.csproj", "{FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug|Any CPU = Debug|Any CPU - Release|Any CPU = Release|Any CPU - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Debug|Any CPU.Build.0 = Debug|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.ActiveCfg = Release|Any CPU - {3E0BC18D-E25D-4E0E-9F6C-712C30350DF8}.Release|Any CPU.Build.0 = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Debug|Any CPU.Build.0 = Debug|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.ActiveCfg = Release|Any CPU - {FD40F6A5-7735-4AA5-ACA8-ADE3FBE65378}.Release|Any CPU.Build.0 = Release|Any CPU - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {44AB506D-AF3A-4AE5-90E9-CFECC92533A6} - EndGlobalSection -EndGlobal diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Controllers/TodoListController.cs b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Controllers/TodoListController.cs deleted file mode 100644 index 144f4f30..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Controllers/TodoListController.cs +++ /dev/null @@ -1,206 +0,0 @@ -using System.Linq; -using System.Collections.Generic; -using System.Threading.Tasks; -using Microsoft.AspNetCore.Http; -using Microsoft.AspNetCore.Mvc; -using Microsoft.AspNetCore.Authorization; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.Identity.Web.Resource; -using TodoListAPI.Models; - -namespace TodoListAPI.Controllers -{ - [Authorize] - [Route("api/[controller]")] - [ApiController] - public class TodoListController : ControllerBase - { - private readonly TodoContext _context; - - public TodoListController(TodoContext context) - { - _context = context; - } - - /// - /// Indicates if the AT presented has application or delegated permissions. - /// - /// - private bool IsAppOnlyToken() - { - // Add in the optional 'idtyp' claim to check if the access token is coming from an application or user. - // See: https://docs.microsoft.com/en-us/azure/active-directory/develop/active-directory-optional-claims - if (HttpContext.User.Claims.Any(c => c.Type == "idtyp")) - { - return HttpContext.User.Claims.Any(c => c.Type == "idtyp" && c.Value == "app"); - } - else - { - // alternatively, if an AT contains the roles claim but no scp claim, that indicates it's an app token - return HttpContext.User.Claims.Any(c => c.Type == "roles") && !HttpContext.User.Claims.Any(c => c.Type == "scp"); - } - } - - // GET: api/TodoItems - [HttpGet] - /// - /// Access tokens that have neither the 'scp' (for delegated permissions) nor - /// 'roles' (for application permissions) claim are not to be honored. - /// - /// An access token issued by Azure AD will have at least one of the two claims. Access tokens - /// issued to a user will have the 'scp' claim. Access tokens issued to an application will have - /// the roles claim. Access tokens that contain both claims are issued only to users, where the scp - /// claim designates the delegated permissions, while the roles claim designates the user's role. - /// - /// To determine whether an access token was issued to a user (i.e delegated) or an application - /// more easily, we recommend enabling the optional claim 'idtyp'. For more information, see: - /// https://docs.microsoft.com/azure/active-directory/develop/access-tokens#user-and-application-tokens - /// - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Read", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Read" - )] - public async Task>> GetTodoItems() - { - if (!IsAppOnlyToken()) - { - /// - /// The 'oid' (object id) is the only claim that should be used to uniquely identify - /// a user in an Azure AD tenant. In multi-tenant scenarios, "oid" should be used together - /// with "tid" (tenant id) claim to uniquely and reliably identify a user across tenants. - /// - return await _context.TodoItems.Where(t => t.OwnerTenantId == HttpContext.User.GetTenantId()).ToListAsync(); - } - else - { - return await _context.TodoItems.ToListAsync(); - } - } - - // GET: api/TodoItems/5 - [HttpGet("{id}")] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Read", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Read" - )] - public async Task> GetTodoItem(int id) - { - // if it only has delegated permissions, then it will be t.id==id && x.Owner == owner - // if it has app permissions the it will return t.id==id - if (!IsAppOnlyToken()) - { - return await _context.TodoItems.FirstOrDefaultAsync(t => t.Id == id && t.OwnerTenantId == HttpContext.User.GetTenantId()); - } - else - { - return await _context.TodoItems.FirstOrDefaultAsync(t => t.Id == id); - } - } - - // PUT: api/TodoItems/5 - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPut("{id}")] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Write", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Write" - )] - public async Task PutTodoItem(int id, TodoItem todoItem) - { - if (id != todoItem.Id || !_context.TodoItems.Any(t => t.Id == id)) - { - return NotFound(); - } - - - if ((!IsAppOnlyToken() && _context.TodoItems.Any(t => t.Id == id && t.OwnerId == HttpContext.User.GetObjectId() && t.OwnerTenantId == HttpContext.User.GetTenantId())) - || - IsAppOnlyToken()) - { - if (_context.TodoItems.Any(t => t.Id == id && t.OwnerId == HttpContext.User.GetObjectId() && t.OwnerTenantId == HttpContext.User.GetTenantId())) - { - _context.Entry(todoItem).State = EntityState.Modified; - - try - { - await _context.SaveChangesAsync(); - } - catch (DbUpdateConcurrencyException) - { - if (!_context.TodoItems.Any(t => t.Id == id)) - { - return NotFound(); - } - else - { - throw; - } - } - } - } - - return NoContent(); - } - - // POST: api/TodoItems - // To protect from overposting attacks, please enable the specific properties you want to bind to, for - // more details see https://aka.ms/RazorPagesCRUD. - [HttpPost] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Write", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Write" - )] - public async Task> PostTodoItem(TodoItem todoItem) - { - string ownerId = HttpContext.User.GetObjectId(); - string tenantId = HttpContext.User.GetTenantId(); - string ownerDisplayName = HttpContext.User.GetDisplayName(); - - if (IsAppOnlyToken()) - { - // with such a permission any owner id is accepted - ownerId = todoItem.OwnerId; - tenantId = todoItem.OwnerTenantId; - ownerDisplayName = todoItem.OwnerDisplayName; - } - - // populate the owner id and tenant id - todoItem.OwnerId = ownerId; - todoItem.OwnerDisplayName = ownerDisplayName; - todoItem.OwnerTenantId = tenantId; - todoItem.Status = false; - - _context.TodoItems.Add(todoItem); - await _context.SaveChangesAsync(); - - return CreatedAtAction("GetTodoItem", new { id = todoItem.Id }, todoItem); - } - - // DELETE: api/TodoItems/5 - [HttpDelete("{id}")] - [RequiredScopeOrAppPermission( - RequiredScopesConfigurationKey = "AzureAD:Scopes:Write", - RequiredAppPermissionsConfigurationKey = "AzureAD:AppPermissions:Write" - )] - public async Task> DeleteTodoItem(int id) - { - TodoItem todoItem = await _context.TodoItems.FindAsync(id); - - if (todoItem == null) - { - return NotFound(); - } - - if ((!IsAppOnlyToken() && _context.TodoItems.Any(t => t.Id == id && t.OwnerId == HttpContext.User.GetObjectId() && t.OwnerTenantId == HttpContext.User.GetTenantId())) - || - IsAppOnlyToken()) - { - _context.TodoItems.Remove(todoItem); - await _context.SaveChangesAsync(); - } - - return NoContent(); - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoContext.cs b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoContext.cs deleted file mode 100644 index a84bbfcc..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoContext.cs +++ /dev/null @@ -1,15 +0,0 @@ -using Microsoft.EntityFrameworkCore; - -namespace TodoListAPI.Models -{ - public class TodoContext : DbContext - { - public TodoContext(DbContextOptions options) - : base(options) - { - - } - - public DbSet TodoItems { get; set; } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoItem.cs b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoItem.cs deleted file mode 100644 index 750b00e8..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Models/TodoItem.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT License. - -using System.ComponentModel.DataAnnotations; -using System.ComponentModel.DataAnnotations.Schema; - -namespace TodoListAPI.Models -{ - public class TodoItem - { - [Key] - [DatabaseGenerated(DatabaseGeneratedOption.Identity)] - public int Id { get; set; } - public string OwnerId { get; set; } - public string OwnerTenantId { get; set; } - public string OwnerDisplayName { get; set; } - public string Description { get; set; } - public bool Status { get; set; } - } -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Program.cs b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Program.cs deleted file mode 100644 index f1246907..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Program.cs +++ /dev/null @@ -1,21 +0,0 @@ - -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; - -namespace TodoListAPI -{ - public class Program - { - public static void Main(string[] args) - { - CreateHostBuilder(args).Build().Run(); - } - - public static IHostBuilder CreateHostBuilder(string[] args) => - Host.CreateDefaultBuilder(args) - .ConfigureWebHostDefaults(webBuilder => - { - webBuilder.UseStartup(); - }); - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Properties/launchSettings.json b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Properties/launchSettings.json deleted file mode 100644 index c832a603..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Properties/launchSettings.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "$schema": "http://json.schemastore.org/launchsettings.json", - "iisSettings": { - "windowsAuthentication": false, - "anonymousAuthentication": true, - "iisExpress": { - "applicationUrl": "https://localhost:44351", - "sslPort": 44351 - } - }, - "profiles": { - "IIS Express": { - "commandName": "IISExpress", - "launchBrowser": true, - "launchUrl": "https://localhost:44351/api/todolist", - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - } - }, - "TodoListAPI": { - "commandName": "Project", - "launchBrowser": true, - "environmentVariables": { - "ASPNETCORE_ENVIRONMENT": "Development" - }, - "applicationUrl": "https://localhost:44351/", - "sslPort": 44351 - } - } -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Startup.cs b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Startup.cs deleted file mode 100644 index d85e8660..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/Startup.cs +++ /dev/null @@ -1,104 +0,0 @@ -using Microsoft.AspNetCore.Builder; -using Microsoft.AspNetCore.Hosting; -using Microsoft.Extensions.Hosting; -using Microsoft.Extensions.Configuration; -using Microsoft.Extensions.DependencyInjection; -using Microsoft.EntityFrameworkCore; -using Microsoft.Identity.Web; -using Microsoft.AspNetCore.Authentication.JwtBearer; -using Microsoft.IdentityModel.Logging; - -using TodoListAPI.Models; - -namespace TodoListAPI -{ - public class Startup - { - public Startup(IConfiguration configuration) - { - Configuration = configuration; - } - - public IConfiguration Configuration { get; } - - // This method gets called by the runtime. Use this method to add services to the container. - public void ConfigureServices(IServiceCollection services) - { - // Adds Microsoft Identity platform (AAD v2.0) support to protect this Api - services.AddAuthentication(JwtBearerDefaults.AuthenticationScheme) - .AddMicrosoftIdentityWebApi(options => - { - Configuration.Bind("AzureAd", options); - options.Events = new JwtBearerEvents(); - - /// - /// Below you can do extended token validation and check for additional claims, such as: - /// - /// - check if the caller's tenant is in the allowed tenants list via the 'tid' claim (for multi-tenant applications) - /// - check if the caller's account is homed or guest via the 'acct' optional claim - /// - check if the caller belongs to right roles or groups via the 'roles' or 'groups' claim, respectively - /// - /// Bear in mind that you can do any of the above checks within the individual routes and/or controllers as well. - /// For more information, visit: https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validate-the-user-has-permission-to-access-this-data - /// - - //options.Events.OnTokenValidated = async context => - //{ - // string[] allowedTenants = { /* list of tenant ids to allow */ }; - - // string userTenantId = context?.Principal?.Claims - // .FirstOrDefault(x => x.Type == "tid")?.Value; - - // if (!allowedTenants.Contains(userTenantId)) - // { - // throw new System.Exception("This tenant is not authorized"); - // } - //}; - }, options => { Configuration.Bind("AzureAd", options); }); - - // The following flag can be used to get more descriptive errors in development environments - IdentityModelEventSource.ShowPII = false; - - services.AddDbContext(opt => opt.UseInMemoryDatabase("TodoList")); - - services.AddControllers(); - - // Allowing CORS for all domains and HTTP methods for the purpose of the sample - // In production, modify this with the actual domains and HTTP methods you want to allow - services.AddCors(o => o.AddPolicy("default", builder => - { - builder.AllowAnyOrigin() - .AllowAnyMethod() - .AllowAnyHeader(); - })); - } - - // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. - public void Configure(IApplicationBuilder app, IWebHostEnvironment env) - { - if (env.IsDevelopment()) - { - // Since IdentityModel version 5.2.1 (or since Microsoft.AspNetCore.Authentication.JwtBearer version 2.2.0), - // Personal Identifiable Information is not written to the logs by default, to be compliant with GDPR. - // For debugging/development purposes, one can enable additional detail in exceptions by setting IdentityModelEventSource.ShowPII to true. - // Microsoft.IdentityModel.Logging.IdentityModelEventSource.ShowPII = true; - app.UseDeveloperExceptionPage(); - } - else - { - // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. - app.UseHsts(); - } - - app.UseCors("default"); - app.UseHttpsRedirection(); - app.UseRouting(); - app.UseAuthentication(); - app.UseAuthorization(); - app.UseEndpoints(endpoints => - { - endpoints.MapControllers(); - }); - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/TodoListAPI.csproj b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/TodoListAPI.csproj deleted file mode 100644 index 4eab0792..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/TodoListAPI.csproj +++ /dev/null @@ -1,22 +0,0 @@ - - - - net6.0 - aspnet-TodoListAPI-BA938C29-8BAB-4664-A688-8FD54049C1C3 - 1 - - - - - - - - all - runtime; build; native; contentfiles; analyzers; buildtransitive - - - - - - - \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.Development.json b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.Development.json deleted file mode 100644 index 8983e0fc..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.Development.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.json b/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.json deleted file mode 100644 index 40b56fbc..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/API/TodoListAPI/appsettings.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "AzureAd": { - "Instance": "https://login.microsoftonline.com/", - "TenantId": "organizations", - "ClientId": "Enter the Client ID (aka 'Application ID')", - "Scopes": { - "Read": ["TodoList.Read", "TodoList.ReadWrite"], - "Write": ["TodoList.ReadWrite"] - }, - "AppPermissions": { - "Read": ["TodoList.Read.All", "TodoList.ReadWrite.All"], - "Write": ["TodoList.ReadWrite.All"] - } - }, - "https_port": 44351, - "Logging": { - "LogLevel": { - "Default": "Information", - "Microsoft": "Warning", - "Microsoft.Hosting.Lifetime": "Information" - } - }, - "AllowedHosts": "*" -} diff --git a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/AppCreationScripts.md b/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/AppCreationScripts.md deleted file mode 100644 index 624c702a..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/AppCreationScripts.md +++ /dev/null @@ -1,138 +0,0 @@ -# Registering sample apps with the Microsoft identity platform and updating configuration files using PowerShell - -## Overview - -### Quick summary - -1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "your test tenant's id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - -### More details - -- [Goal of the provided scripts](#goal-of-the-provided-scripts) - - [Presentation of the scripts](#presentation-of-the-scripts) - - [Usage pattern for tests and DevOps scenarios](#usage-pattern-for-tests-and-DevOps-scenarios) -- [How to use the app creation scripts?](#how-to-use-the-app-creation-scripts) - - [Pre-requisites](#pre-requisites) - - [Run the script and start running](#run-the-script-and-start-running) - - [Four ways to run the script](#four-ways-to-run-the-script) - - [Option 1 (interactive)](#option-1-interactive) - - [Option 2 (Interactive, but create apps in a specified tenant)](#option-3-Interactive-but-create-apps-in-a-specified-tenant) - - [Running the script on Azure Sovereign clouds](#running-the-script-on-Azure-Sovereign-clouds) - -## Goal of the provided scripts - -### Presentation of the scripts - -This sample comes with two PowerShell scripts, which automate the creation of the Azure Active Directory applications, and the configuration of the code for this sample. Once you run them, you will only need to build the solution and you are good to test. - -These scripts are: - -- `Configure.ps1` which: - - creates Azure AD applications and their related objects (permissions, dependencies, secrets, app roles), - - changes the configuration files in the sample projects. - - creates a summary file named `createdApps.html` in the folder from which you ran the script, and containing, for each Azure AD application it created: - - the identifier of the application - - the AppId of the application - - the url of its registration in the [Azure portal](https://portal.azure.com). - -- `Cleanup.ps1` which cleans-up the Azure AD objects created by `Configure.ps1`. Note that this script does not revert the changes done in the configuration files, though. You will need to undo the change from source control (from Visual Studio, or from the command line using, for instance, `git reset`). - -> :information_source: If the sample supports using certificates instead of client secrets, this folder will contain an additional set of scripts: `Configure-WithCertificates.ps1` and `Cleanup-WithCertificates.ps1`. You can use them in the same way to register app(s) that use certificates instead of client secrets. - -### Usage pattern for tests and DevOps scenarios - -The `Configure.ps1` will stop if it tries to create an Azure AD application which already exists in the tenant. For this, if you are using the script to try/test the sample, or in DevOps scenarios, you might want to run `Cleanup.ps1` just before `Configure.ps1`. This is what is shown in the steps below. - -## How to use the app creation scripts? - -### Pre-requisites - -1. PowerShell 7 or later (see: [installing PowerShell](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell)) -1. Open PowerShell (On Windows, press `Windows-R` and type `PowerShell` in the search window) - -### (Optionally) install Microsoft.Graph.Applications PowerShell modules - -The scripts install the required PowerShell module (Microsoft.Graph.Applications) for the current user if needed. However, if you want to install if for all users on the machine, you can follow the following steps: - -1. If you have never done it already, in the PowerShell window, install the Microsoft.Graph.Applications PowerShell modules. For this: - - 1. Open PowerShell - 2. Type: - - ```PowerShell - Install-Module Microsoft.Graph.Applications - ``` - - or if you want the modules to be installed for the current user only, run: - - ```PowerShell - Install-Module Microsoft.Graph.Applications -Scope CurrentUser - ``` - -### Run the script and start running - -1. Go to the `AppCreationScripts` sub-folder. From the folder where you cloned the repo, - - ```PowerShell - cd AppCreationScripts - ``` - -1. Run the scripts. See below for the [four options](#four-ways-to-run-the-script) to do that. -1. Open the Visual Studio solution, and in the solution's context menu, choose **Set Startup Projects**. -1. select **Start** for the projects - -You're done! - -### Two ways to run the script - -We advise four ways of running the script: - -- Interactive: you will be prompted for credentials, and the scripts decide in which tenant to create the objects, -- Interactive in specific tenant: you will provide the tenant in which you want to create the objects and then you will be prompted for credentials, and the scripts will create the objects, - -Here are the details on how to do this. - -#### Option 1 (interactive) - -- Just run ``.\Configure.ps1``, and you will be prompted to sign-in (email address, password, and if needed MFA). -- The script will be run as the signed-in user and will use the tenant in which the user is defined. - -Note that the script will choose the tenant in which to create the applications, based on the user. Also to run the `Cleanup.ps1` script, you will need to re-sign-in. - -#### Option 2 (Interactive, but create apps in a specified tenant) - - if you want to create the apps in a particular tenant, you can use the following option: - -- Open the [Azure portal](https://portal.azure.com) -- Select the Azure Active directory you are interested in (in the combo-box below your name on the top right of the browser window) -- Find the "Active Directory" object in this tenant -- Go to **Properties** and copy the content of the **Directory Id** property -- Then use the full syntax to run the scripts: - -```PowerShell -$tenantId = "yourTenantIdGuid" -. .\Cleanup.ps1 -TenantId $tenantId -. .\Configure.ps1 -TenantId $tenantId -``` - -### Running the script on Azure Sovereign clouds - -All the four options listed above can be used on any Azure Sovereign clouds. By default, the script targets `AzureCloud`, but it can be changed using the parameter `-AzureEnvironmentName`. - -The acceptable values for this parameter are: - -- AzureCloud -- AzureChinaCloud -- AzureUSGovernment - -Example: - - ```PowerShell - . .\Cleanup.ps1 -AzureEnvironmentName "AzureUSGovernment" - . .\Configure.ps1 -AzureEnvironmentName "AzureUSGovernment" - ``` diff --git a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Cleanup.ps1 b/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Cleanup.ps1 deleted file mode 100644 index 5451528c..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Cleanup.ps1 +++ /dev/null @@ -1,189 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - - -Function Cleanup -{ - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - <# - .Description - This function removes the Azure AD applications for the sample. These applications were created by the Configure.ps1 script - #> - - # $tenantId is the Active Directory Tenant. This is a GUID which represents the "Directory ID" of the AzureAD tenant - # into which you want to create the apps. Look it up in the Azure portal in the "Properties" of the Azure AD. - - # Connect to the Microsoft Graph API - Write-Host "Connecting to Microsoft Graph" - - - if ($tenantId -eq "") - { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else - { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Removes the applications - Write-Host "Cleaning-up applications from tenant '$tenantId'" - - Write-Host "Removing 'service' (msal-dotnet-mt-api) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-dotnet-mt-api'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-dotnet-mt-api'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-dotnet-mt-api) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-dotnet-mt-api'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-dotnet-mt-api.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-dotnet-mt-api'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-dotnet-mt-api'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } - Write-Host "Removing 'client' (msal-angular-mt-spa) if needed" - try - { - Get-MgApplication -Filter "DisplayName eq 'msal-angular-mt-spa'" | ForEach-Object {Remove-MgApplication -ApplicationId $_.Id } - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove the application 'msal-angular-mt-spa'. Error is $message. Try deleting manually." -ForegroundColor White -BackgroundColor Red - } - - Write-Host "Making sure there are no more (msal-angular-mt-spa) applications found, will remove if needed..." - $apps = Get-MgApplication -Filter "DisplayName eq 'msal-angular-mt-spa'" | Format-List Id, DisplayName, AppId, SignInAudience, PublisherDomain - - if ($apps) - { - Remove-MgApplication -ApplicationId $apps.Id - } - - foreach ($app in $apps) - { - Remove-MgApplication -ApplicationId $app.Id - Write-Host "Removed msal-angular-mt-spa.." - } - - # also remove service principals of this app - try - { - Get-MgServicePrincipal -filter "DisplayName eq 'msal-angular-mt-spa'" | ForEach-Object {Remove-MgServicePrincipal -ServicePrincipalId $_.Id -Confirm:$false} - } - catch - { - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to remove ServicePrincipal 'msal-angular-mt-spa'. Error is $message. Try deleting manually from Enterprise applications." -ForegroundColor White -BackgroundColor Red - } -} - -# Pre-requisites -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -$ErrorActionPreference = "Stop" - - -try -{ - Cleanup -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} - -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph diff --git a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Configure.ps1 b/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Configure.ps1 deleted file mode 100644 index f3970edb..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/Configure.ps1 +++ /dev/null @@ -1,547 +0,0 @@ -#Requires -Version 7 - -[CmdletBinding()] -param( - [Parameter(Mandatory=$False, HelpMessage='Tenant ID (This is a GUID which represents the "Directory ID" of the AzureAD tenant into which you want to create the apps')] - [string] $tenantId, - [Parameter(Mandatory=$False, HelpMessage='Azure environment to use while running the script. Default = Global')] - [string] $azureEnvironmentName -) - -<# - This script creates the Azure AD applications needed for this sample and updates the configuration files - for the visual Studio projects from the data in the Azure AD applications. - - In case you don't have Microsoft.Graph.Applications already installed, the script will automatically install it for the current user - - There are two ways to run this script. For more information, read the AppCreationScripts.md file in the same folder as this script. -#> - -# Adds the requiredAccesses (expressed as a pipe separated string) to the requiredAccess structure -# The exposed permissions are in the $exposedPermissions collection, and the type of permission (Scope | Role) is -# described in $permissionType -Function AddResourcePermission($requiredAccess, ` - $exposedPermissions, [string]$requiredAccesses, [string]$permissionType) -{ - foreach($permission in $requiredAccesses.Trim().Split("|")) - { - foreach($exposedPermission in $exposedPermissions) - { - if ($exposedPermission.Value -eq $permission) - { - $resourceAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess - $resourceAccess.Type = $permissionType # Scope = Delegated permissions | Role = Application permissions - $resourceAccess.Id = $exposedPermission.Id # Read directory data - $requiredAccess.ResourceAccess += $resourceAccess - } - } - } -} - -# -# Example: GetRequiredPermissions "Microsoft Graph" "Graph.Read|User.Read" -# See also: http://stackoverflow.com/questions/42164581/how-to-configure-a-new-azure-ad-application-through-powershell -Function GetRequiredPermissions([string] $applicationDisplayName, [string] $requiredDelegatedPermissions, [string]$requiredApplicationPermissions, $servicePrincipal) -{ - # If we are passed the service principal we use it directly, otherwise we find it from the display name (which might not be unique) - if ($servicePrincipal) - { - $sp = $servicePrincipal - } - else - { - $sp = Get-MgServicePrincipal -Filter "DisplayName eq '$applicationDisplayName'" - } - $appid = $sp.AppId - $requiredAccess = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess - $requiredAccess.ResourceAppId = $appid - $requiredAccess.ResourceAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphResourceAccess] - - # $sp.Oauth2Permissions | Select Id,AdminConsentDisplayName,Value: To see the list of all the Delegated permissions for the application: - if ($requiredDelegatedPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.Oauth2PermissionScopes -requiredAccesses $requiredDelegatedPermissions -permissionType "Scope" - } - - # $sp.AppRoles | Select Id,AdminConsentDisplayName,Value: To see the list of all the Application permissions for the application - if ($requiredApplicationPermissions) - { - AddResourcePermission $requiredAccess -exposedPermissions $sp.AppRoles -requiredAccesses $requiredApplicationPermissions -permissionType "Role" - } - return $requiredAccess -} - - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function UpdateLine([string] $line, [string] $value) -{ - $index = $line.IndexOf(':') - $lineEnd = '' - - if($line[$line.Length - 1] -eq ','){ $lineEnd = ',' } - - if ($index -ige 0) - { - $line = $line.Substring(0, $index+1) + " " + '"' + $value+ '"' + $lineEnd - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function UpdateTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = UpdateLine $line $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function takes a string input as a single line, matches a key value and replaces with the replacement value -#> -Function ReplaceInLine([string] $line, [string] $key, [string] $value) -{ - $index = $line.IndexOf($key) - if ($index -ige 0) - { - $index2 = $index+$key.Length - $line = $line.Substring(0, $index) + $value + $line.Substring($index2) - } - return $line -} - -<#.Description - This function takes a dictionary of keys to search and their replacements and replaces the placeholders in a text file -#> -Function ReplaceInTextFile([string] $configFilePath, [System.Collections.HashTable] $dictionary) -{ - $lines = Get-Content $configFilePath - $index = 0 - while($index -lt $lines.Length) - { - $line = $lines[$index] - foreach($key in $dictionary.Keys) - { - if ($line.Contains($key)) - { - $lines[$index] = ReplaceInLine $line $key $dictionary[$key] - } - } - $index++ - } - - Set-Content -Path $configFilePath -Value $lines -Force -} - -<#.Description - This function creates a new Azure AD scope (OAuth2Permission) with default and provided values -#> -Function CreateScope( [string] $value, [string] $userConsentDisplayName, [string] $userConsentDescription, [string] $adminConsentDisplayName, [string] $adminConsentDescription, [string] $consentType) -{ - $scope = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope - $scope.Id = New-Guid - $scope.Value = $value - $scope.UserConsentDisplayName = $userConsentDisplayName - $scope.UserConsentDescription = $userConsentDescription - $scope.AdminConsentDisplayName = $adminConsentDisplayName - $scope.AdminConsentDescription = $adminConsentDescription - $scope.IsEnabled = $true - $scope.Type = $consentType - return $scope -} - -<#.Description - This function creates a new Azure AD AppRole with default and provided values -#> -Function CreateAppRole([string] $types, [string] $name, [string] $description) -{ - $appRole = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole - $appRole.AllowedMemberTypes = New-Object System.Collections.Generic.List[string] - $typesArr = $types.Split(',') - foreach($type in $typesArr) - { - $appRole.AllowedMemberTypes += $type; - } - $appRole.DisplayName = $name - $appRole.Id = New-Guid - $appRole.IsEnabled = $true - $appRole.Description = $description - $appRole.Value = $name; - return $appRole -} - -<#.Description - This function takes a string as input and creates an instance of an Optional claim object -#> -Function CreateOptionalClaim([string] $name) -{ - <#.Description - This function creates a new Azure AD optional claims with default and provided values - #> - - $appClaim = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim - $appClaim.AdditionalProperties = New-Object System.Collections.Generic.List[string] - $appClaim.Source = $null - $appClaim.Essential = $false - $appClaim.Name = $name - return $appClaim -} - -<#.Description - Primary entry method to create and configure app registrations -#> -Function ConfigureApplications -{ - <#.Description - This function creates the Azure AD applications for the sample in the provided Azure AD tenant and updates the - configuration files in the client and service project of the visual studio solution (App.Config and Web.Config) - so that they are consistent with the Applications parameters - #> - - if (!$azureEnvironmentName) - { - $azureEnvironmentName = "Global" - } - - # Connect to the Microsoft Graph API, non-interactive is not supported for the moment (Oct 2021) - Write-Host "Connecting to Microsoft Graph" - if ($tenantId -eq "") { - Connect-MgGraph -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - else { - Connect-MgGraph -TenantId $tenantId -Scopes "User.Read.All Organization.Read.All Application.ReadWrite.All" -Environment $azureEnvironmentName - } - - $context = Get-MgContext - $tenantId = $context.TenantId - - # Get the user running the script - $currentUserPrincipalName = $context.Account - $user = Get-MgUser -Filter "UserPrincipalName eq '$($context.Account)'" - - # get the tenant we signed in to - $Tenant = Get-MgOrganization - $tenantName = $Tenant.DisplayName - - $verifiedDomain = $Tenant.VerifiedDomains | where {$_.Isdefault -eq $true} - $verifiedDomainName = $verifiedDomain.Name - $tenantId = $Tenant.Id - - Write-Host ("Connected to Tenant {0} ({1}) as account '{2}'. Domain is '{3}'" -f $Tenant.DisplayName, $Tenant.Id, $currentUserPrincipalName, $verifiedDomainName) - - # Create the service AAD application - Write-Host "Creating the AAD application (msal-dotnet-mt-api)" - # create the application - $serviceAadApplication = New-MgApplication -DisplayName "msal-dotnet-mt-api" ` - -Web ` - @{ ` - } ` - -Api ` - @{ ` - RequestedAccessTokenVersion = 2 ` - } ` - -SignInAudience AzureADMultipleOrgs ` - #end of command - - $currentAppId = $serviceAadApplication.AppId - $currentAppObjectId = $serviceAadApplication.Id - - $serviceIdentifierUri = 'api://'+$currentAppId - Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @($serviceIdentifierUri) - - # create the service principal of the newly created application - $serviceServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($serviceServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "idtyp" - $optionalClaims.AccessToken += ($newClaim) - $newClaim = CreateOptionalClaim -name "acct" - $optionalClaims.AccessToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - - # Publish Application Permissions - $appRoles = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphAppRole] - $newRole = CreateAppRole -types "Application" -name "TodoList.Read.All" -description "e.g. Allows the app to read the signed-in user's files." - $appRoles.Add($newRole) - $newRole = CreateAppRole -types "Application" -name "TodoList.ReadWrite.All" -description "e.g. Allows the app to read the signed-in user's files." - $appRoles.Add($newRole) - Update-MgApplication -ApplicationId $currentAppObjectId -AppRoles $appRoles - - # rename the user_impersonation scope if it exists to match the readme steps or add a new scope - - # delete default scope i.e. User_impersonation - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = $serviceAadApplication.Api.Oauth2PermissionScopes | Where-Object { $_.Value -eq "User_impersonation" } - - if($scope -ne $null) - { - # disable the scope - $scope.IsEnabled = $false - $scopes.Add($scope) - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - - # clear the scope - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @()} - } - - $scopes = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphPermissionScope] - $scope = CreateScope -value TodoList.Read ` - -userConsentDisplayName "TodoList.Read" ` - -userConsentDescription "eg. Allows the app to read your files." ` - -adminConsentDisplayName "TodoList.Read" ` - -adminConsentDescription "e.g. Allows the app to read the signed-in user's files." ` - -consentType "User" ` - - - $scopes.Add($scope) - $scope = CreateScope -value TodoList.ReadWrite ` - -userConsentDisplayName "TodoList.ReadWrite" ` - -userConsentDescription "eg. Allows the app to read your files." ` - -adminConsentDisplayName "TodoList.ReadWrite" ` - -adminConsentDescription "e.g. Allows the app to read the signed-in user's files." ` - -consentType "User" ` - - - $scopes.Add($scope) - - # add/update scopes - Update-MgApplication -ApplicationId $currentAppObjectId -Api @{Oauth2PermissionScopes = @($scopes)} - Write-Host "Done creating the service application (msal-dotnet-mt-api)" - - # URL of the AAD application in the Azure portal - # Future? $servicePortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $servicePortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "service$currentAppIdmsal-dotnet-mt-api" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'service' to 'Microsoft Graph') - Write-Host "Getting access from 'service' to 'Microsoft Graph'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "Microsoft Graph"` - -requiredDelegatedPermissions "User.Read" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'Microsoft Graph' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-dotnet-mt-api' at `n $servicePortalUrl" -ForegroundColor Green - # Create the client AAD application - Write-Host "Creating the AAD application (msal-angular-mt-spa)" - # create the application - $clientAadApplication = New-MgApplication -DisplayName "msal-angular-mt-spa" ` - -Spa ` - @{ ` - RedirectUris = "http://localhost:4200", "http://localhost:4200/auth", "http://localhost:4200/consent-redirect"; ` - } ` - -SignInAudience AzureADMultipleOrgs ` - #end of command - - $currentAppId = $clientAadApplication.AppId - $currentAppObjectId = $clientAadApplication.Id - - $tenantName = (Get-MgApplication -ApplicationId $currentAppObjectId).PublisherDomain - #Update-MgApplication -ApplicationId $currentAppObjectId -IdentifierUris @("https://$tenantName/msal-angular-mt-spa") - - # create the service principal of the newly created application - $clientServicePrincipal = New-MgServicePrincipal -AppId $currentAppId -Tags {WindowsAzureActiveDirectoryIntegratedApp} - - # add the user running the script as an app owner if needed - $owner = Get-MgApplicationOwner -ApplicationId $currentAppObjectId - if ($owner -eq $null) - { - New-MgApplicationOwnerByRef -ApplicationId $currentAppObjectId -BodyParameter @{"@odata.id" = "https://graph.microsoft.com/v1.0/directoryObjects/$user.ObjectId"} - Write-Host "'$($user.UserPrincipalName)' added as an application owner to app '$($clientServicePrincipal.DisplayName)'" - } - - # Add Claims - - $optionalClaims = New-Object Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaims - $optionalClaims.AccessToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.IdToken = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - $optionalClaims.Saml2Token = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphOptionalClaim] - - # Add Optional Claims - - $newClaim = CreateOptionalClaim -name "acct" - $optionalClaims.AccessToken += ($newClaim) - Update-MgApplication -ApplicationId $currentAppObjectId -OptionalClaims $optionalClaims - Write-Host "Done creating the client application (msal-angular-mt-spa)" - - # URL of the AAD application in the Azure portal - # Future? $clientPortalUrl = "https://portal.azure.com/#@"+$tenantName+"/blade/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/Overview/appId/"+$currentAppId+"/objectId/"+$currentAppObjectId+"/isMSAApp/" - $clientPortalUrl = "https://portal.azure.com/#view/Microsoft_AAD_RegisteredApps/ApplicationMenuBlade/~/Overview/appId/"+$currentAppId+"/isMSAApp~/false" - - Add-Content -Value "client$currentAppIdmsal-angular-mt-spa" -Path createdApps.html - # Declare a list to hold RRA items - $requiredResourcesAccess = New-Object System.Collections.Generic.List[Microsoft.Graph.PowerShell.Models.MicrosoftGraphRequiredResourceAccess] - - # Add Required Resources Access (from 'client' to 'service') - Write-Host "Getting access from 'client' to 'service'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "msal-dotnet-mt-api"` - -requiredDelegatedPermissions "TodoList.Read|TodoList.ReadWrite" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'service' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - - # Add Required Resources Access (from 'client' to 'Microsoft Graph') - Write-Host "Getting access from 'client' to 'Microsoft Graph'" - $requiredPermission = GetRequiredPermissions -applicationDisplayName "Microsoft Graph"` - -requiredDelegatedPermissions "User.Read" - - $requiredResourcesAccess.Add($requiredPermission) - Write-Host "Added 'Microsoft Graph' to the RRA list." - # Useful for RRA additions troubleshooting - # $requiredResourcesAccess.Count - # $requiredResourcesAccess - - Update-MgApplication -ApplicationId $currentAppObjectId -RequiredResourceAccess $requiredResourcesAccess - Write-Host "Granted permissions." - - - # print the registered app portal URL for any further navigation - Write-Host "Successfully registered and configured that app registration for 'msal-angular-mt-spa' at `n $clientPortalUrl" -ForegroundColor Green - - # Configure known client applications for service - Write-Host "Configure known client applications for the 'service'" - $knownApplications = New-Object System.Collections.Generic.List[System.String] - $knownApplications.Add($clientAadApplication.AppId) - Update-MgApplication -ApplicationId $serviceAadApplication.Id -Api @{KnownClientApplications = $knownApplications} - Write-Host "knownclientapplication setting configured." - - - # Update config file for 'service' - # $configFile = $pwd.Path + "\..\API\TodoListAPI\appsettings.json" - $configFile = $(Resolve-Path ($pwd.Path + "\..\API\TodoListAPI\appsettings.json")) - - $dictionary = @{ "Enter the Client ID (aka 'Application ID')" = $serviceAadApplication.AppId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - - # Update config file for 'client' - # $configFile = $pwd.Path + "\..\SPA\src\app\auth-config.ts" - $configFile = $(Resolve-Path ($pwd.Path + "\..\SPA\src\app\auth-config.ts")) - - $dictionary = @{ "Enter_the_Application_Id_Here" = $clientAadApplication.AppId;"Enter_the_Web_Api_Application_Id_Here" = $serviceAadApplication.AppId }; - - Write-Host "Updating the sample config '$configFile' with the following config values:" -ForegroundColor Yellow - $dictionary - Write-Host "-----------------" - - ReplaceInTextFile -configFilePath $configFile -dictionary $dictionary - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - Write-Host "IMPORTANT: Please follow the instructions below to complete a few manual step(s) in the Azure portal": - Write-Host "- For service" - Write-Host " - Navigate to $servicePortalUrl" - Write-Host " - Application 'service' publishes application permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host " - Application 'service' publishes delegated permissions. Do remember to navigate to any client app(s) registration in the app portal and consent for those, (if required)" -ForegroundColor Red - Write-Host -ForegroundColor Green "------------------------------------------------------------------------------------------------" - -Add-Content -Value "" -Path createdApps.html -} # end of ConfigureApplications function - -# Pre-requisites - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph")) { - Install-Module "Microsoft.Graph" -Scope CurrentUser -} - -#Import-Module Microsoft.Graph - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Authentication")) { - Install-Module "Microsoft.Graph.Authentication" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Authentication - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Identity.DirectoryManagement")) { - Install-Module "Microsoft.Graph.Identity.DirectoryManagement" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Identity.DirectoryManagement - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Applications")) { - Install-Module "Microsoft.Graph.Applications" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Applications - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Groups")) { - Install-Module "Microsoft.Graph.Groups" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Groups - -if ($null -eq (Get-Module -ListAvailable -Name "Microsoft.Graph.Users")) { - Install-Module "Microsoft.Graph.Users" -Scope CurrentUser -} - -Import-Module Microsoft.Graph.Users - -Set-Content -Value "" -Path createdApps.html -Add-Content -Value "" -Path createdApps.html - -$ErrorActionPreference = "Stop" - -# Run interactively (will ask you for the tenant ID) - -try -{ - ConfigureApplications -tenantId $tenantId -environment $azureEnvironmentName -} -catch -{ - $_.Exception.ToString() | out-host - $message = $_ - Write-Warning $Error[0] - Write-Host "Unable to register apps. Error is $message." -ForegroundColor White -BackgroundColor Red -} -Write-Host "Disconnecting from tenant" -Disconnect-MgGraph \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/sample.json b/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/sample.json deleted file mode 100644 index 7d05fd5c..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/AppCreationScripts/sample.json +++ /dev/null @@ -1,111 +0,0 @@ -{ - "Sample": { - "Author": "derisen", - "Title": "Integrate an Angular SPA that uses MSAL Angular to authenticate users with Azure AD calls a protected web API using the multi-tenant integration pattern (SaaS)", - "Level": 400, - "Client": "Angular SPA", - "Service": ".NET Core web API", - "RepositoryUrl": "ms-identity-javascript-angular-tutorial", - "Endpoint": "AAD v2.0", - "Platform": "javascript", - "Languages": [ - "javascript", - "typescript", - "csharp" - ], - "Products": [ - "azure-active-directory", - "aspnet-core", - "msal-js", - "msal-angular" - ], - "Description": "Integrate an Angular single-page application (SPA) that uses MSAL Angular to authenticate users with Azure AD calls a protected .NET Core web API using the multi-tenant integration pattern (SaaS)" - }, - "ReadmeScenario": { - "UseNewSetup": "1", - "CertificateOption": "0" - }, - "AADApps": [ - { - "Id": "service", - "Name": "msal-dotnet-mt-api", - "Kind": "WebApi", - "Audience": "AzureADMultipleOrgs", - "SDK": "MicrosoftIdentityWeb", - "SampleSubPath": "6-AdvancedScenarios\\2-call-api-mt\\API", - "Scopes": ["TodoList.Read", "TodoList.ReadWrite"], - "AppRoles": [ - { - "AllowedMemberTypes": ["Application"], - "Name": "TodoList.Read.All", - "Description": "Allow this application to read every users TodoList items" - }, - { - "AllowedMemberTypes": ["Application"], - "Name": "TodoList.ReadWrite.All", - "Description": "Allow this application to read and write every users TodoList items" - } - ], - "RequiredResourcesAccess": [ - { - "Resource": "Microsoft Graph", - "DelegatedPermissions": ["User.Read"] - } - ], - "OptionalClaims": { - "AccessTokenClaims": ["idtyp", "acct"] - } - }, - { - "Id": "client", - "Name": "msal-angular-mt-spa", - "Kind": "SinglePageApplication", - "Audience": "AzureADMultipleOrgs", - "HomePage": "http://localhost:4200", - "ReplyUrls": "http://localhost:4200, http://localhost:4200/auth, http://localhost:4200/consent-redirect", - "SampleSubPath": "6-AdvancedScenarios\\2-call-api-mt\\SPA", - "SDK": "MsalAngular", - "RequiredResourcesAccess": [ - { - "Resource": "service", - "DelegatedPermissions": ["TodoList.Read", "TodoList.ReadWrite"] - }, - { - "Resource": "Microsoft Graph", - "DelegatedPermissions": ["User.Read"] - } - ], - "OptionalClaims": { - "AccessTokenClaims": ["acct"] - } - } - ], - "CodeConfiguration": [ - { - "App": "service", - "SettingKind": "Replace", - "SettingFile": "\\..\\API\\TodoListAPI\\appsettings.json", - "Mappings": [ - { - "key": "Enter the Client ID (aka 'Application ID')", - "value": ".AppId" - } - ] - }, - { - "App": "client", - "SettingKind": "Replace", - "SettingFile": "\\..\\SPA\\src\\app\\auth-config.ts", - "Mappings": [ - { - "key": "Enter_the_Application_Id_Here", - "value": ".AppId" - }, - { - "key": "Enter_the_Web_Api_Application_Id_Here", - "value": "service.AppId" - } - ] - } - ] -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/README.md b/6-AdvancedScenarios/2-call-api-mt/README.md deleted file mode 100644 index 5162725c..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/README.md +++ /dev/null @@ -1,529 +0,0 @@ ---- -page_type: sample -description: This sample demonstrates how to integrate an app with Azure AD as a multi-tenant app. This cross-platform application suite comprises of an Angular single-page application (TodoListSPA) authenticating users and calling an ASP.NET Core web API (TodoListAPI) which is also secured with Azure Active Directory (Azure AD). Due to the topology of this application suite (multi-tier, multi-tenant), additional steps are needed for making the apps available to users in other tenants. -languages: - - javascript - - typescript - - csharp -products: - - azure-active-directory - - aspnet-core - - msal-js - - msal-angular - - microsoft-authentication-library - - entra -urlFragment: spa-msal-angular-multi-tenant -extensions: - services: ms-identity - platform: javascript - endpoint: AAD v2.0 - level: 400 - client: Angular SPA - service: .NET Core web API ---- - -# Integrate an Angular SPA using MSAL Angular to authenticate users with Azure AD and call a protected web API using the multi-tenant integration pattern (SaaS) - -* [Overview](#overview) -* [Scenario](#scenario) -* [Prerequisites](#prerequisites) -* [Setup the sample](#setup-the-sample) -* [Explore the sample](#explore-the-sample) -* [Troubleshooting](#troubleshooting) -* [About the code](#about-the-code) -* [Contributing](#contributing) -* [Learn More](#learn-more) - -## Overview - -This sample demonstrates how to integrate an app with Azure AD as a multi-tenant app. This cross-platform application suite comprises of an Angular single-page application (*TodoListSPA*) authenticating users and calling an ASP.NET Core web API (*TodoListAPI*) which is also secured with Azure Active Directory (Azure AD). Due to the topology of this application suite (*multi-tier*, *multi-tenant*), additional steps are needed for making the apps available to users in other tenants. - -When it comes to integrate Azure AD authentication in their apps, developers can choose to configure their app to be either **single-tenant** or **multi-tenant** while registering their app in the [Azure portal](https://portal.azure.com). - -- `Single tenant` apps are only available in the tenant they were registered in, also known as their **home tenant**. -- `Multi-tenant` apps are available to users in both their home tenant and other tenants where they are **provisioned**. Apps that allow users to sign-in using their personal accounts that they use to sign into services like Xbox and Skype are also multi-tenant apps. We will cover provisioning of a multi-tenant app in other tenants using [admin-consent](ADD_LINK_HERE) - -> :information_source: To learn how to integrate an application with Azure AD as a [multi-tenant](https://aka.ms/multi-tenant) app, consider going through the recorded session: [Develop multi-tenant applications with the Microsoft identity platform](https://www.youtube.com/watch?v=B416AxHoMJ4). - -> :information_source: To learn how to integrate a JavaScript Angular application with Azure AD, consider going through the recorded session: [Deep dive on using MSAL.js to integrate Angular single-page applications with Azure Active Directory](https://www.youtube.com/watch?v=EJey9KP1dZA) - -## Scenario - -* **TodoListSPA** uses [MSAL Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) to authenticate a user and obtains an [access token](https://docs.microsoft.com/azure/active-directory/develop/access-tokens) from Azure AD for the API on behalf of the authenticated user. -* The access token is then used by the **TodoListAPI** to authorize the user. -* **TodoListAPI** uses [Microsoft.Identity.Web](https://github.com/AzureAD/microsoft-identity-web) to protect its endpoint and accept authorized calls. - -![Topology](./ReadmeFiles/ch2_topology.png) - -## Contents - -| File/folder | Description | -|------------------------------|--------------------------------------------| -| `API/TodoListAPI/appsettings.json` | Authentication configuration parameters for the web API. | -| `SPA/src/app/auth-config.ts` | Authentication configuration parameters for the SPA. | -| `SPA/src/app/consent/consent.component.ts` | Contains logic for granting admin consent. | - -## Prerequisites - -* Either [Visual Studio](https://visualstudio.microsoft.com/downloads/) or [Visual Studio Code](https://code.visualstudio.com/download) and [.NET Core SDK](https://www.microsoft.com/net/learn/get-started) -* You would need *at least* **two** Azure Active Directory (Azure AD) tenants to successfully run this sample. For more information on how to get an Azure AD tenant, see [How to get an Azure AD tenant](https://docs.microsoft.com/azure/active-directory/develop/test-setup-environment#get-a-test-tenant). -* On each tenant, *at least* **one** admin account (:warning: i.e. global admin) and **one** non-admin/user account should be present for testing purposes. - -## Setup the sample - -### Step 1: Clone or download this repository - -From your shell or command line: - -```console -git clone https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial.git -``` - -or download and extract the repository *.zip* file. - -> :warning: To avoid path length limitations on Windows, we recommend cloning into a directory near the root of your drive. - -### Step 2. Install .NET Core API dependencies - -```console - cd ms-identity-javascript-angular-tutorial - cd 6-AdvancedScenarios\2-call-api-mt/API - dotnet restore -``` - -### Step 3. Trust development certificates - -```console - dotnet dev-certs https --clean - dotnet dev-certs https --trust -``` - -For more information and potential issues, see: [HTTPS in .NET Core](https://docs.microsoft.com/aspnet/core/security/enforcing-ssl). - -### Step 4. Install Angular SPA dependencies - -```console - cd ../ - cd SPA - npm install -``` - -There are two projects in this sample. Each needs to be separately registered in your Azure AD tenant. To register these projects, you can: - -- follow the steps below for manually register your apps -- or use PowerShell scripts that: - - **automatically** creates the Azure AD applications and related objects (passwords, permissions, dependencies) for you. - - modify the projects' configuration files. - -
    - Expand this section if you want to use this automation: - - > :warning: If you have never used **Microsoft Graph PowerShell** before, we recommend you go through the [App Creation Scripts Guide](./AppCreationScripts/AppCreationScripts.md) once to ensure that your environment is prepared correctly for this step. - - 1. On Windows, run PowerShell as **Administrator** and navigate to the root of the cloned directory - 1. In PowerShell run: - - ```PowerShell - Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope Process -Force - ``` - - 1. Run the script to create your Azure AD application and configure the code of the sample application accordingly. - 1. For interactive process -in PowerShell, run: - - ```PowerShell - cd .\AppCreationScripts\ - .\Configure.ps1 -TenantId "[Optional] - your tenant id" -AzureEnvironmentName "[Optional] - Azure environment, defaults to 'Global'" - ``` - - > Other ways of running the scripts are described in [App Creation Scripts guide](./AppCreationScripts/AppCreationScripts.md). The scripts also provide a guide to automated application registration, configuration and removal which can help in your CI/CD scenarios. - -
    - -#### Choose the Azure AD tenant where you want to create your applications - -To manually register the apps, as a first step you'll need to: - -1. Sign in to the [Azure portal](https://portal.azure.com). -1. If your account is present in more than one Azure AD tenant, select your profile at the top right corner in the menu on top of the page, and then **switch directory** to change your portal session to the desired Azure AD tenant. - -#### Register the service app (msal-dotnet-mt-api) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-dotnet-mt-api`. - 1. Under **Supported account types**, select **Accounts in any organizational directory** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **Microsoft APIs** tab is selected. - 1. In the *Commonly used Microsoft APIs* section, select **Microsoft Graph** - 1. In the **Delegated permissions** section, select **User.Read** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. -1. In the app's registration screen, select the **Expose an API** blade to the left to open the page where you can publish the permission as an API for which client applications can obtain [access tokens](https://aka.ms/access-tokens) for. The first thing that we need to do is to declare the unique [resource](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow) URI that the clients will be using to obtain access tokens for this API. To declare an resource URI(Application ID URI), follow the following steps: - 1. Select **Set** next to the **Application ID URI** to generate a URI that is unique for this app. - 1. For this sample, accept the proposed Application ID URI (`api://{clientId}`) by selecting **Save**. - > :information_source: Read more about Application ID URI at [Validation differences by supported account types (signInAudience)](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation). - -##### Publish Delegated Permissions - -1. All APIs must publish a minimum of one [scope](https://docs.microsoft.com/azure/active-directory/develop/v2-oauth2-auth-code-flow#request-an-authorization-code), also called [Delegated Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token for a *user* successfully. To publish a scope, follow these steps: -1. Select **Add a scope** button open the **Add a scope** screen and Enter the values as indicated below: - 1. For **Scope name**, use `TodoList.Read`. - 1. Select **Admins and users** options for **Who can consent?**. - 1. For **Admin consent display name** type in *TodoList.Read*. - 1. For **Admin consent description** type in *e.g. Allows the app to read the signed-in user's files.*. - 1. For **User consent display name** type in *scopeName*. - 1. For **User consent description** type in *eg. Allows the app to read your files.*. - 1. Keep **State** as **Enabled**. - 1. Select the **Add scope** button on the bottom to save this scope. - > Repeat the steps above for another scope named **TodoList.ReadWrite** -1. Select the **Manifest** blade on the left. - 1. Set `accessTokenAcceptedVersion` property to **2**. - 1. Select on **Save**. - -> :information_source: Follow [the principle of least privilege when publishing permissions](https://learn.microsoft.com/security/zero-trust/develop/protected-api-example) for a web API. - -##### Publish Application Permissions - -1. All APIs should publish a minimum of one [App role for applications](https://docs.microsoft.com/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps#assign-app-roles-to-applications), also called [Application Permission](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#permission-types), for the client apps to obtain an access token as *themselves*, i.e. when they are not signing-in a user. **Application permissions** are the type of permissions that APIs should publish when they want to enable client applications to successfully authenticate as themselves and not need to sign-in users. To publish an application permission, follow these steps: -1. Still on the same app registration, select the **App roles** blade to the left. -1. Select **Create app role**: - 1. For **Display name**, enter a suitable name for your application permission, for instance **TodoList.Read.All**. - 1. For **Allowed member types**, choose **Application** to ensure other applications can be granted this permission. - 1. For **Value**, enter **TodoList.Read.All**. - 1. For **Description**, enter *e.g. Allows the app to read the signed-in user's files.*. - 1. Select **Apply** to save your changes. - > Repeat the steps above for another app permission named **TodoList.ReadWrite.All** - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **idtyp**. - > Indicates token type. This claim is the most accurate way for an API to determine if a token is an app token or an app+user token. This is not issued in tokens issued to users. - 1. Select the optional claim **acct**. - > Provides user's account status in tenant. If the user is a **member** of the tenant, the value is *0*. If they're a **guest**, the value is *1*. - 1. Select **Add** to save your changes. - -##### Configure the service app (msal-dotnet-mt-api) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `API\TodoListAPI\appsettings.json` file. -1. Find the key `Enter the Client ID (aka 'Application ID')` and replace the existing value with the application ID (clientId) of `msal-dotnet-mt-api` app copied from the Azure portal. - -#### Register the client app (msal-angular-mt-spa) - -1. Navigate to the [Azure portal](https://portal.azure.com) and select the **Azure Active Directory** service. -1. Select the **App Registrations** blade on the left, then select **New registration**. -1. In the **Register an application page** that appears, enter your application's registration information: - 1. In the **Name** section, enter a meaningful application name that will be displayed to users of the app, for example `msal-angular-mt-spa`. - 1. Under **Supported account types**, select **Accounts in any organizational directory** - 1. Select **Register** to create the application. -1. In the **Overview** blade, find and note the **Application (client) ID**. You use this value in your app's configuration file(s) later in your code. -1. In the app's registration screen, select the **Authentication** blade to the left. -1. If you don't have a platform added, select **Add a platform** and select the **Single-page application** option. - 1. In the **Redirect URI** section enter the following redirect URIs: - 1. `http://localhost:4200` - 1. `http://localhost:4200/auth` - 1. `http://localhost:4200/consent-redirect` - 1. Click **Save** to save your changes. -1. Since this app signs-in users, we will now proceed to select **delegated permissions**, which is is required by apps signing-in users. - 1. In the app's registration screen, select the **API permissions** blade in the left to open the page where we add access to the APIs that your application needs: - 1. Select the **Add a permission** button and then: - 1. Ensure that the **My APIs** tab is selected. - 1. In the list of APIs, select the API `msal-dotnet-mt-api`. - 1. In the **Delegated permissions** section, select **TodoList.Read**, **TodoList.ReadWrite** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - 1. Select the **Add a permission** button and then: - 1. Ensure that the **Microsoft APIs** tab is selected. - 1. In the *Commonly used Microsoft APIs* section, select **Microsoft Graph** - 1. In the **Delegated permissions** section, select **User.Read** in the list. Use the search box if necessary. - 1. Select the **Add permissions** button at the bottom. - -##### Configure Optional Claims - -1. Still on the same app registration, select the **Token configuration** blade to the left. -1. Select **Add optional claim**: - 1. Select **optional claim type**, then choose **Access**. - 1. Select the optional claim **acct**. - > Provides user's account status in tenant. If the user is a **member** of the tenant, the value is *0*. If they're a **guest**, the value is *1*. - 1. Select **Add** to save your changes. - -##### Configure the client app (msal-angular-mt-spa) to use your app registration - -Open the project in your IDE (like Visual Studio or Visual Studio Code) to configure the code. - -> In the steps below, "ClientID" is the same as "Application ID" or "AppId". - -1. Open the `SPA\src\app\auth-config.ts` file. -1. Find the key `Enter_the_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-angular-spa` app copied from the Azure portal. -1. Find the key `Enter_the_Web_Api_Application_Id_Here` and replace the existing value with the application ID (clientId) of `msal-dotnet-mt-api` app copied from the Azure portal. - -#### Configure Known Client Applications for service (msal-dotnet-mt-api) - -1. In the [Azure portal](https://portal.azure.com), navigate to your `msal-dotnet-mt-api` app registration, and select the **Manifest** blade. -1. In the manifest editor, change the `knownClientApplications: []` line so that the array contains the Client ID of the client application (`msal-angular-mt-spa`) as an element of the array. - -For instance: - -```json - "knownClientApplications": ["Enter_the_Application_Id_Here"], -``` - -1. **Save** the changes to the manifest. - -### Step 5: Running the sample - -Using a command line interface such as **VS Code** integrated terminal, locate the application directory. Then: - -```console - cd ../ - cd SPA - npm start -``` - -In a separate console window, execute the following commands - -```console - cd API/TodoListAPI - dotnet run -``` - -## Explore the sample - -1. Open your browser and navigate to `http://localhost:4200`. - -1. Sign-in using the button on top-right: - -![login](./ReadmeFiles/ch2_login.png) - -Regular users won't be able to sign-in, until an **admin-user** provides **admin-consent** to application permissions. - -![admin](./ReadmeFiles/ch2_error.png) - -You can either consent as admin during initial sign-in, or if you miss this step, via the **Admin** page - -![admin](./ReadmeFiles/ch2_admin_prompt.png) - -![admin](./ReadmeFiles/ch2_admin.png) - -1. Once **admin-consent** is provided, users can select the **Get my tasks** button to access the todo list. When you create a new task, you will also have an option to assign it to any other user from your tenant: - -![assign](./ReadmeFiles/ch2_user_list.png) - -> :information_source: Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu) - -## Troubleshooting - -
    - Expand for troubleshooting info - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`azure-active-directory` `dotnet` `ms-identity` `adal` `msal`]. - -If you find a bug in the sample, raise the issue on [GitHub Issues](../../../../issues). - -To debug the .NET Core web API that comes with this sample, install the [C# extension](https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csharp) for Visual Studio Code. - -Learn more about using [.NET Core with Visual Studio Code](https://docs.microsoft.com/dotnet/core/tutorials/with-visual-studio-code). - -To provide feedback on or suggest features for Azure Active Directory, visit [User Voice page](https://feedback.azure.com/d365community/forum/79b1327d-d925-ec11-b6e6-000d3a4f06a4). -
    - -## About the code - -Here we discuss some of the more important aspects of multi-tenant applications. - -### Testing the Application - -To properly test this application, you need *at least* **2** tenants, and on each tenant, *at least* **1** administrator and **1** non-administrator account. - -Before each test, you should delete your **service principal** for the tenant you are about to test, in order to remove any previously given consents and start the **provisioning process** from scratch. - -> #### How to delete Service Principals -> -> You will find the entry under the **Enterprise Applications** blade. Read more about these blades in the [How and why applications are added to Azure AD](https://docs.microsoft.com/azure/active-directory/develop/active-directory-how-applications-are-added). - -> In the next screen, select **Properties** and then the **Delete** button on the upper side. -> -> ![principal1](./ReadmeFiles/ch1_service_principal2.png) -> -> You have now deleted the service principal for that tenant. Next time, once a user successfully authenticates to your application, a new service principal will be created (i.e. *provisioning*) in the tenant from which *that* user belongs to. Note that only a user with admin privileges in a tenant can provision an app into that tenant. - -### Usage of `/organizations` endpoint - -When registering an application with the Microsoft identity platform for developers, you are asked to select which account types your application supports to sign-in with, commonly referred as **audience** (see: [Supported account types](https://learn.microsoft.com/azure/active-directory/develop/v2-supported-account-types)). Your MSAL configuration will reflect your choice of audience in the `authority` parameter. an application that targets **accounts in any Azure AD directory** will have its authority parameter set to `https://login.microsoftonline.com/organizations`, while for an application that targets **Accounts in any Azure AD directory and personal Microsoft accounts (such as Skype, Xbox, Outlook.com)** it will be `https://login.microsoftonline.com/common`. Here, `/organizations` and `/common` are not real tenants, but just **multiplexers** that will route the request to the relevant tenant: - -```typescript -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication({ - auth: { - clientId: "", - authority: "https://login.microsoftonline.com/organizations", - redirectUri: "http://localhost:4200/", - }, - }); -} -``` - -> Please note that if you sign-in guest users at the `/common` (or `/organizations`) endpoint, they will be directed to their home tenant for signing-in. So, if your multi-tenant app cares about applying tenant specific conditional access policies, group assignments or app roles to be applied to the guest users, the app should sign-in the guest user on the **tenanted endpoint** (`https://login.microsoftonline.com/{tenantId}`) instead of the `/common` endpoint. - -### Dynamic token request - -If `organizations` or `common` is used as the tenant, all tokens will be requested from the users' home tenant. However, this may not be the desired outcome. If a user is invited as a guest, the tokens may be from the wrong authority. Setting the `authRequest` in the **MsalInterceptorConfiguration** to a method allows you to dynamically change the auth request. For instance, you may set the authority based on the home tenant of the account when using guest users. - -```typescript -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map>(); - protectedResourceMap.set("https://graph.microsoft.com/v1.0/me", ["user.read"]); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - authRequest: (msalService, httpReq, originalAuthRequest) => { - return { - ...originalAuthRequest, - authority: `https://login.microsoftonline.com/${originalAuthRequest.account?.tenantId ?? 'organizations'}` - }; - } - }; -} -``` - -### Ways of providing admin consent - -A service principal of your multi-tenant app is created via one of the following ways: - -1. When the first user signs-in to your app for the first time in a tenant. -1. Manually or programmatically created by a tenant admin using one of the following - 1. Using the [/adminconsent endpoint](https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent) - 1. [Using the PowerShell command](https://docs.microsoft.com/powershell/azure/create-azure-service-principal-azureps). - -* **Consent during sign-in:** - -This method requires the most minimal setup. The only thing needed is that the tenant admin signs-in first and *optionally* choose to **consent on behalf of your organization** during the AAD sign-in as shown in the screen below: - -![consent](./ReadmeFiles/ch1_consent_onbehalf.png) - -* **Consent using the `/adminconsent` endpoint** - -This method provides a programmatic control over the consent process. To be able to **consent as an admin** with this method, there are two steps your application needs to carry out: - -1. Determine the `tenantId` of the signed-in (admin) user. -2. Redirect the (admin) user to the correct [/adminconsent endpoint](https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent). This is demonstrated in [onboard.component.ts](./SPA/src/app/onboard/onboard.component.ts): - -```typescript -adminConsent() { - const account = this.authService.instance.getActiveAccount() - - if (account) { - // available only in HTTPS context - const state = window.crypto.randomUUID(); // state parameter against csrf - - /** - * Construct URL for admin consent endpoint. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent - */ - const adminConsentUri = "https://login.microsoftonline.com/" + - `${account.tenantId}` + "/v2.0/adminconsent?client_id=" + - `${msalConfig.auth.clientId}` + "&state=" + `${state}` + "&redirect_uri=" + `http://localhost:4200/adminconsent` + - "&scope=" + `${protectedResources.todoListApi.scopes.read[0].split("/TodoList")[0]}/.default`; - - // redirect to admin consent endpoint - window.location.replace(adminConsentUri); - } -} -``` - -![admin consent endpoint](./ReadmeFiles/ch1_admin_consent_endpoint.png) - -> #### The `.default` scope -> -> Did you notice the scope here is set to `.default`? This is a built-in scope for every application that refers to the static list of permissions configured on the application registration. Basically, it *bundles* all the permissions in one scope. The /.default scope can be used in any OAuth 2.0 flow. Read more about `scopes` usage at [Scopes and permissions in the Microsoft Identity Platform](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent#scopes-and-permissions). - -When redirected to the `/adminconsent` endpoint, the tenant admin will see: - -![consent](./ReadmeFiles/ch1_admin_redirect.png) - -After you choose an admin account, it will lead to the following prompt: - -![consent](./ReadmeFiles/ch1_admin_consent.png) - -Once it finishes, your application's service principal will be provisioned in that tenant. - -### Provisioning and sign-in differences - -When provisioning, you have to take care of the dependency in the topology if the client app (*msal-angular-spa*) is dependent on the service app (*msal-dotnet-mt-api*). For instance, if your client app needs to acquire tokens to call your service app and asks for consent to the necessary scopes during the sign-in stage, you would need to provision the **msal-dotnet-mt-api** before the **msal-angular-spa**. As such, only a user with admin privileges would be able to sign-in for the first time in a new tenant. After that, any user from that admin's tenant can sign-in and use the application. - -This sample is configured to allow non-admin users to sign-in to the client SPA from any tenant, as it acquire tokens for the service web API at a later stage (i.e. when the user attempts to use the shared todoList after sign-in), which means the service web API can be provisioned later than the client SPA. You can configure this behavior by modifying the scopes of `loginRequest` object in [auth-config.ts](./SPA/src/app/auth-config.ts). - -### Custom token validation allowing only registered tenants - -By marking your application as multi-tenant, your application will be able to sign-in users from any Azure AD tenant out there. Now you would want to restrict the tenants you want to work with. For this, we will now extend token validation to only those Azure AD tenants registered in the application database. - -Below, the event handler `OnTokenValidated` was configured to grab the `tenantId` from the token claims and check if it has an entry on the records. If it doesn't, an exception is thrown, canceling the authentication. (See: [Startup.cs](./API/TodoListAPI/Startup.cs)) - -```csharp - services.Configure(JwtBearerDefaults.AuthenticationScheme, options => - { - options.Events.OnTokenValidated = async context => - { - string[] allowedTenants = { /* list of tenant IDs to allow */ }; - - string userTenantId = context?.Principal?.Claims - .FirstOrDefault(x => x.Type == "tid")?.Value; - - if (!allowedTenants.Contains(userTenantId)) - { - throw new System.Exception("This tenant is not allowed to call this web API"); - } - }; - }); -``` - -# Dynamic token request - -If `organizations` or `common` is used as the tenant in MSAL configuration, all tokens will be requested from the users' home tenant. However, this may not be the desired outcome. If a user is invited as a guest, the tokens may be from the wrong authority. To configure which tenant the tokens should be acquired from in a multi-tenant application, please refer to: [Dynamic token request](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/multi-tenant.md#dynamic-auth-request) - -# Dynamic MSAL configuration - -In certain scenarios, you might need to dynamically configure MSAL application object on the fly. To learn how to do so, please refer to: [Dynamic configurations using Factory Providers and APP_INITIALIZER](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md#dynamic-configurations-using-factory-providers-and-app_initializer) - -## Contributing - -If you'd like to contribute to this sample, see [CONTRIBUTING.MD](/CONTRIBUTING.md). - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information, see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. - -## Learn More - -* [Microsoft identity platform (Azure Active Directory for developers)](https://docs.microsoft.com/azure/active-directory/develop/) -* [Azure AD code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) -* [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -* [Register an application with the Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/quickstart-register-app) -* [Configure a client application to access web APIs](https://docs.microsoft.com/azure/active-directory/develop/quickstart-configure-app-access-web-apis) -* [Converting an application to Multi-tenant](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant) -* [Multi-tenant SaaS database tenancy patterns](https://docs.microsoft.com/azure/sql-database/saas-tenancy-app-design-patterns) -* [How to configure a new multi-tenant application](https://docs.microsoft.com/azure/active-directory/develop/setup-multi-tenant-app) -* [How to: Sign in any Azure Active Directory user using the multi-tenant application pattern](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant) -* [Add a multitenant application to the Azure AD application gallery](https://docs.microsoft.com/azure/active-directory/develop/registration-config-multi-tenant-application-add-to-gallery-how-to) -* [Permissions and Consent](https://docs.microsoft.com/azure/active-directory/develop/v2-permissions-and-consent) -* [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -* [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -* [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals) -* [Authentication Scenarios for Azure AD](https://docs.microsoft.com/azure/active-directory/develop/authentication-flows-app-scenarios) -* [Building Zero Trust ready apps](https://aka.ms/ztdevsession) -* [National Clouds](https://docs.microsoft.com/azure/active-directory/develop/authentication-national-cloud#app-registration-endpoints) -* [Microsoft.Identity.Web](https://aka.ms/microsoft-identity-web) -* [Validating Access Tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#validating-tokens) -* [User and application tokens](https://docs.microsoft.com/azure/active-directory/develop/access-tokens#user-and-application-tokens) -* [Validation differences by supported account types](https://docs.microsoft.com/azure/active-directory/develop/supported-accounts-validation) -* [How to manually validate a JWT access token using the Microsoft identity platform](https://github.com/Azure-Samples/active-directory-dotnet-webapi-manual-jwt-validation/blob/master/README.md) diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_consent.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_consent.png deleted file mode 100644 index 5696b4e0994add7732e54cfd9349efc55ca3cb7d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35498 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

    6%+>wo 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 z za}#mtvO+487B+g%d!IPDP#R8lvWmFpx*oHA4srDSZZ>@I`fk7bhwX60!eMvq=-6xD z*_(5jvwnl%+l$)Zk;`v%?c)J6_j0~}5ZC6X=!dQAs0r7+QR{D(Wla8B_d-`2hgHt6 zPiF9s=vg~W*J)j>Fi>V0(jyr)NEwVDdx= zGvtrytyd$omSz~UU=}NgVV~ALeZEFArj4Ok%vmV_Hn0&s`mNhJYG_l)RyoL|*`2cP zjmgc5NUv*fVnf`fDtmv1j)4gBb z%U|m56AJ9M0#+KOx3y*JjQ?z>ET(Qk*I8L|XK|@-QvnZ64J5q;1#mwr4@@9vI6vkN*XcQtY{`8Bc%-}pxKv-IxK zyZU44V;`l?)wEG^EE38@dH9(@HoXz94q94lwG#OnO9T?wrOkJI=O|52`x{+Ww#?ez z`rB;zSDup@oU1ZFDgm_ZX`}Y$>hSdni$BJCZ_%)vIzJb9^&iajwEAuR%}eL3949$o z>3N$x*zdaS-R>K$p7j1jttz{4YLZv+(V60nITD#z`W8`R=hR$v`aTIbk`ciRDSuwh z!r;A78iAv_m`)J=c{m=f6;P_DwixQx@8MsnSHVA6%hA|fX>Uhqq9 z=4PM8!#90l&c&NKQU&}&?3BO0{&YAvj@%+Hu;$xs+1$AdYK&N$3;NK|?y*p+fVtwb!GH<$7=ADC9KJ9u(RFt+sM%^^Zn7i zT8I+>kWF%SWqDN->3uN2D|TTe*s16n2Y(EXl>yrM_5Q_qj?}OAj^a0eBzh^` z_)edD_|ZgCmGLn-i+FWIg$Evl@j4wTGeZrqN;@Z0?8wM;7TQhAZ(dK7hPMv#T7TU@ zZ>P${2(GakUsK1j6>?re2SCcbtIhbzDN4>9hKDkle3+rtmHs!U@7al%FRw$J+zcco z%h(D=D>1M);cJAj$S~-!B^E@;8hbSTLW!`yPL{zq`vpu5;{P-CG({LqAO^GFp#FX$fo;ZgfZUrdko-%hw35!6}+%MJ4GnNESCV{3`JBYWOli9Q7 zcIZvN*6+VAnN7PbFVyRjtd-!M0 zi%w98*aQwdWMlGbKBDE-swbxprc(*ZxD2}Y=NIEH4TLK?lc=- z)CkxRvZcq(4lX4?22hNU4zi-A4#G<{@7B*Edag0mF_&weL=R5u83%5KFw}kfE3FnC# zXYG~;_dM6DFqfgvf3C;(+$5#^wP*d=8VdFsi&`xaoj0e??nM`!nMnFQ>v44)p99D`q-AG2Qk1lKGmVV?#D*(Lx1 z2*yM9FG{SuL1}xtF@vn7nd$8s*$4ee-k@N^iZ2#dWMSeu3uIemmVtDC%M-9`vg`ra zxkIV~(lz{SiC*);T~gwX3PzHD5&n1QR5{*%JKYB27Z-BR)4w7KnQriwKhE%zsfATujAcOlR|D2T30HANyc(p4{D}wUCBE?;(;rs>_QgTUSw## znE~uX{U|C((*WBfWq4#?2_;`1j|kuK-?C@rusvnPHfH>A;`BKmJS4KZ+`V zD@(XPkvU)SPC&{67Xwqo8*6bX9l}rN6o%QL z-M6q%CV(6L#kUcxI=Za^o!-wZd_s7Xf*;*Ps7A2n8=Xx=9WkJUrCCqJkcF*wUhf6j zc>N=6hswrZJ677n2b?Z4hX-@&{$2_cSb}6z?9Z%xN575L6oeq}U`$vivN-@ZKLg$d zj@t)0fI6)DnWe5<9Z6jGL4tQoFNulsNB87yGbxS@f^&Yz9vw=?7(Iq55>H&K-A#Q9 zcxltpv@};z(B4;QW0ZAyB?q~)2cd27kJr8b6R<6@bVJtpDDZl}>3Z9gjqYGppbC`N zRoO&yp}ISP3hD#U9>iAZEuYi@3VDNsU~Lm&zVA#@(cmQ647jO?*vpuhKlO`Oe{(7g zGJa5TT{T+|2)|fd4{r0__#Q$-H2)3?cit>^or(??Y#(&4O diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_consent_endpoint.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_admin_consent_endpoint.png deleted file mode 100644 index 9dda2d4d08ba95d91c6554c7581f499ac34317fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14528 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%0DN04+^SbQRj z9l$(%wc(qQp;(3a9^ss14%mo>Q(n(=xB$m@Z5Nvjm!5@GHd98ZqDONQ7evz{z%;WNkB@(1CmegI2*`~0~@5Ix^5aEjM42lJo! zL0wuIBNc?XX%RA-WWppl%O_P;&#cFt8!;6E@Wn0~JEz#iPk(W+S1$B;L=kDws*DP5 z(|(8h4y<@Lpa1RJh4vM8-&~F5Wwc(nZ8Da_UvdX)6hDbUij@z0fS09RZ3@*E`_I7F z?yuir9h-aoH=K%o+&$irziA;b*N?#C`M9*|w1Q79(0|#%wonusO5m{L13%<9u4`p6 z=61dz>2SJ?%lVpldfhy)p)+b)bF9XB8SMj+SkYjglGl^qA3Q8Dmnm_WR~SWniJd|K zN^$x;G1CWepl1;?KXq^pI|4{#gxlP&u!hVBhg3?yH_N~&rdo3`5PylgJdnCxuqLV* zk5+b#yS>Jy4ySKV<_o}zHMd)L9qBBML2OAyz$Wuc$UNA*9>mzaYLNh9BcK+T>ncb9 zxI}H3E}bXvXUL)WhCa?I{JKgkNEZQ*t5Mk8tUyZ_OfBS<`ybZ9BDMl^MLnbp5*Lbs zS`stH;Qf|jdDY(Is-kl%KKHNvt}BAWTNNRhqzx)bIm*RxckLDI8I&wV>V^Y8;r=FL zodsA&a02(Bag#u-7S}2_=e&Ukb2CxO+zA`V{FVr7Xt`IYwH|@PJ8OS|?Fb4!KLV|c z>fFQwB;6Gjk7W?Us@sGdrY2r6G8C&Y-=k$4HX?B16Z<}Md|RG?@_9uEt{v|%^^>*U zowHliejT58pZd0LhvrH5yu~^o(FFsh9?XevA?(LMwOaOngMOO#cfv7xu4_21n(b+| zU0)I#)p-I^-$@9px~}Z(v;Kl7g@xni1Sh7#XXurWIu(%w?R@!H&cSu<9|z`8`)oe@ zT3=rMvMWEJ^Mk@S1@8OnfQ!^+j?r~r#5l!1ncQ`I^+ZW5uWwx`w0k3iJ~%B2jU7EAK|D5DR#`?;b~Fo&IQlsf45Sc z>$|G!ykt#47D$&k1LDpHf;N+qrRA#P%K@$5q;UqI9Hq^j52ot+r&l$PJCj&lW$8#d{%YF)bAH_aF4y;Z;s;7WuTQxTAU)`!~{I24(UYX z&By>bm$6^)=;sX7^aZB*bGjftXiIpsctg%3j`=+Cw1_D`=>iw2%iJA$?Z>@P$PM7z zPmlOHv5Ve)ujzPSA?QU{@kbN<3ip%qp7rgsAJEm`%Iv>Mad@RQgWzNpy~!#5iIst@ zF3~R|@a|s6;iPr*u?1RuN>A4IT3%|ebZ@L#A{dyZ5+@f!n%9Y;jn? zV_B~`GK7HRpackQ(3<`f|$hx(V z2;0I=Yhizu<382-tT%R|_wMgPGDtu&TQgB7SUyC2>nUou&R7N5IeUkCt{3=_%l;3x z;E9Mhb9Io{+B0Jf=24C}3Epwv#4(@pCB}IKAqLC}+?F-L4co#2U8s({EKV})jH=>M zv98-4!C}#pgwWGorky>LbBOU&#De8HEYABg2G|0M({+d17nH+^!OcpPxPvczm2?^6 z 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 diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_appreg_vs_enterprise.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_appreg_vs_enterprise.png deleted file mode 100644 index 4d8948478807379f87ccfdecba57efaa360a558b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 67333 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

    -u2~KzMvro^@YP;u^Gi zzEMHzd6*WFp~x;Xn?gRbd_{fF&2_cW3d}Zg_s&hT>?W?aZ9!`D*|6l1B;zKjyU)i> zQq|dQ@nUegCYt|0SbNK`D5I`zSVg*&kOnCU3F$8B?(T-6OS+^aMnI%X8iwvJQ9`<7 zVCe1~V2F3n`+1K0dynt?_sxHpYxcGF+H0NbJkRZI%SGOKrDkxyf|TJrjt#s~^miVp zXH*v0q5|`wDLZHl-VbmtLK7-a*UGh5_S!t12PACo`lmQnpJ^$Ls_eHBK5`sCs|Z~4 zL>YI)@Bp+y(x%*aGenkvihDlS^D?lj+h4BCF+=<$6kEWa*Z^*_QswOM&JEyKc*{0YYT+!_$ zeGO3uzT0Vp#Li}sRyx*4n*G`b7T=%v?7zS=>&eS=7RdUQ?)j(^c0HA)r$KdlW@M}h zh5%%7COb~2O@(?dy0?vU{9wsmM`_Uu^eE+B2Ti;~MwQ61fEre-(#~=VxPgYAn|FEH zS`M!TbIG*$bAE3~Bo$wiGHCIEoHfgpqqh-|Xbf+**hv>7Mj>g@B6sy7j<-Z1V_(N| zMK36f$-C~s9pa})2=ouRL#agvD&rN{9QyZu^K+cpMzz}dN%Eb}|;^(Xn zd!sq*@3~B=Q1S2w1V<(u{F46m69)k41QfAkv|A2^4M^J`B3 zrQ-1K)fG!z{1on6Ii>WE^D*GbvlDbD1V&&}A3yFn--8~-A5zZsUWJBJ)Bf1(&(;lE z%VcNj)=oOoj$uq)l~W!Dv{^0KYm{XJn<9q(q}R*W!~~!^4!MKbF|WKei?%uDClAiU zNGSRP=R5Wa*^P!9Aq|QF`MXGn}Y!z4LSv1b{aUmD8R`j zjUJKw?*MJ}*fHKzEMSNCT-cpQRo+vYUeWFQY?FTbm&S$00UwY4$(;al(fY$40mnLm zo{q*$g2%p1)+;V2G9TbtFNB0Dxa)@tw+eAat(zQjRM_K zRJjj{6>G0Ew_JWECRyiu4J$<0#iSakV{9nYzF>BP{8=LwszlzDneA3vaV?(!2b~Jk zsIY$+;)vciY}kzoI$&s6DZ=A(3%=>Cp?#(dMRLNyD=5v-@pi3{lkR$B8-Gsd(|Ulj z+V&3DyVS3_(op?{!MX+mn|)E$q51sGA5PyNMGYRMlQJA~e6yocYM&VYctAcfw{o^V zODUavuNIH%x}>Z$er)7g2sLdREJX&Q*i4t3##y1pQ1g!37k|zZ1bH zu+9qcrOqWAL9bVs$XIKT;cWAH7UT2j@&Ps)_=rWmjb&CF=m`h1S_t;h<3p$vu7u^& z;Bi`fo2q%_Kg0QiktMgRCOsEA_S457tCM9kG1yXjE(aHg2FrPhp1f)5c&=ojSR4x0 zYT4qVnuW%cvSl9eSmfF`Ht0piJzLb%MntO(&Xw&jp+6MHFWw6X{JR8qL@@JO{n*Md zJEAx)xzE1|8`S5n*pMvD!YSkj+m$+8DlHY04}5fG?ivN z6zDX#sI{cjd4w|?Cgo)}VsKRoE%jUDxF*S&D-LXfCVE zL0ui>CueIo;Nb|qWxf(bL`&$C0dGPx3J!G+>V^q=J|P{icO6zc+3lDgrwg-faO6VH z&4QSZ0f@i^pQo#v$m3o zN7Nr-bD#K7qxC*z#$SHzvTqk~qL)AUe(hYBoW394Ibtm5>|L%mZME)SUY=cgH)@yd zZy6J-2rRPsSXg8eL0)%2e`Z0otnP^M-S^B?(fpWzy{xFTA8PV3UN2W!(WMZ%cBo(u zrWn7?b@qyPq@Pugv5Rf{RNsiV!5ibs0c(+*BbzZ!!@t}10Y;k`=Uf>Q)L0I_S(cH3fXW)%`CTbmwbd%Qv6)ss+B`KyPg^WB2jDuM zRr21$yB+VMxvb1Gos_)n__|un;6!ixQMd5za9`U()=>dN`qQKsDKlZZ^x83Ke%?mO zE;Cxcxdzzs8vq1{D`&U-c*`e7iW}9>x!DWgN$(=H!SZH&w7@6(RCB7D6(yyEvvn-p zsMP|^H4d?;{N?m3JMz44K#OX;QxtB(w~JS=QJdc_jWxg!5qVqmqEyZEflqt9DB?2O+t|QDA z@jJb*{d86a;;hLlO5KtIEpz0q7A$Fpyw(ujHIM6=G38ZG*6@+y_|}zq|62H(l5ZHLTBP^W--W z>=CK%5guN~?3f37z4W}lA{Ua7NNQ-}h6hF1zlev2Nz?RV7*D}^b2=6Bo7h-BY*s6y zv69a!C0l&7`i*!0!x%1vX9e2TrmPm$wu|6D z54f-P_>?78}Cz0zib!zy0t38U&dE zz7rD{6lf)?)Z%$eP?;Z6{^p>}= zym`|6F!j=KLFTd*nOJR%i%pkn?n^IvYbyCC5U>SbO-IyUQZi3^`j8m+q2pF|WhO5L z5kM}Mp^Ao{GkoSK{1jjG!e>b;dH(nLM;yi_$~uOa82lC6ABDcNim8dj1lFLT)4iak z@G>k=?D@b|;`c-OCzWB%Eq_L7#R=?{F|>=0@KAdV^rDQX@U;9uZv?r&pvf;21cJh||yCr6}l>!G2k4cUkY*HCvuw+xpmTIw=?L#tA z-7sZrHjX33r;j}m*nMZ4gVX^!`VQir~%kAq9t>U_5FLTD9lYcuc zZ*vO#bDp&hd@yaAY+#yqQe|sc4OnzSSBbd43+T#81sa?4 zk~}7L!dH286_||i*q)0q59QfA>-#YFuwt%LpY=a_?pvB4P}pU_EO z30tQaGlJJR}4wx77L>kvIzU0Se( zNg{I~ToLr;2$MFd?RfsES4KKeXk*k!QR_;7DjZ`5{9}L(jlg6f);QFEPFI&=rt@x- z^)$Kj?l1cxDB77 z(_h7mnHFXJ3%$JPf@=mbgv)DRcmX23xid>==m?Q4>fwyh2s^knw z*`A}RXkxiX!?qN(?INg>v6AwtjbyrQ3Ns$sJU^Oj-n{oX)IOu726D>Cr5qI~Az@ti zR&$s%rii(>DnZwpOvK&~LnruDoo*(nU34X!UMg^NM(G;a2IN2bsu_K9$B68RrtKSC zoOtr@y|@3*d)F=jHh>CMe-F$6j;fYZfLGT^>&tR>RU|9F5PbA%$H|V*6XNIeOUYV^ zM-r{fW$y!SY2ILYztZ-Zr5Ibw>BhMDhzRWEC}>!5+dv4Z)??lNgG{QkqusI)(Tq^@b__bDI4T z=SA583-$20cw}4^-b%)cm)kfDH@%4a?PdCVgtYUl)A6`?W(;SD$QABlzW(B&eLllum6##jr~p?va|Q6K4YG0fT}wFc zb}hU(kz0?(^uDsgEU;k6gN_O7``{yxw7!^x3eJQ>? z@yVm6fae8%{(O?yKPA7Q@htOFPvKu(x2hQ?< zpH_cuDIK=pu_f-H2!yl5DQ80sNXmi#Rfhn}w{Xb97D}fVhts)N%XyZ&JeU28`d-ER z$r$_0ZxZsCdA!#?|KHNn=joW?N2}NV=XZ&RR=V}y-}U$C|Nl*r3lMv&7rkb;{)&Jg z!UcWFCqwz3#9Kzq)@AlhDZ{^+=of`@H7dQUA~lWO0CloIZ$_miPVj^j{yv9<1;G2Q z&#b$`vQALVrH_t1v)Jm-0U5>Wh@#74Jzo6v@OMN7#j@gV9|FzWQ|sV{Bme`*8v9T` zVcA5&2OmA6w#_mDc#xR$Bgv!MEtDz>drX;Y`0)ie#b z;*;7fD{~uJ;Lm&#vBE!OIh(;Y*%%g!2t&RD1s@d?U_dhsNCMD4g50#Y2Lge6#%%UJ z`0K}I8^n|(Y{3%q-&BCaM%)swHws7({QXF`DktR2N~PB-qg0xmM6NoLfN6cbrXzz^ zqPmw}SiQ_jqK=xFAZ^9&2QJB8FLnH_7)8l(BE;f_P6|zIx*Qt~EVRZwi~mfKJN(7Bum?L2i4j`2Pm~>-x?aREbs5nc)Q0mZn#3Nh4Bwhp8y`g)(~M ziY`grF21kj{xtjm@v0Yb{s#U$aEt2{KtN=z5WNZf6JMzwmy$n&q0#EE95ZtaE`@2- zP;1_2#(Y~M_Y&-=*l3Y(d-1;ui}&RPYBKys{Sn*{5+X{dyz=FpQh^qLuZfbcuf6h~ z=it8|91eXqoufrgqj`S$QE2hKwneVa+4Z^(#SQO$nA$o}0bq1M*zltb5bx|io zhNY#{j4u?)BkssfWhMsxMeo$ZnxLBYC5l?(!Mls$n7*j?^SJmQ(m3(idwT#HI=cNQ zhd-*^tLaUIaZr)<4|YqmnvtXEc8VmEkxZVPjk9TIkpqb~IGgFNUh-{=_vE{_%Po@Y zqt@dK!oPnx*5dbe&xjvi-8%8dL5QA-4Dq{1D(q&cMc3=G7p$*u>LlOtKMsgc?FUv! zn&G_fe6k!+wJ3+i*dV(oq(tDS+YP;Oc~t*ueQf?pZt8VD&3CcCq%q07LFE6~@=VqL z<5<9-^S|r`o(L0rco2Pegm=sfxe@%GhNa{OYBz^d9e!l+q1URA(42uQ)@H?m!$srH zHQ|lw_WCd6)3aos#n=5#6hz>~G;k~8`IK-5G?+Y}{;+qj)~_$8;5gbZJ4)<*J9a%j zteW%Iy8WvmT$^umxt~qX53eJN$p#dY7FWRh_ohDGzkciRo|3xN*l>BTn?NwYv(}w# z+`>cUb<|r{!;5_w&(evHb<$LF4R=gwemEsWcmANBoA)n4HgBCYLmaN513_*&Knnl#l(4pQ*y0WJQ@Do$LS1dhC|y{=w1kVOXwHG7dHLTDnf++CZL9 zZdGx!3JkqfO@%^y$p|d;#7+j9^e&G+y0*K#&{%a3>!73fS0An1Qb*5SJNj z$|`#n5W;jW@+Da$?ptAyWhm{rg7|J9qj7A>Zu>rJLb6KCH)cCM{f?hNY@LRC-ju#6 zLE+W2wZ_pH|C~vxjq#4rbnV>Nj)6N97TPNhlQeq z9^kK?{>#6O+`2nh^vQo#^m#6Nwtr9rLJuRH_qn0IE6onuo$XhLs20Z3EAFeKtnXvl zNX=PM|D8XA#6`T)LvvLLQvZ$BRlJOu)zH?q?ag9G4kGJp)Wf}>hd;m4CIkc zTXf}NS0Sz9lKdy{mNXH2dr|FDEHLY3qpLX#1(5GkR4u$;C^Hi%EVaVW1}#Waasac` z|C}7T!)u*FzCi@cp~SJOplk5F>C*b1lvdDCM8rcJYXU)x2MNe|^fv>RCaahy(^%Au zUdZ21@fTM1pwutlm)ao4B(LW<0<7e1uaHTe%_G;aG<&B$;29~MYMw4!ekP?zBrxw^ zM1ozg&Jv?WwV3)HlQU`bO&E-*wF$ClXjU^92Px1^<6D9YO&>t#;`Z{q@zB0$j_D4q z9{ilEb8mvx&wWWgv6=A%v-kj*1z%0<8%kLRu>EmBcDT1}{MY2AeI4u)EK+~~mD70z zLDH@9dq#>P?@Ck{Uw)&@&n2x@Xxg_8VWH>gy)d5{na-s=?ku z+~BzIn7ZI1I3gs{)K8f5k%y%po3l@#6#neQmdvayyb}LqZmHjCB)tO#v^pP`u734w za%hw|HF|SB5B+|-2yi?sOqjA>ON~}J4d#CchJE|$we$enB(PE1CghAG6ZqsX71pw) zSG%vX7vj}&oIc~ceEpNJ+q1_K9mm{E5SlB@1Uw?AY5yUt0CbA-G*54tKX;q3rIc5q zuFzkS(WMwFDu}sIgo+W#vAtHe=fNh3QO}-}irgRIbr{nstNcdd;bCt4JVqwO(`&Zj zecaal2lCHD`sLVAx45mB0Kfsywd$9YWKlZvu~hx)VG`1`PvvSnC0FZ|&r|Emw-qmz zG6;F_T8sq_Z!wmWU+y6t3W0?a*4^qo^((tH_N|6=l$?bX80W4ab(t~f6X81#^uOyw zUJS5RZ4S$~#W3abtjj`*{`Bc2LcmAk^g^3hm!@<2J8!b6dq0km zV29SBbwZbPP4d27k3pF9Sd~Xi!;cF@{4e^p{Mk7WXm0Zs6?tCV&rFK(?b3n!SEoAj zGnI{W28v{rRmY{nzLhb1?L$dN(D_-Wv(#eW-Qpflv&7WM6mqp+x+CHj2=*TonjdZG zEqn3pj5m5_W*g+5c$%W0UcY)RXHy_}4UOQ8zuZgKhUG+2IWRlnl= zY1%JpQVE^FeqOSJE#7IRyltbSN;4KHHU*deaX7nocF*)&@GK}EaCkO9g#B7T3t@q*g zV^fzqje+9P7aa?W&_5|xcAUoyuMfHH=p{YK#^S@_>?9A&ZADH5?Pdl{F9@C9S@0pQ zvl}DNvS}8b!%Pc;NZsLRsT^vMA9}@1Dh-d{nOH?c{HK5f9&)zm@5yf&O=fBPy@sF% zu^M()0p2F=YSRjiO+$dLt)^yEIXAzbODa->#Yk2fryR3XxdQWg~M7sqy zI*4^RKN@sv$}}r!5=WZb5U#yr$03vAPjV_42HN%qy$v-Iibx<^wYL1gU7#aC!(i zQ_mRZhvRd{Wf85Jl(*YLLhEyrVef!oEht@&{RfToN|!d zMYC&XR92R(E*FEzWW8Q;2#7atB})8OTU_UrZ8vTZSi{n}K4##W5j;_pc3z-eHyfsF zH~|%=>2tEhE9eNGcFz;&jUUY$+xECH^JPU*hM*hwwK>Py&vAMT*H_q_PfrEd?CG?B zRRep_9pfrGC^tc;w>q>N_5--Gupg$h4Ry0h96puP?L|FFaki~1v1~Z!a!APecF`>U z37O#xxC;qV?>egqc8a>6R0iC2`)`l{1p*9|U$=~?t_ij3Ew(>Qee?sfv zn-2!g-9&Sjr$jB)afQVs2;f)w2O&;Y% z-`qrp6%cZ6%e0Osu$ujGUKq0Jz~i5&Ut>Fx*uIP}i8QB$b(UzYM1KA7gzD@8gy(|N zbV|9@O5*_qvWlAPg$>lxWXOiU(l51o&(ppvJYl@K6hU_KOHjyoDe9`}O0(i#AyD)|i8(L(&q`S#XdN ztDbB8u7&QY$0j>WGo-o=H15qYDgRY%rMr!-bhg4Y-F}zz-B)hAd)nIfBtA{4u)Z+e zMK+Jk!R{vaLW-u<>37yH!R=*ZGNzl-Z^1q*raywecOFr->K1N+hq^BKAao9wC~`O? zz5q83Ixkf8+8^dQS@K-oW&7Ki=5PtTTDroo+VDsHpopM+VWRS)>QlPYB5jD^oEGxI z^&g(2mh)+My1igRLb3VEh}G#O&lM^mCHF$nx&l2nU5R*jXZiQH;+0!z4+|X;uE6ez zhmUBmk%~p@mR)=@h?BI5l1^u;+}Vu}AivQWQHJlAsCCXO$R+=^#)fKelMvR9=TSU7 zX-kDtWe;;9irKz!9RgzyJA^n%X)AiZ)s7A3nQXFP2{pM&AC8gmOf*{?D9X(~+R}?= z>lF#cJQiM6+~?_Q#A2{aG-W8qNaG1o;HbVp7s{VYX4wBAZC2r#!F5k?4ckyZO;|># zyz?pc)U#W9V?HNv47`T1Wd2Cm51571i*+rx;vz2GpXJ5Sc zAN*MvSd`>}_E2=<)^;nf0upi3vVEA2#RPa;O9#it{mdtUNNjta@f*fNVi%m%sEYOoAdom zoq__83R~)=ZGu20>szYrm9bZZgKqN5UiRL@7mW`$b&qF5e%IQX9ebmlP{(!2*9@U>ai-El=UqpS^T`yg9zcyyst@AUipKTe|4rhmUa7i;W5^kN@@yzPG8w5?s< zW6xvo25n9~HN4TPA=CYTaAVan5;OCBzn z-4QG2Eubv;8D3`h{hqOjM`K#<`+!j+hgWb)y=3R}^1O{UjM0XyG+VZQE?eFoihB1; zUz0aO-FcTcQ5x)4Z2Ub5^l&)$@U7g!ZC0<1R5Q}%XOppqYrfFh z%=mJybd-}kfeI&ROQ7s+(5Zi0YBY;&WTVclI6hzUjmyX=i}?FC7PM;-RI7Cn^RzU< zxNGaqYt>6t>!nEMIv9f00v-HgJ3PZaaHTVB<7Y%>M5_NcU>W1SE1&f)d9Z;Tp^jHMqbZ)p*w3tu{>EVdByQu0rm(}f{)9+jskW#q9D?4qM zPaahpO!+XXp1a(KJDPsL-~xusMp)bmQ-rok1imS@1ZEyFfUvF)ys8(~KXl)f$#gho z6}e`o9?VxSB#1B!ud7TFX218G7m*e|Eo*w;Ba?7RAjDy)n6S&Rkdpw_^4T&>K9J>{ zsJ%aP+J5A-MqN~=NiKWc zHDj&c*3Sih#)MUOf}Y9#-tE`zuhD^DMfT%pvqWZ8=Xqb==3Hwd5-rb>bayev(0no7 zEBR;@J{pQm{P%H_d9QSBOHwFA5Gp`&L-Gv2r+lM_h`EiEOaTjcQwHjv+hI_%-_wp8 z23gq2H!ddhem;obD9V2sc~Y`3smGsIp-Z_M3gHA6%+&rrW+Fru)9ZYMjl9pBHMxq7 zxDa8pctq=pnkgLI_>$ImKLC#b8bTSNxvG3(vDv>4(%XwmOGAA9DYpa*gqM$oMWd9c z_;H@Rgs^Y}Wy#Tw7^O#+ep7;W-u>jGL>P!X{c@Zc<1%aUf@FU<9ns;e@*OoT+iM1G zYf9XDnNHm$m5lgj5yT@ZJ=68B2&!Q<((mKETjfZ8BqgQ&~1RyU+^P?9K#-zP!u|IL8LgCt*$Ty0A2Moc*s0W@cr_2S)8R}ho--epqgpG zfOi%#dCtuE-*FA4JP>pvCG0UY`no91>Fh*;rr6`pcI<4cCB05|WJ#mdTQ*_xNI<48 zy}Fp|ps=M}pa<6N)nRnEZJ11oZrF4q8%6>3lUQL-^wfET>E{L4WPIZ<;Jr^-!4>f1 zP?HO%l)$K%+@})q{mIgZqj5E|$QI>-UG0N1se%>)`eCIr$jgFJjrILQN@lpHZ)*Cs zX}w*2d3w=LnP`&f=-{CotjkCf*^d)Y&1>tI!D&97(2mMzRV-fj%KO@`d(-OMlYa3Q z{0pohv69f@h|8Bz{yv?f@&7#>a_Dv~C()mxn)p`E#VF+0Tyn2mpeN4Yigb&-aM|D? zRVaM_Q6XK|0AVyoS;aksBuw7GUOo6L?^C)mzx+h?cthG$xS2Dj1uS_03g+_;t~9ly z&|2!NXxjTBlD9s`$_FJ66!>nYdKtqV)%;B1roi>7!6nW{M|B=0kheG>)*GZB?zLd8 z^#UZW$LAT5)t&MJ;l-m-tB7z@qUBN+&(JKNw$=+%6K=YzzV^1%?}UN?2V$KyY0I}f<6$KUg}KfJ=oLJ2 zYy!UQTXafdBb%l#juYU{b6QA$thRF8i^%CNIP$If^n|A_pEj=2Tk?@sbhh7DL>auF zkhTo9fpA<&roElie{#Y@u59i9#qO=|K~ezz5`#la(O2O9hto^DdqVuEx`W?7Yy&@9 zV2$Daf~)G$cs3|^3(`L{IT>G&aS>TA(@=`hMGu(Ynmwdg&=d?wEn&hP^NIw0Q$HVA z7gE~}*wD~gn?9_%t#Hz53o;UdP8e%pNWr9sQKV|-wL{kOzdea6BsF}ihh!;i;VFqaVqDA9VFLp!>6ZAL#?LTsDngUIZA+5#7B%^z^tL0%5cuHUq2 zfsg&0s9E`X{mcLdHh>3+!k5cX94;HUWahAoZ~M4m>a z@VM59elgC`LEu#PMZjYNM(Fcr`LunV^#f?*DpCZUVrE3_F|?Gec-e!u06Jg1$ksmJ zZSxx>xDhLhAjKOmQv3FrZzOfs8F(rRAoBf$m%~0x{w#^gn&pG>god^-C$g*}k_Jxb zyPSLf0C#H^aK*Uh~?9PzQPTpjRXxj8@pbz_2uzi5d`WXWKxcB~uN6~-re>StlRAu;pPcei%o$WnBiMvMQii$`vfol9i#ozCEoP{74rYW|CHbl}^I z&}#}pu_BD@SAh+u#M_ZQvzL$7BY4r7zv)v_vA0o(WJ27u802QIKeP0dxo!~e{t2=l zI!S+rE9pl2mZLyX?fJSwvazjkTqeu+A1LST&n<~-fDaND%hvicDSk_{cqMveFZlF@ zKbY0%iK7}oOwjFarw)=#S-nxd5-!qf&41>7b)Q!R zO=2p2tM~c*CoMpvRCIoEOMr@;`!$UM`#{T=ZDZL(JskJUv>K zchos|`#W2;-ke{!)R%}L^Av+S@RJD04n5}7KUSGbPR3lbweV#@Z3d)E?uG2!=L!{4 zadr=56a-S4>2}jY_dNIF9sE%Li9S;`2p`^NdqzYPQn;EvD%Z?i+mayziqnik|xzUTw6YTW;Uf zGk@+xFSf{lLmI1pn5Z3N317tu9sGK`^-BJhC|EJ~foCFs< zOGZV}+o1S-3*>^5G24OZ6H03%6va%zZrmM5>~y)J0_$U4j;dzapmwT#Eg^(PWnR5wvao$_!w{#cJ#NY2Yh~+JABzYQz;1TY+2gLf6NKg@|6SC2xcGp&%5oM z2#>au&w6JCTDQc{FyY^jE6|@!?TE?$<;?%_zlUEPdH4Zo*gNi+O?^=427p^`J3R%z zAo9fG%|7iBoOQ1^xd6NLgX~T@$L}>(YJVTCVFo(|P!67K4yMd>Fkd;Kr_E*14ul7#XK6N~J$b65RXNzoxNa zu@9)L{o`K{vMMJ5lt|?v)7sR>|3T>)8i?xfQ0A9-WL%RXte!RgU9dGoPORL$CzQ%~ z*Zhl`Qr>s=kC8T7E(HsPYUbaYh21E^7Oi^)CqR`0i*KgQV|bu&2f;4Wc5D+xW$BoT z6M@_WsqzW`L%Y>9wwBnZ?7JXWik$n#woHbY1z<;6n&lG)!U6vdL(v0&JrE(tIILj- zC}T+UJP{S(CCQcEp{E2wz4R+N2YJ24^1Ax2e^eMaILP#>fJH&haD6SVj%n};m-}Bt zmgfz_J(ExCw5IpB z*~AlgvKK1vN0~UfX)K4m`rYb5^^{wQo^brx)!m8*Qmsn%v1hSG$bv4IqKl@#JnTdp z9nX@iI?BD*h^IG@r%H*BX1?&IVgaS}^yAh3J?wlTajKR%*}@0e+gj@^oP1mlh)AV{w5yV_?MO>OyY!}ghuqzs1^^6Rtiqaxpg_xh0E042$-?@%*`3^IdgH;5z<>W-TA;tIdD#I>6 zK@W`G<%z`EPq&NM|FZ{HS?0OTQ!7 zy!iiEF-zwrozll@Cp)KH^l2*G*q~0-TDX(;iJ4m*9ryMuZf{M) ziN{@i+$z?{*V$o2B_qX|^v^>FS%r2Z)q@V#1K|(tV@{2fwCG`OEHt zEeBlV?)vKIH`~&uZ0+76&LQ8EvLZQCD`&Jn>j~G9?_OE6@*D^6`x(~om-8?hpI~## zYftZ54zywR>*C+`%#qNL>=Ol*0R@0>S;tdDsr*7dqF!sf(y8Jj-<+S}F5bMyO>x>} zJ|&?E^JCFKEO+Y^+q>k?ZrIe9(}4y+-{>>dsMK`QcL9R-!&OH( zoL9Oi%UHm{Lao?q=VX0mnWb0}Smas>WL>Mh;@6*+#r$fIUtvv^dc!vk{?aP1B$V;$ zn^LD#SopiQFpH&F-1yAH_hO0yB1TYKaoEl0>I7uda5QdtZdg(x-@AcUCUeLFLPOAq zTJ%p%(Q!gMX1bqzZ32uU$(zNO%RgQ$20DtLGNQht;8G1MUKchL@52!TP0F zo>@ZKHA57A)W`nDO6+|Z8-^8p?G6+fzJh0-6yf^VFHTcd1y$k9+SlF171mlsb#kJ> zy)0Yrt_e~aqG_fA2?kU?`QSFrWp}Gc?J&4y{}6@BwD!dCsn&qbj+!QeY$;RL0RjEX zueGf2oA3s-X{VASUhRK#xJ)_=Pou+wxr2QBp-OfKbX=qiPTjCB!qTLYnP!VmU0w;z z#?k)!Tr;+V(q9CxueWFWV=KPtGEM5OTgd4{)?UbAh;Iwr39<__wBi-a%L49%yi^Wh z7pY@CIr7xNHvPex#Eytz?XFKceZ!3zDt)S%$ZqddIR|{-&0od(`}ix&fGdzY?}-&= z_B{{oMpz#YQ3QK~w;TP9Q)a&>HmYn#J+fg53ddK-hD?2`+QO~|YW;n=1QUjc2|^li zH|2XyT~+WK=K(zgHoRVfK6F#&V{ztVj~Bu_ke(1;ueg*8p*x$QR|co+7NpApM(vdF z5Hku{uKf`?QVUdTPh&eXuzUIVFh^3=+pbb69lj+KQ&pz!^Hv>-WGDKy5$(7$z7F)f zpdL0%gX)aiDTZ~>ZGl2Z5v{RALeEj1d^AbJN*QA2a8AC=y^8vRd7c%Df0i( zPx36(+sOslWk?;yj-9_`FDhlKIIUoRW$)OK8U@S*&orbPd~XMS^#5_Q9Y9 zsD7rDUa`M=+F|%)iZU5N{nsYms3o+K)7<-9xxo~k*_^n1~(08ODSk| z1IP_UoxQk`sZUI4|YTPBg*;p_~dXS;%nQ4Dc~b}vQw*7BCNq$l-p{EQF4G-7IUbP zh!A#Fxd3f&K>NPS%*+uhzvA4#ZlNJ|IjY>?X}oP7?kV67Y3nnJH!u3goqW(3*T-@u zSj`q2=C5lzD;vnUf8r3~;)f8C+~QF0rBOk!_0}WJ$S9#t=YyTwIw{rF)w|Kyc1*67w?4 zX;szf$boh|HOP-)H+mJyWhWw%Z*_rakADn*b&eJ1Lb#yMGZ(|B&Qgr^7_v(#FNJ;g zF7cxX0z;-KvLg*jlwiuR+O#WcrQzKVg5Bxb@@r#8d+&zGe}QZtbt$gAbyLYp0oMuK z64DHPaVH);xd|wJDodq~Np=+sY@jPCz;wM?Vhbw8Iz=2}tbAAxc`?$2=9ghnG0?01 zbi3y9hR=kZ>4CJ1g2CbZcgy<7ym7>@4(4u-d(`rNji8ytfJ*gyhUZ=DkNyy5jbkhp zxgJ~yqxc?B4dLR}KPH6>6qeUxy8Av-?gZXN~9@FTwj5GI~7JzwP;o zVZPo8Zfx=GFbxAI!)o-e63R^Q1KdFF_jfzvN5XcW-u1MD2j0hA^SDm~Z!ZqP(!W)f zrb%v0X=q3zYDa{ytg(g25k`0Nwgk(P$KT+@!}^=)Bia{AZroVTdj!vIINxaOr$fTJ ztR*zZ8gy9q!^G*+tOCP1d~EkB`a8%=!A?Y2yF{ zl*mJI@+fKT<^@(CTtdUcEpGQ?PfHm|B56{ArlN>5tLHyv+X2MaRkA49@9TgZLq~*~(Z;g~sVJ8o*>|oqKMaKXJ zjWx0aKI~T~S#C@>baa_wXx>zBRRggXuyh+e=O4suRD{FOeA)*SNA!}aGqw=Ha8DM- zVHSa5o2!g#7nCB*GAwGE~V#2U4w8V#sr898gJqb*k997%}kK6f_9^ug#{c{b4f7!L3WVDGAGz%{~Y3jyfNJ9+G_OldUgcQ-9#*SGB7DgYAqX z1>Vwpjj=v2({i(vpsFd_gw?0LXOAXxCenOauxAT501%g&(23Thhx2_r1U0+&g#X&O7hZ`jTZV9T>HYo1}nM-KW6pc)_S`<16 z!eqMYqsz{z*}uzsP3FIEP@JDHg6!qo(YKf$IOE+v;Q}0j?Xo^o-B%GE5qd;?Z`DH6 ziAivUYH$Gk{(YNA4Ux~mhyfcXXS=SZWbn+zmfIs?ds_W(uL5SSE{|#tMvda) z;sVGtZ8dJu$fF+q2g(#HewnYoD%H@gcn>UKNbaWPvK#;G`M10wd+;A7c#lePr`v=B zURI}OvvQ&_C)ci19ufM>pbwp@?ZHzbO0ybPp^c&anWpx($&8 zwY>Huj3HEBstRYUqo78JaE0d#`?+}4JMD6vML zKwc?|Iv9qiCwvh~BB&zE%$tZEEZO)|c-Gf22s6q^KjU@=u~<<;4ex3Jka2ump_nFo zh-dia8;-ro+Fg90;L~FrT>i334wOjVpO=Yie^kjP3~To$N~ufNzRYObE$bX=dDys) z7?(tIj@UDIC-|0la^ComgN=eqZ+6`@%um?=@U6&34<5_#)lP%XIZuDo1%|0^>eso( zPgjbSmBApNr(e-MaV><>q^4ncu@ai7p|BdbP2DxOs!?3HIvL352K)P2Phn|x(= z)&aKXkgI;XTFp|Rw3qSUN-022&jeeQaEO4~Q|8j5Cm_`?PkU#Ii2bEutSSuNTMnb}$>2Po?1cN?v6c)n4{#T`nbB_r1>cx@6<^LcpTXI&<$?K&M{Q~vp7N8@v~VE|2FXN_AYW1 zmr^4XI*~3p7zI{iw8jlg2%???Y5DMOiR>>I^{Tg=$afE0%kyvd3%*YIeDW4U&~G&> z_9fe4Osu`TqG{&o`o}i*5%;EvS+e6 z)RmLDSie533XHfPbaHW7blVO zz$w`YE0X0t4$?dF@5V@;_}SeLYX*X6{sGP)1P{WhQ2-BJ@>ohV_~Pq9Cv2ZF^S7N; z+IC;q;N+Qd*~aGcNE_z}oj3>8-vB5%u#nh#vdihcaFH|zcqllev!2)M3B!z8+4RSQ zp2YBVML*Fj;xlPB%+2!NQQ?jt8$foz^e)wY8^ z*ZaR&3OES5>O4;as-Ws26Ma1%>H&F|4@^puIFZ4I(tC2{@efdcM?Qy}qbZ;mSEGxl zEgQ3_e6MvWtmOyH*=PT)TjR5ONgihaL_qH;G6cwu{o9>Dxg^!~;X4(fSiuO{>oBhS zbX10g@(G6VzASpA1SdW^Ldx>+aOS)@tTO{}EH|rE!r7{d1QtCdb~g|;Kn&RR^pqa_ zlMfuYXc7N44ECSdM*vs&^>d8{q6(?{d{x^`*Ua1wJZ+8h0jKFc^}JX5u&^ zuA-iy4XzVSudH+ejwtma6wc7uy+;%uOr5=NMf9(RcvyMx9{=%lHYk~r49%U_;eS*3 z@RYE_=_+dMYBaEKXFKM;up15d+KNS&d5zl?1ga7|$9FlJje8ur(-YkFZt_>t-$>o) zE+b0j*{pylk&_hru=v#x26jOU`D+w(2m4;~2vO8A$efmA=6^_k(?>I<_a!BXS1{IkPF3np4cAZaee9@Gq?oMr>gBfmm773#T8K8U z&gybF-?Ho8jlOzB;pr@L=wdYD-^bBbrTDTa_3&|o8_i3+Gl@7=4(1r~xO_~XSDO@E za(gbB>xA!ckmvy1&@B6v8lCqQ1bou9q3czVqr>cp=>-l&0LeIT^YXZ8^0o91ec~4sS^gHM4Zk5 z3(Lv}Y`LELf_DJc(j6<}-82&jgOR*_x#@PiCc{J`MBkYkg6I9(56ACx-^lo)nNYuh zp;hvtAwP5{+DZ>)M}x)6U;tLuIe?d7TaEAP!clvUSAx!tvZWZHy1d}py@~m)e^G@H z6O?Kbo~r9&@;iE43o6zA{vlCrZB}3h^-k|cKx_aQlk#-plZH;)dr4zO>jFaV3bLrd z)^JCX1YYYy);U zpLL(jiXmaVTJX&9YsB}Xo2EfOr4RL$^h^V}PNX(e-zX_Q1xjN^uZHH0OUgK!Z(ZJAa?N%w zymAgDlmg9; z3zpLx7(^7*Sr(!~g7@85pCoXcN)Dgg)UtC2e8;fySkMK=bR@(Bj2`$3{#B(@4 zmXXC>EVvuN>M+&rd)%3b5E>!r-7g$}u(pxGLGJ$iYj=3P|I~%nn9}#lKa-1$*~{5) z#52wspplH>3+#UpMXz?TBEB!>eFt}$xm%o;nwsXLR#P9>!~vK6B?SL4pU+%ys&kM- z*%r@1(7<6qIy3M*NJVxYr$ztTPg9Iq6@ctj#a3=$Y-8HJ&Pe8CiwB<_SMsa8Sa8f~ z3-t3XXVCPoOX^+w1|5zsmO^o;2%4mj@dx zFV?b^h)ZVoWdc$Ci4hDszR-W-i`U4pt_Af13#`U^W$Yk(QiwD@=$@x?RI)Ec6jXp+ z5Okq^I~RKap``xLmlC$!f4RNZh5|lZj6U!68^W#mPl<{CQiT>K!>hOK7zsoFAHfug zyep4@RB;r#vF0o_b@hq5ao%1Mgu>*EOg9{PG9yZ08EoDxWZ|CFPY6dTe3h;R>u6)3 zmSfAac2w?ymgwB;-qfVv_Y@KJN&4*{4O|;=^8z^NBVL?ho}e02`eYK=K3Ct7pYht3 zoVqSqNd9{7*5E{CvF7akpl}GYf#>+QQAeG61@K3onMNV-<>iOSdI&iuw@C} zI*I(PWwI{Q$MhrYG^^2dd$Yb^4i!J` z=(NYU$~_tib*z-JjLt>n&Mz=bN9{hy>^P8iesXbA?Ng$cF-7^`!JeVGzvVM;00f2= z4443a;K4bnZU*g$RpEY_olY^yA)R2+ce>iniZ`H#+e#ztFWIOQ1AoB3Vib4a8jIgv z%3jh4{xQ=1+#BTi4)K8;bf6$x)pb|HZfI*VlHv%GWs}vB1UQ_!cgd?!8AW=)IC=^6 z-mDwy69P3+@5+VO``g1>R%4@q(Zj|~fo(Y^UqnoP7Hx;|N*40qS@p`S7K?38JtzN$ z{E0H+kA1`t^AlDP8~nT$3J!=WWP9aJg5l~_!iY-XYi@echrf4}&rS22BHo7|Qc zida>(ciwWXfnnN*i{1&0#H+u;TmPpF2^OVJ|?cW&oe-Lmyl4L>9 z)OU20r0|nOfxo_piu&ULx#8w;LQ;B;4r~WE>Wv4dv1B9(=<5L@E+B|}x$Nb;h^;Co zshzWZpZ!fynP7g>K?_{anSUO~A7{CbU%`X_;;bz`^FuUDT}Jef(WfFc!SAB3TN1r- zl+HT8+ak9!nb|!C#|M0N*h{K5diic?%}WffkoF)?W}a-}?kRl_@-YPFo%f*(P(kWh zD1uyV{^pc-Jr)q46}YAKKZ(0~kizM;df1;4CI^oPdDQ`aeqa7$_J`O@t=YDja#RMU?xh5g3wOP^^D-i#E91-Q>jcWjR$lA?4Q05^ydeO`J#Aqqs8$u;x z=n?mZpN^wjAc;=~cTk+~Y=+~po^QY8@GHNf`#-aOUxO>=*UHNOl~7CBEKqsUEVm=Q z9(T1MTlS+<-s(X_!Bf-#QFJ_3z9TjKvi$5SN+f?+c8Ogww(g8~5<`9&a=4e|KffrO z!dH2NIeke~lfu~YY&6rg8J_r8YyHlDjK&228jTHpM<-yVvpmadDN%=XBy-~Ikwn%c z%`l#8S4Fna>=no_5_Bc$KQx8!xR7+~xN8~TaeMWn`}xMS$XV@{;(|gPbg5d+O+;g` zNw$FeJHy}4RQITvqvUYone|^TFx3;5ercdr7QWfl9d$$WK@`{Xi?erhw$OfkJE27} zIj~H>v1H3y0f)Wy=4Hw*wz@Yt7dAN=vqu3Q!V_P-#7g*m=EInlqQg$oX#A~{6`Wn5 zuGC4F*I)Ep(?|9Bk1Oc>;@1{6>bObnTcH!B`+WE76nWWhSl51isSa)KseFLbKNaGb zXggI!tSosT&wp))I~ZF}-)s0~DQLw1W+W5DCDL<_Ev~B&iIodqTUN+VIoj52tuV~o zYN44VlU7>^`0aJ;h(wB{n0|t6s=@8Wk-go8zLma3-&rw_GR$SOMLMyl& z5M6J4Ba|8z?rQfy7^0U$^)kG^)qw3g&Z-{_LZ1Gh+Nsltx{jKGBnmW)OajP)=Fxp^ zn+9x-2(t;12Znu7+Zfrg0s7iSudcjM@~F-m#G#V42l=-|5askSS#EjS6b3!AOX~Kk z2+#A~_I43QewueLY+l0ZF5&&-Mt$&(4X;D@Tf<@SUX|6N8nB%kxjH{=I1P?Dl+)f6 zuD}1(%ryH_|k*-->fOk(E^exV$LPtHWoPU|KO$$} z{Vi<@b=;68rS+&Ia z4P1WF;8wl_TfRT@Dy9>Ulmv>%^)fSd?@<>KynL4NY2)brOjAr&WSCeWQ_0BWXs5mt z_U0cqtx%O09%;I1uvxleJ(c}&W9~x4x$HhZsi)(yKcRff3D4-o%=XSazVLkHt*hc? zM(j5LzJhG{O4<~%wdsh8R%$Y=6K}RGA*g5ltq15v$qwP7apS#W2DgALSiF%m%|}?q z-^paWjc1CZtq|z20)4!*{wU0&^`sq zFzOpS*CKM1yks=-vdJd)2VimVP@ z^=V}U$m_&jm5EX0;FwGK{Z%&t*zkXZ*(%7$bUQ$6WPY^-@_s4uEx!MP}cFde~lhGus}h8nzziCyQ!9$RaKzRN_f@?7Ly!((`Ta= z4?y5DrfF$gd7?i~8OMYhzz%hfbd)CJ{v(JR;D$|i7ZFJ!YB=5jo% z@N*(zk>!ihs(rq0a0}3Hx*kGKb`J0;zj>KQfRDK&EaC?0h{w#8{IU2=QV|JP3l` zgx#Df*w9N@mvDD|pZh*XvW!ci-}p^)oN4rV>gu$Ag=-YeYmNaS46NIr&0a=^R{x(G zaN$5iLt!;+Kq&k5XQNM1Rc1Z8MIX!??acn{^4zH2dG?L337@%>5+~p+y6_*!o4g5t zc#Au)aKdL)ckptDn6p1Z;i~exIl6NzevNCwfkUfrWpt-$5!T$!^PK)Q{Z*gB5h}y$%E6Y-2@17Cek1Ab{PNnv z(L+_3Ut0i8_-1%E16QxUkCw$Wd7WrpQ3Pb4|9;U7f3?$fY_w)L_(99X*AUxPQei1a zvq!&S0*AVJOcZ}Msy8*`0Q3Hg5cYbxf4?J70pwIFxu+>|SrG5I65F-Ht)bC+kHS4m zP|Kwl-)(jIpaVBB8ttS6l%plQ_XtAb$mmi+V=uXayqnYb1h~3t}vwb%6Cz^>hq?-Vb!1e)ik^F7hXL4)WJ9f_{xub?N%+)i! zo(;< zIGTJ`$*`FjeIdkek@Xw?3cXa-B$MXTJQ6hHwdv~1nAu$c#{r&xJ6*!Oq|LmB+(SR` z$q46x{MARvT@;_BC**klN91A2Q1~4iA2qPCA@8GTIzhDlTw~5Sgg79=csEOt-H4qw zc%p`hCgi|aER7>b)U}0vpXwDL6e_ZvMW7ghvP2*JEc>)SeIsvEa;SKwPFx`*f_6H$#no&m5lSnK&hL zb31u`$u@{m9Zlm+TNMHqMGbjwizZ(AhsO_v>vTJbIhB_BZ^g_-Lk?#B@t_s7^D3?MZ-Fta>W(2D1#Ndf7OTd#pJ8 z%T?s^o6>JE49^Q+3`q>92zMFf>0-KKQ->_2_O1w{ER}%2N za5&I%)0hV`j#zw`s&~(4g)g{SaF$xuVy$^SqP$@h|BG~3Gvv>x)M^Yuuid=n!{kPD zXriZIT-oVle1yG^LRGM=>mREOSbtQi)5KpdwKxJ_eHMGBwR7~X_(CN!^eIIJP!)(p5l zZjMp*er-^{183L$jf}i2qwnf4JSx#cdrc*GXZ6-yBYo{Q4&;4mdyN zsKtd4jd;%fS$Vt%6^1zNuoreV(&OOx&td0NJP?byTO=s3oq&h0367@e7+d$XxfJe7 zmlN|_3F_I9c5za_tv=zmYx@YOsEm7vd+?sKz@Ws4hb_&05H6hSxc*T=xSnHy;pJun z{*>54ZkJx&nS_fKG?s=EVj~CY{=DEtF-|BrQ}r`Qx#S@5FeN#Sx&K8MO2;X;M!mpN zW^-))HV#gT>1}PCiXjh{_tRC+3X-FXU51-=$EUBLrV@Mw@h^&9z>Zo-(u@H!>5po{ z7n4CFb*#=^Mi_9`5lc0G`O?KYngmmX_)|=2z z{kg&S_z?dV%QL+CqqGBc7Dg8OPn&#PS|jtag}zH^`Ja}(Y8X`8x4CsEO|1AX!lm}c z9j*oKU86|}0l{zl4 zXE>kP{9pf~!9|}F9fq7Zk^4BMUY5A#`Yy<=Mk{GT4$5ydo&Bi1TwMz`)cqL1ohs~S z%!C1o472XSB3PatJ2F^ocXA;uBBg4{~ zm<*r}BPGU(pVqAfmzo|}^40)#0ZHDI)0Q8V)gw&jr-?n|sHe@6XavzDI+eBEds&gc zDNK5E6o7+#8axz|j_(+~vbhOzajCM&%*34kr4TkSe$56y7RPt-Ig#s=Mv`V0hYZzk z4jNSb-Dj_AshGSZDsIbtoGEbCyXlQdkvd$FphFKprkq24t#Z==R@|B@r$FBN&G|Xk z)P8_$yuZ|bWb(-0GPO6EHlyjSDi5&K^AUUElEM=` z1tpdI&TN%i4z|1YYc#V5N;NXIW?FNq3!>NSeYy@ZDVM>mLApHtY2j&Xz$|+gsI+Hk z_YK_@1(@tqb1>QEq8Q}4Xtl*dKZ@Y)S-e+nLqP+&mUWrJ)~Ii)XMtoR zOd_r-q|f*rywpst4k39HXC~{mv3f>q1=URm(Hp{HQ}6|ApK0e z4mWl<@>4grY8Oaqjzl)?blE2JM&C28&_kH(XRF2T zbJVPQ(Fio^r|SKn?GsO)(vKSF#e9Spj3>FWdv=>8PjgfW|D38fznP8BT9%nT?K-z* zSJYJ#Ttb7RSS3a3Tr`TJ%{@+TgRZu`i*5xN;t-If_A0XhZXY> zHAO3-WE_RrbJ!aNim^Fmt`nM^XQWI4tR;~u^_oJ|ZSF}jfuRvWVpa~J;ZB+35AO)h z8L9o5OuZA7tnXqahxrkLixj2 z2LT6f6{?jb*}ZVbm*-~Cen*VDf0mj!9Q0T`BmI0Ts2&1^R7{ea{ z0dYULn9Kr+E9_k*Y&&?ICVK{A{4r854dl)FM?==!YnlXJjPyZ!y+C$s46>i+FWESa!`(MbZW) zfLO8oG5D7|=U}bZbq9!tLR6Ezd+}kZt!RVqOc4&o5b1NlQEh|un1{SaOj*S1R+tLn z<(NF11|$dVL4zC(#d`fY(*Bn9ph5LMc~HM^Aqk2yXgH2sniWfy7086oA3QwjgbB9* z_s6NP^BZCHuHp?BKZB~Ky@bjcU;WW`+N_8&)#~#beeR)|U&->k+%a*p$flt;dVga9 z_2+L2%=VD8+{ydx(E81WI?1DxJ}ZZr4NN3h+w0Kx>4>Egt*M3hWL6zg=zF;HaFvPO z!U=lWrHOu%YR-J6hzPsz%_4Gn>62fYo~4d;+s$Wsy1EOvLzHITgGN?<cl)7l=V{z~L zdzPy)mM6#kXcZUu4w7LbiT1g0eS`XfdoKSjTLoVJWQt%pSE6MpHnVe+D5wrKCIjxYX99L6PB(h#OA8To zrZ^+9n1UDem>-V?L4CtD2>QvVIKE% zLD&@H=i^Yf^-8RuW4SMmQo8SIY+!9uUTsYrDHEy_gzUjE>GyC;%pC&0-!?SzCh2`tYhjYaD++K3d zFfdZG9e$zXJVHZ0@{zf-Q3}`+Kt3Gf5GW80v?lHoFKlazPmA{n zj@b;fx%{|S6x+`rmizonbIO=ZcK9$`f<{rbL!bJB8aQ}rYQ{8JP;JN$4BS zHjy$zCn1LqhzgO$z5&zDm)?Du;z~}-y#vxN1}2cvWz)fs);ksL4d3beXkJ04Zi{C7 zU_K!Xn<-XU*5N$5PtST1!yjSwobg>e?eDkl;okblmx^ew^Iy|UPC@>oa5!Vn*{jPt zwH9J#P8L6k39|MueS2PWo~0_>2g-F+)zlv0U^j+-{ks#KH@C-)y-Vt)+)WXA$Lb~Q zXI~&=;-3mn^)o*q?b59OQFmBcs724mG{oiXEiDj+F{Iw&GgDeL9~PXJjlLTlV{52ycrQ&STZfpCRa3}-Mj&toDui3%zFmU9q1 zW{{KRliWR&mSK(LDfD5MRNuIYJp^LXQVj10tT+$}l?G^0Z&XKAb_5ajUh7XT^<&NY%! z_?V2HOlf(|&Cgdwy@_XiCxDDvEqm8)OY7QHGLAnH>W;NvR5y$ z$_0NkBjKCT=jA%3MawG=*~F_gmlr9QhpS|#BPC>OG>=e8sE;N!+qKPm^Txy}j%&DD z{Muw#eaSYZqG!9Mz`G0S)Lk}on0st}xFc^O{_h&Xo5-~E_{Wg4t>pg8bEv?%dz%|&*Rl`mN%En+*Owc+y~Jg!+vb)h}#cGF~q=T9Io}Q{!hB3dAA5$ z>`V%XvyI_);$$r5(Ov#Jzet$zjfdG<=69W@WIG@vj(9 z2wZ8+G65S+=S&EX+8jvIt%mDPv;z|ZT~i5ybRKr zI82kNlLTWX5(Kne(QwO&n4eC$qd`+F6;n!X^u)HT%-eTM>?=~o1|cdHQl}>^T6T~j zanq2Ri`|AQWYzV0`E4R(Q9+%XZZ-$wVbCOns>>vkh;0IirV|w%JK>R%3+H?>T_xwI zV+e4Q>4D!-S#xvex0VGju}_O(_AQ+=lLm--8X@JQr>M=Z5aI^6byva3STkNlI`>=HG#Gcvp zn|}Mj;VE_sI97px7K_@_=oraenU6(xxN7@^R<`JdU)W#pG!zKBKuuR_y5Qe5U{?*! zM_cy9cT;#hVk&(>nS@Rs_&_XoOJ`bCCGpkoX|SL^zG!;#dr}44YwMSExqDN^$7b6@ zr+*eqj|}}hjWcUDbkCXy#tbc&EL?{A=?hsTlC)CS>_6yt2*-~fRTPBR*Q|D~cagn_ z5|*z#O$stUVja1-urs_Whd@HHbk;idZdcaXPcHLpo#OTDC705JVh#oU5!j5>jP(zz zjvhrpy-9eIW>;nD737p59JX+FsK9B#;TL!kw=vj!U$K#kNU74)1bktf%pr`>|HH+j zSM69=S*#?9IlheRsq&oKRN1f{sV+sJ*Am~|ZO01Hz;StrH+X}2%MRTPVqxU|7?}}q zgwQW&Q7_+SNK8V(7A`eL=xnv^mY#5#O%&!w+FDc?$4T3x*RC4Xt0JMOLw>&*2@98q z$)RGCnPh5%C<)ZSt{|7;Rfxvahv*jH&?}+A?}@OHMu%iqpP}0pH15~bX%&TKx21Hq z2&(i1Rmu|#yCw=LMMC!v525w-<5j@K{D;!UA$3-{0r~8k<3oAXzthN>u`miw>+9tz z3VG5lRPD;Asp=MunF(LP(D&9wN#5p~#({$Eh% zKOOuZNBAENQ`mr8jb8)iGJxIn?bvg()@E9JfwsArF86^=H z_?>35Hfo9ad<7E)qpHz@#jkh!W98gfOs+|Y*Q96?Fgl6Z9Zjqw+?xoB&Z?Ho5W_T- z`qsnHGncvZPo;*Q7Y6jZ)fWSTkq4yfNgjI(t|CP%Ly8?Hx<>Vh)8wwiIPtP*V_-JD z1?(|tXLCo~hjI{?u{>DSiJM=6S<}~{%!X2QdAw4Si;%zJ)p5o0cM8|;Dh6(c9L(9wtXxzcO7B6_X^O9L z6c46Gge=8$#%3A~Xrm0xdyc4o>;TsNTB?fG~=-sNi6?kGQy$5R>(oAC}vr)l}i z(lWk+JCuH*vdAk4Lj2xx*MmSi`^E>>psB7sL4Dd>C11m{n<@I%jD`zUXx=N;3t`tG zGn#@v@f#pExO^!TwB>i2B6Y^&%kWD4gZ9a1kLmOGLBapDhSi5r>+wRQZZ<|fIM=1np^oMzbG-sl0wQ6c~7T}}KZbj6=CYo)%6J&^SCfMGvH zl$XnI1BOG)=9&D}{Do@M$;XL_q#4kmqnwHOr1wBXn4y~hl&Qf^hmLrRvN=JmD4qMd z%lAN+uJ@kM@WNY;+a7a)Pf93NHuXkE7cP1m5lgBJklkrvvB#XFFtE+mNnh*{M>4nI zZNw+9n7jV1;yOL8>@0=6=fId)&niO2^hCSX8iEi{(pso3<$3bacRooOuCJDxn=zO$K>4O}YS&BD$<*VqBQ5NK;TREay7YGKx=5u zCarbQr?SphZl)ue4biKYEgoZB*GD=71~k{qOv1y%1L<%5Gwc4>!w=^J8~X2Y8akId)WVy|1&@Vum&5;KmIOBx5;>(roLHG zU#KrCOB=QpEOqQ7NMF0W;WfcR_4kybL9}4SwV{~dOT|&E+U4%5ZaG2~09f_r#^Wg) z?Xe5ww=nz+fqP~NgmM^>56xzHc&?sQ)|?;zwwCmGqm|rvR*Ck-DElgB9;h)+4`{*c z$?gtYt|6@Tx(YZmE4rsi1V^1=HYP08)t1|`VpH((kREnDZ)5>*_-#r{-;ElC1N-Ga zW^4F)rP)ua&|(f3Jn0#(Kk1$8yPK)&*|=QbyHCnv6Zeaw;d0@n$;nI$JjNS7vB}r8 z3;pV5`9#sTkh_KOp)tCs0Djl6c;){8@N63*|1 z3Y&UZlaN0Ze<5T2l~>n(UlbC^)xdgC{nyxG%m|T@&k0^$F}iZdzPy-d87+ywe zY+Ag?aAkR;xAg_eqZ>D|cynkv=;d?!v0ROkw}C_sLQhARMhlr#{>UU*{1_hMRv@iA zU}-=_p?q9k23EsYcRyzkD};mM*Pqikd`PZ7U0xS@T+&aZ7K|P%3}L=Jlod)CDVeZ~ z*MIMp`8iv$2!sXTg^zN5of_O28n+O?^vMduo4l+_8~(nki?C{)3#xamcv-*g5HlDdLSl)*R(Hn=nl_o7NPNT>Qg;F)G*Lg zs^ivFsJl=G1r!2xS*Cw6$WgZ7Vvv-_$^W=o%FzdrR?m0TXvIxFu3|Aee#p{$bdOIp zP;p{ry0o_b@DFU;z`VFFM6jn?7yoAN=w&7q@*hxLQH?#!w81s^Ay+EQt?BA!=|u}^ zb6%IJNXhqLr~TA3?h&||R|VL?J+o%(%j=;WZlkJw=+`#xlIpybdWR4WK&j%Y21CEg z7D4)4?4`xW2;U*TC&lZfzkE4mS~w)-m7<>wkDjL09SR!D`g8jEo}h-%)4H+0MN$fG z`krX*#`JH3m#yoeg2F~$2)3uK%Cfx*IR4Hh%-ahUcTD;5dyFj3k4$_?a>Puh{nF1j zVXMsjZczinbJ+Yv^hY*-b30has0tnqd26B9Q>pGu&nJO3(g9*O{$PNvHJ$I7ca#0a zlfs9$NyxqjKA=MvogG@QBYjKG4x_YuX(-9)BS3#`9}$MUB+F^sDiDhGywMXfpi(Gw zIwd@8-C~{!(js05?nO~EpKr*`Sk#&6W7hhG(#i+;>^9i}UR?WSxT zu?yPM=8muV&^v8!QL&3eSG8PpD8!7{9M*16(<2?0>j`OsTe`7x)zZ;jOEV%&<#=Z) z!#Dw|W*trTx*U!UNqfEQLS!ej(=K)N8rE58f6|!%uAtDa*wQNY{5~a47I8c4{z1bj z-eHw)dCzRwLW;Guih8wNvWe7CciqDM4MW;py!#wN?y;NA6CRA{M3HjnU#davZ?8%< zmK6K?Xre}4#kmi+G`2;D%}o-!td5UTY0A;N^~?6$ccO3PZ*Sv|xaXu%n}T5OZF}{u zvw5c$&M2&0X{o|ycP6AUl>DHpa(jRs-cY3GgvlN~ySjV{GLbNgxjL#@-Bh0$_1kYL zIJ1voJDB7=^=sZCYq~OV7?t)rZK-WS(hK?94OGtq`FMm51zBhc?K*FHLyK_O-gDOvLTrzbIaS^p|WbqI9*?v*$8BDJu3+3{E^3S#`QebTC|OIs{D< zwrPiQx_Gj|PxdhGd%vgmJ)4}*6U2YKHvhv`TJgHYoQ4K@z872l)w8up$U?syWNDkpC z?F*r>w7;T$8io_oesPzfsm->2mxwE;4x|3P(QJWX)YFkcE!Zd*m&%4qB=#l1dkMvn zXWcR{Dv~m4#FGY7C1ROiMkA!{Mm2v;2N_n&qZ*+gu7*9Eq&7q~z0ufR*O~*4%*VkS z?~{rr%{eEgTpiNoRB0#-A_04(M;Fb@zqJa7FQ-$D(AB~v)iPBhrCap}&PQ0ncZ^Q; zR6yPCqcoL-cOLJx7iCL2{V?*|-OrhL_vvec5vrc!|0(XvquJW~etSA-RaG5TZB@rZ zTZ)z%N>Odm8fuKx5IUhkVvHaXZPBV8bV5y8cK zti}|}`EtaB*{Gl3Ci`^h0V7o$z4qnn-OkXIyPZy7N>6ksQf6mv6Nm zW8>tqS-!T)TH_*fI$69lr(Srt?eVSAV5 zZ4E)kLUOt|qny#)PkM03LZZcVg#**CfUxR4tW$39Hk&%2HsZtd7wqqlqsj=O95bQ{ z{tdX`Lx8$-MNJ&+()?BAokCA?9wX0~c#opbc(_x>w*p>Bf;zIX`O?`ruTsU;`qg2F z#`4M+%ARR;O9V8Cg5*gTQqZm!EAq`#cKU(_K4U+rW(0&gkuU!g&FY%81iMP$gI?=2KGY+IGD}w48x{N^^S4iRR0{QhY47$`a9L09rXPMM{I5^- zupU2dYWXW~^i0m(Se3>$Z7^t@ZKA9m?I%#cfUzECgPKkv+x|woRo#vC_tyzvTBW6P z?07g!Dyn4n--yw10BPS0Fz;?!A1>G>xWY%z|Dg%`KZlS0HCFwPkC5*!nsIEkx538J zGJST|m$uIJqJyheKx6?1uw~2O#~qf^TFA-X^v92XBd$-Dw6SBfr`orPT^{-iVJ^&3 zjKnNb2N8bD3zL1r0=)|G(;l)M1cFU^-o0lKYUEEK1WcJydVbD(#mf8pnXVIbAd~Y3 zWb;MKwxe$BO2N%=hUPAkQMH_0H8DC%<3Of;{oZ^d_O{4vdAhapVtDo4_=|Z8OrYQ< zK&}T`+fSI?r6*NHAt1(s{U3JIQ)z3{^&(ZM{@JR`3s=`4m=2;v95sNW0!1=R-ydL- zu=)8jqn#5U7kLtCOX2W}8AC73EW11COZXMPW`7EB*RXeqyM@tYpam1QbS)`SvOjhD zi|JQ;H6>W*p{2O$i+L8cG$s}{u4zIP1CAWXP3|F-F9fv%;wUVY+P}ICD3@6HL?yZF zo}Qq!JB=R8Ow0Sw5>S~b*^HPBBWNXv;#sq6-Vdm#V2(&n5Yt;^L3wh8jgV|fJ$?H( z(^L(W7npCc&N_ zFYLk57AKsFoKiecZ;MwcC~3b%9E@0Xvj{Z_vK65WGPskv)vK-}On&q1lht9Egk~yi zb!_)$EA@C9VEDIOnJ~Q+sRW^1)J8AW9$ScqAi6=Uw%g}&2KnoQZMWR6R-DL=#McBd z)y*R98F`EcgeQlYb`#IiWW^2WrDwiBc`0iBJjKf21>?07_T`QAr!njL)>`|jPHb!Av$22@6IzsG~hoXZAc7wYA^u_CM z_Sz!zUW0d9#Vg2oXroXt5>0+E<@5_xv?xCXw!+hdd1yo5#lGPwe*M5$Q-rafS)a4| zyM3tR*oS60uxXE>q^LT-?XFU zJ3B%0bLN$yLVa^>304ST80Z$NG3|+RoySjDW$O$^W`69!VUK^ZRTK#y*c!krd*`8c zK{Gc8x-=hc0;`_ydvs`5VCE5ximybAQADDmzotuN+}31HF~o%i9m(4!vZKnn1bywY zL(0eW4u0KZ(f2x!KP3@m-}mc1P@u4oM|P3qJ}(qJ&#OM7+zC&dTNfms^C>wxkw^6~ zj++9(jLuV=EvLGV{l2TZ42sLS zG`inra>ZH)4nH@w+*|-Cm$ujN@)}5C%lrKk6(7{nl3RA~wY@kxUWzY=wD>ZUys59!+yzyMg;nR#>-gN%;Kr7?csfaKI>?kB zttx%Rv(A)FIh~$*7oz)2fn^4~||=oH?S z8e+^ez@kd;F{C(_5LasUS+(qKZGYZ+QJBQjHM#oA2aww>47{}!$en1tw;XU=AudMR z1et;}B|z>xW8+^a=QWgDgXJvsO;s(ZT~6ffk7?x~+L!~Xp2zd|p!hu9v_#*kkY8be z6>_{6LV9KOTwbPAf5HG$r9yf$2EX2w4Xdg@dq!Cq>36?`=wJP_?`4I4f7G+uv+ufm zxHzi-BVP#AO>#Bru*9d_^@N=zMqXY-VB+56j}O?sP3AAVW|cWsnIIcont z{o5krtzDfhn$sn55GJ_6ueh6)pNvwiv*oh)hxk3@96Tiy+m@)MJknq;_>}#XuxvH<6)VYv-S^A{VwVy zXn$0d!{H$=J?EV^JXxfvZlR=UHujZGvNrfTC4=s+XFZfegTZ6YmL$M-wt)gMf^)ue zf3r6u;88}x&ZF~J$Lpk=GRIbg=EFjl6E5VgPV--B*DT2*$$1FSZF_M`&S*g0UaDlg zsH-aosioN8RHkgJHafdm>5nk6ekWSC*JMMYj?O0JLZt3UPgabnGZ!En`HI>-^b92! zuhiYivdlRxLtBCN=&<@-txDBbqA`gtbqc66H|P`0uEt@>R%d%Q79 zc(d}@^0o&cgd7^ZR8Gt(SL}n1DOU!*V$J1fL|;-wbF7fzK3YetS4V9POv_X++xEqIB}(lPV;lr$V@W>QPfpMQEo$7}EZ=IM z>p)s~s?#5Ln_VG`3IG(YxYHv~e#V%3?+Ks0d>`VL^TOBa`8G=f4;2_{An&A!oUcGj z2jo9s0~h+*DGH^i6J7RY-suFOf@^pmZ}zKOaUDh3FJ`l+mh5lb7j>`7Y9|}y@&sJ@ zDt^_zrd$b^?)^f#+lgz~`Cr5LVxzNK2>hzJV zeE=;epk*ZXn++)x+*>iUcOtfWE;?v1lk+b>?VeODd3-U6yVbFX(A3{55>V}CY}B2^ zJ@7tdz{AcH(W%RUUMn?y*=(c3iw;SVRLFEXXrAQgLH!QB8RxP169hhu+}sLpS2L|h z*P7h*^67T2n`>bPPyyPwEnNEA+$DuWh8^S6LELRkDBpzpHKk3pB9DeldCmV6 z>8I@rcB$hAujCJ}G zD-c`ePh>4AlkOT10$L2`fcEs}0M?LEAA4fFCV8bR=(xpK(GmHA#19PLPob$L?_Lo* zXVc=M=?^I9R;$(E+dk5jFn_IA9SFwHeO@1(@LB|VTS#9&ZGjlN?vZjis4@B2*O~~a z;I=ng-(C9GzUQ~*TYm=w_d|a-D>MIrX63)d<=xq$8hWy!{NaQ-z0lbx%xtgE`bzIh zrAqG@0`1=8jbDt2l`mdZEZB}A&-Q=e(){^vPR~8B;>TfTmmWE&43H8MCcJcK4I$`> zWw`L8#J`h8k`>)i`YOK(@(khYJ$KII8kX4#7qkFdG|2+k#W;`q6vcOoAKx}@msiDK zN}gMiQtoWm7|coSA+y`)js>$KYu3Ho$ptqjphq;4)SgU|cv+#E)t+*bzEy4rAf(!V zZm=+`AS41XYiglTM$K2NqLT>z=HSgeQva$eGxPsC_Mj z$fkA`e%@@|{(RV>-?i7&=1V~PdTSVQ{MbT8mV@cR=#Z(xMaS`H{Mdmz26YS44gfDo zf-*ZYK0A?j9gG$(~5XiQA2Q~tB+b#@{xFktE zvhM9{p8R8j1?juXU+5h0HjcW<%+toT`z|AcxfQ6Fm%#cvE-aNZ78vWQ4Wg~9lcf=h zmrA_O@7b%Jww@ZVE>Aeny`xlyOHp~fc+uG7B-Wc7A_?v71;`fubQCRheBoU=+^?b; z37*uI%5P-7rdR0BM&rUM|GHOOOpBbu;6oOULgCl7IlSyK-q%Mht$hs6xnjBj^r?<*7*qK0wT z?!0pIOZgqQHoQ=mRUcjc=+J}O8@~=y=s)A>ec1O7sp_Y(BH=dEj8fzNih1T}Nq6}t z*Q?C{gH<9~;kt~V3G5yU!8AF4rU$|Oh0QUJ$Pt{ylr93VI)fjo3{U{;&*>)E{cv`$ zf5k+|$;X&)RHCD%3Ys^3j|b`!U(7|hW&;jgCp=rdDGCCfA#~l8Ri`UZiUap3%CTNr zeLgzP67p*>ENe448ATAa9a)X*%|AI-^u4Op@o7Kb!Ukeuw2Ts<2=DL9$z126uBuip zRoAh2AN12!Xue*B8O?9S2fQ5r6;o6B*0i>hZ!2M?!T2?VyG=Gr@qpA?6I&e|Zx`tY z+@>1kzrunXDBY7O^dm?Y8^8pzyT<{IIXE$pM1A^8ORw4g;!kCI)I8e;Ak%n>9$yLM zG&AZ6_EUF{jQl0`iZ?t5!cNpMqWFBd7da$fUNOq&sM%HUh<~(d=Fn%&y3oi3V2oy zw`kBt?P^QzeRZt5k6 zx=Hn8J=2UslRZ#eY9BoR1i-AE82U4iHarH3RUK2QHrr`6RT+C=w*GhUaL0g;g7go7 z{s~*}ZOkNxyk&n6EY*Img3Pw~Re>R?NHAU;{;u2qC~bMwjmqy4stHa7INRna=lpt^ zQ=!wqIzE-V0=g41VvEkAJ9U_0>C5FfOg^|aaja^3o;73;@nki+#a4QFIsKEa>cfpw zRi~s|ck{Om3SHB1P&oyn?oL=#K-{UQzEt2!T+J8FDtFtnK1CultOYIN&;82DoNSZJ!{wY&>I(52mGL@bQTca@(v z@cfE^w3^;e5uh2GVBjgl{3JUQJ(QLG6y1Y()~rVcpcieOI|+7qBMB+fqD~KtTG2Bg zez}DpfDSlHHB9mz!Px+8tN&t+@LJKq@9t-g?Zl|SCVM0VbFrM+D&{;DntBp)$taGK z!vPH+R)2eENE+pA6fD<+CZK#tHyjTANe$u$Z)>xhg7JimXZz3&HX1csuGw{Vm?5*A z_x=f+Tb&$CCZK+23)`@Hfo&>osf&s)HS%7`w4VvJ$j?{>u6+yf0#KFp42JxS4r&Ww zR7XvIx~~3~kyZ+$jyrkPP#BQ>cG`hbns{gc2K0ytQQETDE+b7dWh%C$dB0-QOqa$j_vYJ(B zuIY{4UbD`jukBKAONIdNh<~Ntk4GXuOP@KL={-0ZSu9uRnh>;YN4b7nvm3nld-u6T zA(O-I)XSLLsh;~}IJzi(1kiA9YkM~;f?Ea{vnP;bBit{6WM%A~1tb1o?wx*dQUooa`G^op_dcy=O)@(3U ziCjCDm>H48bcyze#uEE%z z<`~22GN;AC+6x9PA^lEXB77&b8UZ%Na>Ve|xgzgTclhc^IL~fsvYlD_J9=!c>-{Q< z+9Fv1ZUXem5KBUo0x+BNYd5w~;Td}8GUVO*bo2IFZe7)zq8`q;E@B`!Q%R#?52*6g zG^%kRGe;S2-Ngd)f?lxx-u^=}i-q9gphouw;myE)GB(yOdEW!$E|2 zq}Yb~r1b|MS@?K%AtX}^wc5p-@I`FU4PhceH^;`&H$YFH>ZP!#am?i4WBerO>*wguJA_ejD zMjA!e*O99L=1i@#pxo6T&~D6VOl{L61`NKurqsY_@jBsjmTwgZC?Q&8HhTd~4VPT}@Yin2d3Ak7Io+G+ULM9fy{YhP3;# zA$p?kJ+kKY`m+~k;=J-6kD!Qh};JqkPXJp!sMP*-XpAe6N8(JYP&~E z9=ugnakzmFSPx9}j%&~+U#hRZUX51mcX?tb4meQX-pXz1!rSt4`;*Oa9?Ub{wNZdK zVbMpX4@tINBx4tzQXBY9zxgRi+5opGLIs>z7@n>fvBb;tqh z`epB5|Ky=Xcbup|o4>WMfH?U16G(D{7un;!x<7Av+z$;`I$r3stpV|Q?Tqw+Myw6V z)_w!5qx8}x$JJ{~b}>#Pk9Q?a7(&KPifCY6j6MW|ZQ`)}8&St@?AYp;wz6RzW%EwK z*$QvZJJly0vM>|bS2MZ%G+)fnrZTH_fc%VR!PX`WOXT0ab!E9*6v{V#QG@CyaophP zE>qM7G~x1nG_VR{paXuH^(I)eJ(|vM#o5dVRRQx=whWPQf9QYwv0@0zD|1kE2sn$F z%UfAQ=B*P~x_%W&o6Vh{xo<}kc67F#+`!17?zlQ1XpG1CKz&_1s1t+0(07_`6AWHnV2I)$>5ah|X#J_$^2v?>Q&-BFyT zLDP4B$!(;0xag{F{mLyv`_LAs8ve$+Dlr*`+tiE2lu&qbO`3-d^Nc}z{=jB)2_EZc(8}y$KZ$ZIc3`SP!O5Baebi2M%K1= zIbHOmkCevkJggyNj-JoM_&LKaAaBwbRYgulRkPaIkZBkLxi0kgMmbhFk_YMdoFJK~ zq}Adx16ej`asadFa{G?pva^4sae?V#0aACa$Q-Fm1dSbA%o{ULpt`8mqEZ?k-p0orfEOLvKt zE7;^F4b3_1XlwZ=(vz!{p(i`wM?aZP{5>5-kYuveCXNS>x8Ge~ldAH@KWZ0lK@Zao zuXVRrt%Q&*w1Q^CoiNLikkEBRFsCCMe)dr!Fxf;vMkM*~Lr)ep%z4FLPCth0P!!&k zc-GrSJNc+FZehe|e#3*6Ke!Y<_zS${-Cva}U_H@0wK5(P7W_jwG`)_i*CmVOdx`4I zWZcpXb$n6E{q{q7t=*w=iO0|At_m?s__%&W3bXo12!px4O*zHe=-u9%q=>7~eom6x zpE~9?MYV(=A>j0XQS)fRP1Yf+@z$(OQX)_>*?-^qB5|FnwEh{f5*@n{&$>-E^;-75 z>a|`2r_KBju~`S+Z9N;?HDRVvX`-XOz^S`Ix&{K*#vlU)M|ToKJGR>dyXawKrR`@X{e~Z4f{n&iGe!1y`-foxj|+_ZDyUv z8f%j~jJ^G6+N z*V7|-h##UN^TtcQw6*@K^aza#J9^0MVPtqw1TZV2QuV^Qz)h-P_+YxI_3MgUOVU>* zwR1iqrT$F|KNfNx;14Inh(B;^1aPxH4)qyZ9{8cXOMzbuQaS};Acw(oOG#DTCFU~U zcpBZ~-AEgDM1;s3kK{~$gCkFrdu>pi$|jg_vBBiQRaXs-y$UCx%x~G(3n>WAoP`#A zR3NB*O{oO4Lv0j67iF&5F~zYq!+Y~(J^L}T-{5b+CrI6uo(UFJIIo;p@W;ar;dK1P z5@)A6mB5MtL@?7^wTW3yb1@*+4z@WQgTD&6i0wGHs8V1qBRz~T#Z>d-^IX#h&^ z&Y(O&7tc=lhy#8FKUl2Q0ZARxb(?nTsnlG(+>`rZSstScfaH5!*YtxM|iL${` zu1xI)t#9BKNMPO6Gy$OU%4xnm!Ns|tbJ%%BubcmB@htkW-qk5pKG$AnqdZt=LF1SW zlxL>p(~K1`Xt zyZ#f4d8U>9RCIWk>P^|V`3I7C`IgcZS6rw&=p!)+0o?`?Ir2!u?lDEx&cdm@xU%Qxchjh!tsVvas6f0X!Z8|jtS8QvwU(b#U{=UZnf9hjs1>1e69 zn^hzN2reQrsEsnr5|~d2-I(0Q*!Tuvt@-a7ytma>y`r~J9L&MKI%S3ST;IOc<~NCs z;u{ zsjUqb0?n5wy$T)nyx-D5g&AO$2Wu2!WN97FYIT^Me!dt~u^Ty6f`Sx0Lnp{ZdbLak zb9eNH1rX&yc$j4kC`@8!MpVxO#zI-S2iAVHRT%gIhYD0jj#IAWg5q`YFO*YryUj=| zVP;kNVtl5&*T!19bx>zk?<1Fc=D@p>o=LE+a(iOCT>Kl?s-xGG(lKP#%&ve_c+W^` zw%iriEbehYP-%bu;-1V3cv0U}@s6k|aMyMMUFeR6c6?X$fZG>_<5=r`-Aue~jQ!mh zKx;5cSwsEUdD9`^zxrDMU+4TRasrVXu!@4brtOp2MM6oi?IbM2gn>8yn3#2+p$l5W zAB1*4`U42Vpp0z7Z{L6lfM*?nct4bip^20@Ikdcl`k{){yZ6Dj%Q37?cDqaEn|0 zTgs@DclC~-&ik=CIi0!YZm0WO2VEcc`#q@`J2o5zsBJZm3V`k;4PYWPMNT4Ig=s1g z)%)9{%XigKL|GrEzDACXcFgYkf!1WG^cwtQdb?0IRHgg#9dh4Gjlfuq^DkwVyA?$g zxmI%)e$}e@Qus(|Kxsx25-*E%u6(!N4tJG5lhJP3u{xh1i z^P6?x!y$jXQ@xce`KUzy zpOy^B4AjFh!_tH8W*W>aDFvnOWfx#-T|+DuIT#iU49S{59XfkD+;ZsL)xTFCPbde5 zfD<#0t(_vpLDKtIuC6ReY+DI)Yr6Q0#hI^Mq_sJ0@?VeC6!qt<(^lSAdawMhqjf$D zp!(yDLucl0Dpuy)LZi`6NXX{a<-iIvcE*a9mxt&DyIUkUW6J4h~VvsYV3PP8q1S`(w$qH8D{->j?)M| zO#1#_G(~WlUknxCdJulsg8M@xE zgBVwx=tCAcKU@=b;PO%ZzMOOYl_j@ffMsN|C}XN3zz!p;9OOojcOT2_e}mbf;icC! z<-tI0qu;(g(n7_c3I^=?y%+dN@Qs40T_CK_v##Hje2+ANWbXH8vWlM2Z%;05%)9g? zwjHccj#zBR)gQo=Hdj`U7__>@Qa@Vykn)sD1dh&6m)sbXQB1(i!~;(~PjuN{h3zuq zD6@Pk<0EbbbGSH1Ipu;;pc2tIAPhMw@pN-0m!22nL7tX$YW(&6poHI*j?Cv~t&nt# z%L9CofG99x-7sF%9^sm;ZA&o`H5tHO_$_6a( zYJ*)1#U&rR_PtVliTc6W5~Lt=Baymkzg-qg-$NrTj-lsV)_;x*>#WTR)9zOvS$A5# zygoO6Q)iuh7R~-9HJ>tOUWU(=t8jm-L;-|w%q!Q@wMbvYu73yNqmG&01QIOvZ#xjk zWn+&N>nC_m3B>qxo!G}y_ExeI-Nk?;&+)mPvmRbwiBO+iPAHBO_2F0ERs;0`!CCt- zD3LZ@+T=Yz)FeK%9ZXURg%nNI3Lb-2J3!sYZ_6~A|MBT;ws}fV(`c^fhaU5oBjA-e zchN-mH+`cM5@D>_{I7^_2yuCwZchSNh;2?V!Q*2Xjl?9e<9mmZ&swNP$&L{pkN;Z84IUWK1W1{x z7SqH=Ag3r1xjQ;C+J0=pN>Tt}ju`_t%r_Ukk@Mc`n!B2Y0_kDyULn5MOo6!8j)Sd~ z%V{}Z5Z~|~k<=Y>zk21zBEt?P7LrSixDF`CGkX+@>%5G>F_OF|OnMB+Lzg~alb|W5w72JXx@yIxV1j;v z(2ElZ7yW0mgjybi?oGLzy<}~~bh37%j*sfpm1XHeSVLFJ3AyFpyt%xW>O!Me?*@YK zKePcoo-O0IK;MRC^`t=p=nni9p~wa`{=U|cT@v2aP@XZ?zj2;{OdUK_{ZDsC_RE)xd z(UNCHdd%_i6WWgmd=*QtWewYN-J}G^A+q!RNt`hwVLtl&?*-_(n^f%H=+Nz~LoUuG z_nrila+I9>f>9_C1j4lk4h(4U@=w}dGT#wrt`S<3R?Hi9t8<)C6lwk?G}f|Z%Wu1G zUe~wTE4WD?`7r?h&zJO*QGMZmPjJ!S|6c~>|EwqZAI<;2#UK9l3-WV6UMS}@^Hw|uGCtSVr6$i1PQ@CxVyW%ySuvu_e+9vvEc3&-2DOx?(XjH?(EGQ^47m!?N;r- zTRT-0Gt8XnK7Gz~KYjW+gviT^!NFj`KtMpiNr($8LO^`Lg@AY)0QDC97tq{$Jn*kK zj*4P}5M{$(_P`hK%>-lwARsCuVIK`3!Pn4V#WfruAU=2e`FYc0_tO{xVzEI&SU}lL z_izc?3)y7(<0)Axq(JDGe0hKTR?Ql5s>5i);`jD>vkm=#aQzC(#F^p~I+c*X$#-yKd2ha}Ho`!j^NtKM#Yix6EC^Dxosh*Qk&O&; zJB~c=xRYWPOh|zB`FjY?_`bmZyFeiHkNZKF%~pGzZhn2P3ZWYdhp z+K27GZ_MNnG%r+`;+)Lopnq<%V@%Erw^sm2<4%h&{?bR zdIDMK|H|T53K&()DXMJcAaRY7L1Z5zecD0ak+UNaxp)Sm=GV*si&6x+3UNg8liWpE zuENeIH52HZ5QO@@KM0;vA1E71Q8Z?h>qzm{=>ZtXtU_pvWWT5ROvQ?H4ykLY)VkdN zf=WjK27jNJ`^B{0j*0Qw!$LuGXe?!$O6MrQFmc(8Bx`(PpMXdYDWs*_LW;|_DHGJ4 zy@P_k4@1ye!y#zi@2!qi74db#%N4aH!$@t%`cnn4oogr2n^dY7b{XLI=yn;Em6WPS zvjV-br|g`PHO{JVdzv0=JcDjR4Ld}-A|$mG*V>RGZXGfXk=*^gMTeNxz7TARYdj0( z+*edyG7Z&A*uz&sF!PA9WBw_C^mj;4-fpXm00 zDtuaw_O^SQ(v&aP-oSjpYH@F!Dp;2mUo&P+JI7rnKY44feqknyiAy!?!^cZU=+gm{ zH*QujoJVS~YONcKFl9^L?}E^w?pIb$;QpQ<6b1-N2y1pZlv4@UmR-q>6R~U^W`Vw# z72_khv8vBh{w1RJ;QfrkS#rvFjxf_&43XNAd^1Y!ZZr^IWX>_YC4(AIj}35QjV$XM z&~wS8_Q_XR?hSVuFVl#si%DZKDG%ln%<%WT=+~Ai%s14yMronXIi$L{lRtv}Yv<%F zkAQey@^VI6ik5<}R{Ow{&Jh|rpO{*J*wh*_w^(AogV;6GuX@ z15;Vt5*WXUWGIfCPb6%HVTIqRSkY}ay1|e7poxt~REzNGXMZ#r)7-p;^!()+Lyy$? zL?CH@xg`u}_p_E`k6ho%b}L6f{WUy_OgJ|0RV^?P+IlP5@Mr<21cQYtzZ)}uTctBm z9aGw#S%by0Zo(QEp21k(U^?p5l$NWzS24(Ph0R>M3-O{WUv248@h5GAk)UyH6Y5=yJTIHj%9y)v9gLz7L%LG3>xc zZl`TPFze=@*6ElUcKwy?M;<+yK7itv~q>mF0vGF9e=Mh zWIr7$ejhcQJ&4`vTQ;|{hU}Li1|u4(NSe^Ce7}XRlhi!AD!PsBIADtk>H;d07WJSH zWyTAC$N8tSc26o(jz{C$(jPP>h<1Ij6a1cHk}a_fUgGf$brCPB_tWpu+Q+3#PPMU) zZ~L(tzk1@xA?i*Mqf#V_6inrT)-;6)%DmGv%4O{Rt2;FeI!l!YV_F5I9XStj!_@{y z*e3Os4GBbSsx)Y+SE4s`QP3e*9M( z6v$kzjuL)7Gv$WOgvNx0F;$q0m%g|-!W?^Gw^FCghXiZTIoJ?PF&-1U(ZcMx6;vUzrI#*SjOeM^Xd+4Teh}BR-X2hql;m%-Oh$fTH zo1kRU(n#VE+85SE8Yda14}2yo8xptCYYI|lG&N0;@^4bKM1Bpr?6B?7G*51;i5P18 z3yn`)-OqH34l4auJbPpt`K|Grx1BEsl%@|eJA7X_FsJD zj=Vvod=EukX!jXc0FJr|vwp1jAN7KWGzL!hh#xv;Coj>_(PoPPcXH8R^q>P5`hn&% zA+C`1yS8$tpAErwe8@+!?v*&M;(3Wucxn>8k{YH$CRA_ggY2RsbuH@6NS-ZM8Uf_1 zbsD=C`0G!_DJU40|E#A?e_kpHGop|boTq?6HgFr)q$i4^9-`mNnb+Zt3Z!-lVak_F;ETD!UGx8n!&ipH@v~k@;jH7+hb^8(c5qBoAM z+G3xlkY?J?+IBTBUa*BX;U-}Fi;JkHTdyk04ErW;AG(UZM%`mVF5D>F)wjmYH@82E zgGSJupOm-iJP%Q}P5fDZl8h6O-gT+8eJQ7`H73EO=$B#ar%U~VW5EY|O1oFMYqyNI zUc*+=XB$nN;)kas7B-%zJH7OJQeNW_+9zj{r)vftJ4cnv4Ld_IbIKzZ0xtwaoP^8H z_L2qYIc-bVmgU*1ua#fSt5WoI#O)T5gSspv!i9b=qRc6T5l_xfmmqOs{ZMsfc_?p4 zRYNMIVc4k#a=d8}5mHX$9Of#EkjnEx-`b=ggk(tpmhfgHOR{|QR}^tsztA&;Gkcap zEF{mWEN4PTL}IJfKiaX(uBFj5&$2S9;tjl>G8zlW zGA+>gL@BCkBc7DdrEAqSzcn@M3e#6gXcU-7?G;a=<>ID70h}g_$PFbSGYffCDYaop zL4WGif9w0XSv`_Y5SxwEd#yUeKQ``s{jaGYQdPbSNflFWk39769$b{G*rPtQqB!F6 zXr#TY1euE|_te=dpie{;b�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℘!7M`=w4oo!yw_)D|_eh$qGH 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%0A*TmH(Or07yve?4@ zF@yTwdt+9PoI-mYpC9y}CHcAFf0#x6f4%y0x*RY+k)nUER+;%dlXO{FP_w6%a{IHt z4651u^RGXF9qS=$-MzidUh(X3@2%sT8UNai%=5kw&#H2p{f?TbcP;K$W>~#u=l93W zI#t8mC=&$OUyR=y!#$e|yI)QV-kTk2aJPgm4RkDrH9~qX1Ix5EAkpN5o%>M@bD>}f z)kmA5G+Ff6)1zVXeBOkca=!PuBK+0=Q->@kZLNAN)%}GZ;E58t@tqS;866PJ4auvi zks#hlNEyd4sp=ECDm<@^jYzU&uKO+ZNJ;R`Hwc1BQ~rd<{c(!D-K!H-fINkxbHWrUwHv32w`2Qx=`k2BOo7OCud^%b>n}o z{-+QAdyNCQHV_eHg|qW3tsVT1LZ0J}=e%I<|K_B49ZK-~V~XJPpvVJFY*%je$>bL?}W>vs{qTLVXoVriwX*=nGtZzppOf~h1EKz1VL?c3}hRDf1jj{Uug zdgYyAY1EZlzHy{<2<+)AQ_Z!&dQ#%QJ^>g(L4F%H&8D*X10sleKnQr&|98aq>reR+ zJpe5{3cCeQsSW%-`)H2av47K$WG_AE2mvkoO9OcKgA z%vj2rW$f!L7>s#7^S#e`p5O1B=l=c9{XF*{&Kz@Q=5u|nxvuy7wOtcqYOKe5T<|y> z8yl~I{!KGBwnIZ~Y=@0Gj{(md?~q;u9uE1L>HWi2*(=QYhuu}jNQaHBI)QuN@hI>= zm$&`{KQ^`#t*pO89bO+E0Z(4^zh&*O>+9m^5BKsEzYq6tVN+62Qh+F^KoqZwD}o`) zY7j;B%bJV%Y;5+Y4Q}e(4}`6bb9}jU>)pm?yM7wa9W$=e!e`kZoY6^faB6!Y-f}LT zXDR7y^Q~ts->UBXzU6<9EAONHWqG;C?@4w?U!)$o$#q4?@!KJTNS|g3HfTZv5wu&N zp`yG!MrWeuHMg_lEd~c^&n&jJT&w?FOO-OXGW}o`mn2ofcBD+o;OGVGO9oede!F5| zrgO~FAnCYL)t#jKiQyJW1ra>uNmAz?IiyOJi2qk#dQJ6fAtUrVYC31RW)e~No6u!p zh}lbC`eapU-Lp&V-Wpibrq6L1SXG0$Pti*+)Z;+; z2RGA(Y|KpsAKQX&nvMs~#1UV9KW%vRtu`^1G_8~L$YFKVqi%f2XCe8$u6K##Mqj>7 z@MfENLO=$oX_GH>BQjrW!z+}MHCU`oEAihHH&CkDdg%}$Zy$=#)m;gQ4 zF*svwW$pNqs;0TSkiQy`B&E5Rd~J36%#au!`k7JrwGCYtNNcp)s;Jx>j2Xl*MZLvS!>#!I2%k3DmT)Jp;dmF ze%;RzzE(ev9%yyBkmd?$a?oZj=t1vvRem0NnBR)+mU*w7gW&Rhifww9neJ=@-D%+? zXfGh3^Xm8#%Lgv0TVtoXoyFe92ip`}EJ~hhJ8yH9;qtZ731XcEx)xLJI#EG33w#*B+H%;pOVM z-zOv#loO_`hT`DrbE^%@mHB)IK9hA5UA@HH5P?pQ256^m(0Wrq=JrcaaIV(py5PN} zn#+Q(a~%#phGNG~>R#46i&8kS$`-ZKNr^LyH+^v7s<8RzDby?U6Sr4*5ese$W z;{1(`;J@JBmUmvw@Vo!g%qUHuj;*j;}FMLiiAk) zeB!IUm6>rK9*f_6z385fw{_4bL8nsn=(?elMIF zTL1b?*PC6ZTK2;b=@2N4TsxuL3q7--FV`Z3VeZeHzkd^y`^x_$m=Yq6H))QSDyhrm zELUb;|B4+J7;|2oS9#8PoqGL3C&^Kqs=>n(Av%4rz;o#k$UhV9mHfVkVHqLU^7dOM z)8;PwP?7&EQQ&o&6b&C%ci{%RX~b!hk%*wz4EA3q`OfzknkYp0*|{sDO7~;=bO(I+ z(&#))a-9u?4A-8LGl*2II`N!MkZ=Bn!iIR0#gA6){jYb;O_!x3E;=zUG8@+#mTM>D z3f_hBPaBGS)2>%|<-gG^`eE^Hv~^{=4n@KsIW-({11WxK!Cx?K_0fDzfat2064>yh zWYwlA(F(UaxMkL}5Z->U!!I@zgP2)9#5A=?S zev2CCh@Vj0b9B?3OpvvP zgUu8&)&duV=e~{JTHS6bSk-WauGf<|ts6PD>5Rb)>?BXS-Cb zqeW%I>);v)D$j%T=-4lOoegwT#ZlJ_&AhT{F`()Xk|K0pn#aX7_?r4XDD>)cgZKu@nLQc4Sr?tl7F+enCffB_&4GlL zi0%Mfp7Gn_m@5SR3%;6{dR#y8Uj%wYcGKS4SA6rq?((R4rd{CF%TL4B&T;i=St?J5 zRwNTNm6`%^3W?I>8?b4=5^7b?5k5`tExUm6LG(v&A7QfdxA~V3wpuSQU3KA?9`Q+& z7K)B|x^N2S-EwsBTHTnLM|Ioz)e_0`_Q9J=${70H&!jXPOV@0l+d-vs=>g4@9Ow8J z)lqkIE&6QoAn@6J=)BO+@@GfarFy({PgyUwVi-K9l)(HH4PKY_lNUyvvKl!{qeW3} zpZCdK#R%(k4`Kg4ok1>{?8Koz@Zy}(Vl?WBf7aV(Lr{~yKV}7o?hO{G*9H;T(qb1I zA-t2-33ku^6hhV;DWyP%^6K_}gl3}X19f;;SeE-o14REV{zA6%%L-Z(dYJ|$%?#8o z*>?s+`iFi?(7M?sl&%RwHY|<4Zro5Kq^BFrCXnAapFzl&IHR{3?;aj?{z@Y`Gw+!| zL_omnoW&GDlTb*7A!O^1D<(y3i3>^Z4QM6?W@pWg#`)gR3Zr@a*mS{F^AO22@~S~{ zkLi~6Vzv9%)!M<3?eTP2mRBXw`xNyvT6*)wVYcVzZ_>Bod@Ds=V(0nl zkJ@K969f(OjxI*d{9)!c6JvwX*Tw=(`NEpq1O4dy70G1?sOSM2v{<}+}$qFDTI8RR8A z()-c}U*UK7<`U)dfH9wrLU_tDj=6^`*3<{SjblTIp$9T{o5uu^g5jLP;BR`O$VbPY z|7PJCNWDPkxEGE=uQc zyN=8Q%T?1VAsz8mWdr$lJt|~>rvti{$=p5IGYBYdAb6oU1{Z~w{DakH7VagZJ@wOT zE(>&i>r^<`8VzPs97vgwT0g7M+M_l(M!P5=cu3Gd@C=OS=xyg)y7-{VA04r5r&`_E zQw5p}>%J+7@aZdJa<5lzap>^LbxMa-n{>X+^_ojAru$%@CLXJ?LUGpmlxrLv?8E!m zpFGAZ-b5HLsdNY>)sH^oO*9M8<+rYPa{U<-q++BSkxf;b2%NEP`ZhKZw4M`H_$4|M zR0nkIA`fB}F{A%WpR-ioYITPw{DL;IZ@%>rCE}uP#O;;zZJu0`ZcOB>2~%vYb7%bC z)088vL6=NLQyzo}B-QvgbO>e=T95MZtBuLHLx$>&J91zH`^U8rIpoP6@x{vFRC?;X z@#ty_ZsFHQbiqZQavl@KySI)UF%CU!_n!Y37aE%A3qbImLAm_5(=h9UzN2y5&qh7e zc1@4+rT3Zt&E;ED?Ef_FSH}^w+fsXBf&?OeGxr(@)Grz~Rp5p5xcKtL29x-rX7?nm zH;>bTUKZqAnXW}S8WMy_c2Hm(1l@;=Ed;~mv*Oc>=4l>~wSsVu*=_K=+SaWDisrqr zY3l*noq*7l#NkxrFF(fh?JHf^qch3;e7@EHju-qt3IEE zO(N#Ne@06Qr3V(*tPlu){=CaVy=frh{LbBPnN|gx0Gc;$vL|$y*HFK4y{4vcz2TuN zt}hm2)*xqv;~cba>NlSponPNw#$vV%)i+L>rtnU~o#fARJ{tSv*|0szN5D6kuEl%| ziRa@JMxX*qY*05II>8#rxqW^9V-#OI)8E6ur)f)@Xdb=0n@PPBP}iU|p}7s|H5!fc z`ydnl;tf`Bfsn?f}nGO1exay-VQ{Rwnoo+?uz|v`WgL)oDQ#mLvt2Q2uY>q5uED z#ZJGOvFc^@w6gv&Y8SR)m*q60Cg5d6#SC>K7P6?1C4urzL{0?2gd^@?ZyEbG+0qL zF#=H8TH4A7)f}hf zXazkBDp5ZGrp$73Z(_R?=#!F#??Qx;vu|hCT#_q+N-Hx6lnjl`W3bt&F+cq3&Lio) zz4@?%dH;lD67tHn#w6YNj(zfOt368v2&LwWS?sNRGU?5=MT)&9(NU9nwLS|KO| zUI|l(qk4W_wG7!MVnjpoXa{@i*k*c<;5#B7uLyXHZwtsEpOg0}om%HrSfSRp>rVJ}4pn0yI>VKbL7L%`(0QNo4^lWGFTygf#KM*byJeB&(L{rjy6 zVCWP6+3FKOt2YUGT51*kcc(ugv<3nQFGL9Y;0Kd|CIFj%hAe%^2j>6huxxR*Srh4+ zSBZSXLSD`OCk$id34kukSc=4b{DZpqka2&a(IP`=a;JUiC@4^eR%Xw*Quy}c{7#$p zPr1bjV2ADV%a)kv3R%N>uK!_igC%ko$RsWd8Yi!HLNKAMvY~VYwOnC-WPjP7386ut zTh$4L$4HY*#$*RrA8gto5@7o`mehPoMqNsn~wh6XWEHcd^{=NQtI-a?YPdSFlV!!`mHM(d*xv3Q&c0d_K z2d%y9OeIS&#%kYd21>stYQNi_=Eq$xd|Tt2`*CMFwzx)bJYRSr*R0olul!T*9ljU$ zm|uQgtO)#N2s87j{quNHs{+wOjT`UtqYbdGq*NbB(=&YM4oHshueNS|&PU?5#U;5McBo7Sj;Zz# z=7l0=5qu7HJbyl%pwo4wZslWF5nC<52aCWbHw5x7d5QO(-e3ADCn?Il&fmQ8vZQeW zkRYv?I|pnmQ#%Bexuq6H zQ5yuvROSSSpt|4_fIEo5#R^`wpB&52&+R((BfnUIQ&3aTg?s}W!)D}+HwEq89y`)a z>14(wZ9(Mk=57DsBGmxjQ4KWi{lx^$#xXjO}U9Dc@ zW3pwC2qfb=i)6_rhR0rB(-^*&R)7J|?_kC+>qgjyu7kmY6^&~iKts%L>Jx7I%^5tq zyxAdUvR;qt^bxP`eZu{I<=T_f*VEF#E>K~^|)_kW7Oj3iEzOH;UyaL_$D;{nG zfL9Ugmef5KRuy!PLR>(XL#0j&oQ@Uci#y7!Z9O8mnJ3ekC?hcONCPbG(}vef`!(z+ z)W6Z!`d-o1?cMEDJXn>fJO@+otM%Y{4dTlmr}Tv1ih?gb$5wqm?nl$4G$uvOLz(o& zka#o%>zVfONeQ*{)O9B95g7^7XdSS1Z&Ogv8sXexw?lmxgUbB&Wn#F`biV!Q zY;9-8l)mK<((8v#UR(CzOKDGzPRK;>%%b~a0g;`G4vTvg{V)?|zc(^$*7|A8w<}IH zZ_M@SLsi)3H-m}RW$J(jPB$~0!+61G)8Y8GraisWs%YX=lQ8NR4F+*Jt))!pqk^w& zcS+A^ebVVFjei?0?PHSGe`@KL$f(DNYMsoqffFj-D4)ZK+|beIM?7NA)6>4nx0XC7 zDK)lTG<@fQ0_tSlWdVt~mZpV^%35eXhY#6%rDN0YPuzp$bn2RYGB{=3qAQ>|`;S6B zusci3u+0rxt|ua3W6YUJ(=QV1FOR7YO@-Nt0qu_3EEGj^5{W8W)4j$8u-HQqrH7p2^_E=~lStnflzR+@48Yr+LCLzO^$8#C?us5)k@W7P!7EHA( zTfep>yf?iqaaxv9X)`cYzVS9Kig3QNrW;3X4xb;kd3Py)n@m@eBz$X=lGH?EbEbAL zCkOV)o%CNu=$Qp1OIJAoOs0Y*O!$W-@0lZPb17j#;5T4};QAvb>x3$A3uEU_t;=hm zHip5P<7QX{)r_+|_yU{GJC_I12zZsT=H`!n^pWsX#`Cc8SF6=mmwiEUqIVXpz%Rhh zdGOVs!>Y`P@5#A{u~wJMiEKAa|1y>6gkz}AvAR8=2V@K_BXB+fybmoA`&qmuWJ1?$ z#-_Ls^Y&R26y=7=*l_o~^__o?qa}*7k&x^#i`OA!HZx7P0lvc<>f65U3b*R=X@Nb`SIq-TT4$r5_x1&dPy$V3 zCcu1>Z`*ej=b5E5F|H9R^f}F`7SNLE{$5JK!QIkt$0O``xYTloJGBZ}jX^)|Y@Fx& z7ALy{6-lpxFT*z_+tZILK%1+chny_;YnY`zO|{E)@$ znvF4%KW>d-z9s1-8#jp)jGTM$~m_`$}906Km_&qOdAO2lHA_hG7lGF6QouU6QXdsMOQCJJ~7bvx#$yz`rSyY zfiumru_!VA!hKSg#FvwBl;8t1*Vvvp>BO2>GqGTSJ4a1UP_Pij-)lD?l%r?(;VMU*;QG;pt*Ohr8Dsw@=bvt z13}SaLtG9cHSobh9KxpKfJV7U!5mPF&pu}YyrKaAWwTwVEM)6X@$N5^Py$*>QIj@c zK8OQ^E7U1*0}tTMe_6%f&9qIa>#BK9F!|RYltF}A#DbawGgsVE`KXklM{TAwaoVf+4!7&8zBfM3Mm zS3uDOGpkxplmQ0fWC3E4)-O5coS;Q$9B!Ob83dRE2^}sT<<9b-mhxidOIbLhn12+- zB6%#y+hd)v9u}q&vP)H5o^5R$j|!D!tjqvjs0n?B0(_8aCMeC(j{F8tk}r8AtoEX{ zG*D&2KvAbFii&y?RN=FfGFV!x@R$L9~MH(Sr0CTQ2TVt00Iu-%{u79?HfLfa{=AG0c)JfK8vh%yKoiM#ldo!fQC@!O})6AJ!7MD0mhL_qHw(dXkMLJ--+&- ze@MTb6Dpno)EGeGB`F>E^h7K?8WxLWpMSz!tNoqVlqPj8Q##n;lEP_W7%(AL{}wow zR(rG$;8tIoZdz2Z*gSN<6?z}gvMr9^Wyb^Faqcb+8K`d!9^%pBbdDzD!?Is~{sy$PGQN-n-NA=XD=bzUDZPV}`#qBd zu*;-lhZk66f?$GT-LK{Ln4d|5INLITXzv`SQmWRx88;{d7}8)SU)YXrW`b2SIdzbw z<2N19uqO1!_OnR9Z8xT*0juu`0LLq90Vq);V(>7H3#SG;s#<#Ln>vUgOjR-yFe_Q?UiHyabkWR4lqx{@~MXqV8_} zd$vUv^#~94UJlW~_YgqvAx7Ry0WA-cTmbwhS0LVbaLK?==ygyzwIar?eou_KDF#=EVRnAVl(GuQYJHEyH)D1V z0EoDaaQr$FDE^uj2JrkMB?iz3?>DW7tUtx4O2u`&;47zINA^F3Ouv#eOL(0-1vo18 zO+S8y{8$LDzS`oFAE$b!NiOQeh0;fy$rtah+0Qjq%xli84|2mcBA&1a5(xdX&{Ykz zuz5S-t?0#V6+_7{#JvJF<8>_pR9`f7>l3DsJoP;?I_a{E{0%9C8MUb+a)&5Xq6xMV z(2D>(a^o9Acg^sa=(PH34UwP(7&tIN(Q!bTF!SI=E4fpE-7WM9wvvpeO{qq$ zFX;xB6T#(rnW}#tCI8#=fYO{*V^rHi4aB2Z1aPUP94N-lwdQzps&HPp6HXC_o)3nh z6JX1q##k_waB~F0tNsk4`nI=ERxEdTUo#F#XD5hIzVaq~6ke2Ssty*8wr$1*ho%V8 zUgD~;zddoZ%OGZ-EMHD%6pmIiKl(S-3peR}?sr%*Bym30N=w8DGT3Hn5`?bwq(DUE z{I3vEyID(T^WH3$khx6CdLT zmB~+(Z`}A!y-@KwttgU|A=VY}efMd3b^F4zO5DLNReh2l&eG7#9!~qAjjKZM#@19< z?6ATw@dn%!YiUB)e6ZLDQ1W~X$r@eL9=c-#lI)a9Z2zqXUG7j)#2L)0*e5UsC_}Ph z3o1C+!BuiU1)Gt=QTXY=_@jGXRJiD?HQSrMgArS;yzH~ zqal_^Km6x9v;hOg*@A!Zk$pJg&u#6B;b$2WCGzd_!3<5z_#8sRGN-c!wiR4d0spSL zL@R98Cj0x3fUKqQYF$Zk^r6Fqf*~wMckgV#fi^2t0$+VL$XXr5= zBo~!GygjBHK$jW}wJI!o4@l#UjFM6S?BM$M494j;zrc9W;Q@Rw=yG^UDYpOs^$HExz~Z1kgW?9 z+})Dn>hUyIdThcAP?z%I@Q;9{Y6ZY=*FB;>s{ctK;egf6>gUWo`7}3f1l_S~pBLo#GVk=9sFPn6#K=t|-t!c~Cu^?l50_q6aXjisXdVEPjD;vNm zjS!&Ww+|d5|M7r9J4$Vu+>XAarjzq379X*?MTh)dz;0#4IrGjXr!7>dtOg`H4{#%{ zFI}r_BzO92lJ_wEp}vi7a+2%7=3^=1L|3ZKc|?lQY&5^55Mbi}y@9;&7|1rTgn)km zY{%4#>pQsz?;D)W>my*Njnl7QXc@LU>&^|^Ti!Mx`C_bC1te}cgvfSX2PPgY*) ze_XN96Nh}IkEhe}Oqc5mH1@}3x8Vvz>xP~_#iJduKD;6gj zhzD0eqgLTNlGhYdFdUd7-=_pGt)&zW`IG4n9=}V83f`%#G*{oO7wy&%DGT+E@An>} znB+H%JSjs|XyhzOv}9}>b$l6Zgmsjfze^foMTbgy2cx~S%7J@#-ZBxLsWnvOjUe6a@Hk-_m%_cb!_DK!Lu^@#nlJW z*)?N)c}Z2gSJV$dye)oG14&k+XD&3=YmPVmG=#dn;=BI$`4Z4uO_qHu4A&nyE~F-S zQYg0zxUBwy{b$!RoZ}Y*9fv@uBh<9z#djD)k+~@6VHQC#N6CNr8*w({!?F=7)!ZNw z7PwU!J5HGJfYmt1l`IjhSb<9t3Y|1h)a+DJw)X7k0fIz}(vd0;go8?{v8Oz4b7 z-C|@8f3!~F9W-wdb~8SI#k2S}yREv}g%844@f!mXfoB^RI~CS%rG5L=VQ?KiAvt|z zYiA}wOnLwFds?R+mTt@IN0@J|@;L|7(}s_^-G>kCwhgLi9osqwWGlD+-dRqGb}PTo z?&8K;r#G}0Hq)MT=euU|NlL^Un9od<$v?ZJf$Gu4vPSH^*$$4%+G`S!OeiR^!j?Br zhQ^=j8UTg96KmR&&WY!8fX5)lM1^ zs8~ToJX4zZ8~^VzTT7j9DF}6^C@r4#_bcyG{jNTrom@Ep=S23OG_$5 zez2i?I~5=MC_A3bovoY#B58uikZ!CQRkZ1_l?bxH*v#vn<{sm{)p>zawp<_YO+JVxiG}V=QR|b7od1DXijgeN235D>sbn~r5Pbk72 z?7;#&pZ)*wik$K=Mh9D8=9hV@&E6ZjkozMva2(KfojVJJM3?@~I%-Az`qL|}+j5Hf zMU3dd`7s@s2UQGM7`RA@&uipQG1&AK=uqK-x5oR?pGP~M@17cU9tAR1UO}EJyV^?< zVE{#AAWs;N`*$88UNC-BBO&$=UNML5{9=*3VjNinTLk&$9{kHh|BxeJnl2)1B3=}|8L-_|1`mDd^%Y9PO+C)rd2TVdt-1bA#jsd zl_FP{-g2u`}mz(t1kC2)9Llo7Eu1^rZrO3V)lCbH;BQ;s(JA6 zYGWu#;N0%}$Pp8h|027Kxc*AA|v%?@<5|hv3>OGVankDGHEEeb z0h39S`{H2x^P+GE6k4>(n5f!kg7Qm|wZCGVkOgALrbD4mL|kAddW^uE>)_60P|Q4k zR7QGnb)^mCf)uoRa<|!9HQr>rQFO1tbCeqyn&17;N;0H#GFXW2gCCAXNZ9Si;dA2c zl2J{sR}qk2f%RrF8@rQxxKloqJrlgC9CRNwr<^0+K{eLxT1f|$ zCy4n!7OB05-Deb~e=Mq=y6OB=4#WiP!z)J4+I#u(v!s9e;%0Opm!HCd-)cjDcZdGc zpkzhKa+E+Bv(XH4*`*W{n9NS0WRY4(OV}^x1lXvvU1+^b{3H-I8)?U=6~voa<&UXP zx^+K@Rw`xATH9frt@IeVq9jBzg)=AKPr%>4d~`XRee~z(3#7Uw18v`AioG6cgkyGV zjz}&&EO@KB6l=fl6cp1t4_!tFPRA_r*JX703b|M5JS@hn&i!0x#gH1V;>^xLV~0JU z>VzMP(_c=EUW)>98MLU^$!{j5XVui{aLE%VpwM&I4_!|*f^LlRw#peDI=7N_r284g zcMl9yDS;1pVh9h zB)#`Qp3;;Gg-qV;Jm9+N+NaBsYxqxZIQNGxM&h54AqNeE8{vX`4YyOzWYk**vF>y>Rst z4~x%~B^SwkyYW(-_uhqn_St-3iWI8h%69Qq84SFLCU}g!mpZTn9mm zkI>#x)I*0;`445V3BVWp4~S?&jH5lxaU!(VrsJ0IA?36}VPKd2?HC1=38o^=Et=-| z1y}@NecR98Y+RM#zd**&GsrVFO6s~bMaT+015ez2kZ?QFil^UuQvoZGmp4Y1)4rmi zdrz^THKyg{ium<=$KVe0{PMyQtFtey%<*OE1X{F5zng;loqQc#eSA?ea4*AK(w&=S z%PEy+9qMWme)Yhx`S)TP{bKWNLJG^TW1W#O#gy^oeVIhX9KQ(h%*lzx+HuHGmsggL zkHNcW&pj^MsVYaMv*G8!cX@j5<*J|b`P@Eu(JGNP#aUUE*W%uwW>eQNRDN2ah9 zj(yiy23|}fGm@WOao6Ti#a=!Gqo0(~=V-N=X*w;1$v#Q%Q~R=T5ySnlr6^t3xe=gQ zwZ%M@m|bO2+nxRy7tV^%iy3kuD?zN~*B|(H=w*p{(?2mY*~|0U?n=;JBH;r*#o63M zgn?$h@jbeCEZ*M(Y~mtvL%oLWrPnucW>oZO>ql zjvRmb5q8_uYT<3RZw5g`Bel2*8Ha-luGw!Vw&hS4%R6?%8K)OCEX0RqmJ+Eq+e+4P zp?RN#t=eYJEe}UOzsDyvhArVc8X(m0x<4}TK=0jvtt^cxqJ4vDcAZIwyqLJbj6QN(ubBCv7cmSIvObTHrhH@H*PSX%}Lnj`y_Rxpqdx zZ~jbC)K4G8PsZW3b84#?&5gfDWmG9FuJI&6Ys(EUBAkjTmXgG6PP517PU&|6xg)K| zmtXlxSCn^AuOIT8Rg3ceeQeZ8a8v};`8#Zj zMN>tgOZY&aL;7B2HqYh%{a$5p8N<1Qrt~ZxfGQ~H|sBIx5e`v2|wo4OU$B*I_^lerE*(6Y?Y77 zY0&D+o4RfCf?Fp_n78x{X1?H#;A_#R`w3@EGJ2Lb#=d_`RnW~2XVwc1HGa^DDidg) zZa!y!LgB(~D``o*L63>9%Gs+1gqvz$-IgRN-Xs6XX|1goW`0h(7xOPukRFxnxR0v5 zb&i?Tzg~Ak#Zha>RipJ)gK^G!+5z%f{?QW5K2@^UrCG(zI-z0?bY%JP_hG+HTpWd5 zA)npHA>!X>3U)HebDWWI5!ir!$O&!A7Xy|pWiRXje9X|cD$Z4d^6++R6eOFeU&kyi zmj(`(37)in3_`G$iQM82VQ#nYjMWJBMJ3>q_Pd~XN89;tc9dxsB;#Fw7au$YRpTkW z8eZM1WXC+s9Gc??>v*uTR&9TYT8Dpg?+_87-X>dP6*G7^kkdpZXm>%pgZGTgp z+*gCq45L@S-ZwiDd_k@0S@ZKo;)Y|fZ_FzDkc*HJ1!-@hL5~Y=hZKB57dP%Z=lpbr zJ*I!8d2FEJZ_|Ub6tAWA)FtQ#K@sX(U22@0PeE60K+(T%hrlX_pY{3Q?f1H%a)FxN zyL|@!xIS2;ab2$t;WVm<*}m&M8O#-CE>bz%Va-vkwImrvq3vG7qSPg8g_aetHscZ) zTH|dxB01fnu10N;``~u{08zPQv&Zm^o!o~WPm9j2;y<52fWq@f4>%dI0>qc&LOtzt zdbNRMAJH`pFq+1RRO8>GT~mO~a;J;J&%)#@tAIX4^>fFhf~6N`+Vh6(<%PeINmASABQ7(bMd50^7L zFBRQ-n9)1GyZ_tMeB@n6jXr4kV}fSWRs6HOu?$hn^4{z^5M|7qm?yDyzG@sIp4)qa z|FEu15FL&6m_?R2!8^KgQ6Gnn|TnXSz-=T;bZ*U`lOPH+BkN8~=vw-@Uhg+ode2 zpzNEaiy>5*e>={)a&h9am4n7=jX4T$@@G@sJ^{mBR{TlcUOV(*j6XGYa&R^}mV$AY zG@328_%&)iCmv3Z#}%6+yk8cc)$MwwR;_1k*u;Bt4XQX zhK4dv(P|{IlI4c=q{UT>gYKC+ot9me=Yrx3MaY`oHnMM=T(1_akst2Qe_woK{R-h! z$MsI{lSUoj(Bzs*n+qg;y!bqLI&jVo{Cw^uTt~l+HuiA) zyO*AS;iRl9sMN;#ACE`-LbyRHH+X&f-(au!>17ydk>H}*_nCHg!Md4`mWZr%|_KK`vl zXo0 z%fO>Pzs&8sU4z8iqB8+djm6p%9pSa&p=VSHx1YlyAdMW8g4B;chktDgE&H5k3k_5} zJGm(F8g-tZtx+C0{CSqzK|Dc?{AMHy$E8*n@dDB2km?Av3Dql-<(UER>pI zkNNw}7D-CgGC_M@&#j;AFhNyo84C)wCE6qSB10n{c{b8xgTUF|DMD6b+}t=}T|x3N zkjz>f$mr%{^UJvznBbUphCJWGH_@r2T!8nPdHQJRO|0&q=;%Ds~0v(_+tM zpyB(^<;EH|=dcsct30vATpEkTijJemU40PpmN^=U36rmAX1FDONYGsUW$*0{8SK$X z7!)VxPJglLK%OQ}2P#taMHZwcd*4HV$<;bpg)8#Q^i%5On9uez7WD0oRHUiOJMH#3 z*CDQ-VAtF_XFbP4Eqg?3mR_yepE6`yOk21xk69Kt#R>HE3UkMlJDIc{Mw*v7?}doTtV*!}QGEwmq2@2IT~^m-_+wjTKAC3Gxif zQ=AHYROk3lmB&^~^Ysaygj&(_Xqj%coE9H zo|ty{mGA1%`?@4}eY}!uPBlu{2|q0&@zo8ec(|U->HJ^-od+Yb{gi9<`X&P=Lq`4d zszjDRlwXpx1{=|S50UsIe9JdS0{<79QFF9gl0?2j^vSM=(-sEjmsvtl970Bc3OFiV zMFwxKazVpb7B@7GFoO_h;|8XGwVe4>K zTb-am68JK6yolo<>8b3GT4q6XSD( zq`lYnO@FO~cAR{*4U-0X3Kpu#c6IDpp;zCn_s^~aOZ(m2shjUQ@HuUo+5vkmso(fp zlzF)q~Oz80O+D)cPMA>u;fO zm;0P*INqP8o`0?O7YpZbqrYOswpX{h=t)v>!v&n>niXAq8w76Bu-Fnb&j_2!mW2}@ zN|oy20~B{wdU@-sIxFh{JP53jbR#?%w<7kc3feFBAw*H_GuX16c_npRBX<+{YAX4zQ_D_PWc~Jr4OV~1Q zR6hx|nUxOwuz;JHW}_5Oh8IBJ{i=F?W{SS2SwaZ+gaRlv;F;N|47@m1C4Ghl|*!oprI zRX+$TMZ3E-uAz1om)3@!PO6pn18B)mi}`0z=2@`8t{l7{ym) zE%#An^YZeu@8?u?UseZ)l0> zSM7LDvY*t$Y7ST1HZy+1n&g!|Za)>O##*mQPB!F2W|o48q2yp~diT%$pGQXBzEk-{ zk+*2AU&YE)wWgx|3Te!>utsNX$e>6OZZ@Ng=tJ81$V1GmVp?OY&>U6JEg{M;^Aw9> zM!q)49#s1--5|yF?u^$}VhS^Ksq#G9fZuxYR^!*fnOC{>9z*ukkTu-8vDT|qHQVal z1AM63!xnnid}N)STu(yhh2^#FD3vn4oS@|eGD2-~JCGKst7g)5u=Q!w(&}J3z}YxW zLo~P)QgLoS6uEB+f3;C4ckLa4U{G8W32t2P##lbBsQR(6Ux?W*_je-wo~PkZnmsuB z!muS1NsL_lA(?PjgRUiXU(7=#3VFn$LlwlNch_jr8|L2@mx1g9!hn1Va6&Am#&(6m zZ8fPjl30!LfQE%!F`T1FBsjcN!}vNQ);Nj_7E}7m>>J%P_0*L>o$36@VjhS{g7kR& zA>GV$;r-I3Yan~|o-)4Tq$uUedh9M)6y&uMPWXDs9_&p!R&St%D_Dfu9P*zt4|@Vq zbm}8xg$gE`eB)fq6S5mPP;)Em6YoCV?xN3Etlrx~Uf4L8KB8twgX1c0FP*PD_x)h< zOB2L#o<^X0B0QtxEbkzLS0P=64Xviiq}PB|;eX&`6N$K9DLm;}2a$d{KKNY)98Tls z)5@uIpE<4ovsIkG9=;XYvjmWW&lEXJQ4cABA?F2o!BYo>4}D*}0p04`%wV;bolH;b zo@&@s#_i&G#t$w-=NsY$r;f{AV>AwY0W$IuUr4-`c6BxOLEHHyEnURz+~JD1#^qzj z%C4z2@Qem+KQ1ebN;t+d3x8RN9<5G)87y>4bImO^Oh#;S^HP4?RD&GoK?M=jwuQ%S z)|J?jZ>MXTiP|^L9r*Jp6WYOZZ|w!o&XIT};7iXmGkH)vhiOw7TtEP#P0wB{vrc+8 z_85J~aLs_Gh^s1<#0e*8;tJws-U`+1FCY7*tmT86{U7a|=~t5LzlR%aRC8OqG{@YQ zw#{NYk3eNvW=LiZIZ$Sn;I!2oK!wuO2F1!*6LLtL$XRm0AyZURRKy__O+!)~62$=& z5AEN1b6%gb&RJ)z-+%C|&;7i(zW4q8Tq|ELNWI=`+L;#kaXt6kp+CSu{YItp7esxX ziQ_wK2R8=eI~;iS5B%s`$R`ejRhTU09oWLRlhsYT~- zClt+YjYa%M9(BN}l#O1q1RF@oOz+1+);JdlmGrwk6MB*stK}Dp=Jxhh;(gS0>25>u zOuv=v9BZGi;5gN|?^MSNx#v(29#UGYRx!SINnv---wmXrVs(2M=XYN#d8Q;rDTX^> z%il=|jE+SnW5!M(^O_%=RNu9B860k?H}O^`F`&4mm3<-|%Xyd1wH}<`<517 zf2vEuk`daQDR&!%$dv2$Syt1SJwP5jgBI5He*0W|cqc*E++UVh!+N5AbBFq~!#DPq z_fi#Td&V|zO>R~!Akb;Io+Ks2?VXfYMqQ@h%ys{eAU526F2eLX4>xo(kGQVRbxURU zx4s(gcNy@7rWug?x)0!_B2_+MWzD+#CxKkN}p3k{;te?aO4(vG_(F9oo!N{AJskwX#k}I&gz5Si3esdzt zL*~(`?#2#B(Sbq=n;c8}#Z*v_jiTper;QgT>x$0a*^KDj8#y!5;MJpa zFJk>4C{c1jQr}bDC}l6A;{~_!yBcBDc91TD+997jXDyp{&orr0|%a7e_ z$}>~4CSY*F($obx+)Z~7prQR8=uy=>t<8?zN`Ail4zMurdirT~9Cmc7h<=6MWkda* z5{N9+?tH~X*E3RcK=CqMf->^N)96#!!H~{KX>pWPZsQEo!$5aoob2A+*!pvF_0xu+ zKD(^DfBCbPa5GdtmGkX=)RTaS828DyC$@BjB|a`;`YtEMl&-&U>!Bs|Lh?tJ9t8>k zr^Z%{x37YCVq@e@w(7dForCo-|M-t!eY?zkpW!SCcQxVb*K1=^a$Tj(nvX0g<>f9_ zP&Ce-Sg~5hWbJ~Ybsn9DbN|_pdi5{b{a@rK5nf_Y+ea80F?Xzip4*mJ?#L?!d-Hmx zFkXPNAI3Zk+J!tn?o)^pl`_BDsDb*frCXRxuD7w@CJq#sK9a!AE zT!FiKN)i$uxMiDCEZSP~E^0)(#;kl@l=QS4K@0f}^2%~WQAZzNo#H_GehAs=%LVh- zbxR!F(*B_%Gv>#j(9ZSVAJZ2e{TJ*B?fhg*^K`y{11wYd9EP8zl-~!Y70yvQNZzk&e-}IEzc)+(JY~}KqL@9e}*!S|4G^A$2+V8XE z7}+-_9E|eSkuQUF6L~Rx>_*WVN zuLQO+*7A_Ks(EbWvn>WmI=zp^wsJTB%ALRRb$L^C=?1&KaEjubIeUs%0mE(wZ%^g8 z-+-zP!E)p6fs*oQ?pLi5x2+#p<=Z~IKPlYThlKv1(o6?XC&z}4Hd0gkZq#Q-b1J6a zYRkmB!-B}w()XOS@VZrJrGYhGk$DQH7*mYxLivdhciPuuZwrgsr6Wb z2H_9GBi%}lk3CGZAbW9G)&Np{>@56+?vyqG#BZVpZIHCmh<_#{V)5OcrUOLGg%dLViJWuxxZS&(3cP`&%do&jY zd!3xe?WD#a`*WJ=P03|eB<<;N99y*i*5@e?VIAXqXSvt|MmP&7-6S*m>MV=S84^*h z^E!34xfWS7kTRci=O+k?KZebkDHBd+5$H#QoD1eRUnE^w%<$7gQg_GOQyKy@SB^^@ z1?zL53>PWz7)~4Xiy{!e_*$q-(J~?Hjx9I8Yw2@#!3DLF-Kux?fpNONrC)F6AlbM- z*6@wn731%>oJF7k=f}VdMCzLu?rgu=#yS>YG1B~>9Kk~7T(=rRk`V=Lut_+2%b03k zf?g6YEJADPgq!2kZkWH58KBCP)PR$^4#^V}K^1uNoeC5Rifj$NA+?ZcbcR)>>?Ih> zAnMn8-_QrRz&o_yo*Hx$$H3AK1Qpa+TNn6c@}tWNJ*H@@+R<}G_OHw-ey3hCWLfY! zMXN-Fu|>69nMO-WEFaxU!x&7MrjU9}ZThA`q7r@cHa-3+@yU>+3EDb z(9$#R>K7K=i3f2R8~u1bQzlMa-6LGyl4SLXl`Om2pmpI%V8-TVGr>HjDaT8eKXvgv z9esLG7UTvTpfRXV+uVpplRYqU*3cu1X#?U&LCdrd5%9?&Lf6y0a8)Iok%Q2iE{Z z+>(g7$u_*=ADQTY75?V^Ir?7v{S@O=*0!q0|8A{R-~`rv!YkJ%Nv@GVe4>eYJnz)L#zG(gGZwKL@>}Yk0MywP z)PX)urQG?SX){}5gbNaKe@(ZBbiRDIB-%tQM*sa|dd6@pY{ip3%R0ATK^#jvQA^ap z&9fZV{$cjDSkHwFj_@qcsJk}=lBoWb(U>Jse9J1@K0kHkH;<fN$Jw0w zASV)MblG}>KJQ+I#^>B`dT$+D#6rJPix%$PNQwS2{K)gMpv#F+zLS#fTI(D3IE%-OcN&<9gk8}aJpu28SA1W(%ld!O+75rMw>>6tctCNv;2ztobuL3Z zatcuM@C!pj@UXqq$xXNYl@8bcpsoboCkc{(nrhBJAAUMjyOSiNx^M1GsTC-@2g>ZZ zrLUljyF}dQ(sy;S>cdEn>{`n9a^60QsrPWA@PglVB0rGJYLp{~oJi$vtW^l#M(?OQ zo_oQ&aMAi$qN2O3`{f+TWVelR#;$uM{Lhznv5r!*ZPM72qc0vS2o{dTnxv(;c7G&< z3*#Cgm|l*8ukoFa?=J~6rnR<2Bj4bDbV#M$Z%bOUBZ%?sU`Wy2j!30ZxQgX=eR`N;k4IUCE27=Db}*5is?qtG?W7yJspl ziU#mLUzPwKlhc&@p!T-sR78@R+UyQhU`t3?O-RUKiq8k3_h8)KgARQsqN^zy@aC6U z6F%gh&tqMkquWCzyDXPKHE9&6q6k`=9cQB7#(Wc?YWClKW&#C=Xbisoy$kv;x!eDt z%k6*M4f?-+&-dT(nEv})|DC|U6Zrp;z`NE5q{?yHL!Ck@!HSsI<$+PCx>hyyEyjL? z*e5hp`C`FIB$EhNt*tLPaU<@}(xwGXRy*r>t}J3W4)XSO?ZIZwRWRq^vB=(zL#;y)3w zV$=i2HTVB8u+PZTW%SjZcyzG%&8<|k=7e4io5C(TWPZBV;E$$D{RcnV0DPkyEz%X# z%;WWVrFm8IgMTt`^SFUnYM$Lg`wZJ6m@zTEp##VG26#KbuXn2&?qcV<(rkka>y5*z z;5jWX1ERethvM|5*aOi}HxF&)4`2GUvzc@`LE4HHxsu%6o7Ii((=MsaEs~ol@E*`0 zz)7$0kfID5njZyWe#S*=PFEeM$|Bnbu4gDAc;{&FsCwywx8wZ_Y!<7c6U!L)M%nO^ z#upq+k`+`39KXE7c4)o09cBTYYXOD z4rNp*4!oTIKH|I5Ge@;D^;&%nmL22FIdyk{f}Qcad)w{c1e_6E(fUpUJnb+-&_Rvh zdMD9`>GZeBnv!nZ+fdK;WavmC0po=;G)LBSH~Z&CZdGEPlqrZWS_d@o1QnN8)4#GAY<4V?NPB+iMks)4Q#Tbc~bI}2B-$a zyixz={T3Waow-$&*{oX8CszO1cS1iy>OTv7|@3={)` zlv1+^q-#|!oW*ZM+(LfU`-UXV7b=bj7WI8U zLm0y@N~8C-3T=JOx#1yl;i*d_1C=-)ocXIr&v>qma{&HQRR0+eChCkrmS-JS`)!~Q zfW;BY=Z}=m(wY8(09ag0#BLA0{1{Sog?(TU;souuw*#B-`mt7ENg*SIBsXo>BisDb zGnr)f(-YCpR&2qQ#YejinFmBnu2>Rmi+qgB?d19%gpe|siX$`OKS(--w)Pn&OU{X= z{k5kH_OXpVHaS!wT=vB|vLK&+~?^P<`BhkM`LXZZS69w#~xXR0(V&e#|or<_Eh&DQJ879%7_PMBJ~dc zPAl+1|7}&0yrZ^Ld_?6ebt=(r<2pFBn>=W3s>z$^Vz7ux-eT-Bxz29`aMd-<9EvkV z-;=VxsJMD|NcYP}(=iifWzwq8@*7+IqE+KC=!Y=5NL3DP0*w{~xUl)Ui-&+KJ+tkq z@x{q^&>JGjXli#6);+De_Kh0$`O?q6)O}Wtk`4mbG$Sc`?9;k3yrbFl=jQ zZc`)Xe%#+eOcHN}^;N1Nce;VG4u$jD?4WSjIK(Z>F=<(Y<20w#k&#z0qbM~x&QzG diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_service_principal1.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_service_principal1.png deleted file mode 100644 index 49dd06c1ab047d8845c9f8b6cea6722f91f5c40b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 93805 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 z
    0R?&sS*b@tNj%v{fIM@JGyZFQl=kht1L0^wZ@<~ocbWyGR@=p2^CDHN@4`ZIw z<2M{gs%xL|Y<2X!vG~xIjw!e+6R*A98*3g0tJF8LT?We)M;NQ7Oj}kT!%Vby!9O-T zs(Z0d#VXmB?gQ0nzpy&V&pZoY0ouy?H=zl8-Oi=YmtNPm;KJq`;?^>QQIBO9sW8UQ z@0@fYXP>u6Ty38f=bLykWHMv(2qc^%hbmR8uc?X7%6>%eWAeOP;P&w0T9((PCW~8B zt_yQr?8_?{Q}`vjknu=@ID^hE#g)%eCu6Es>>|>Q{q5Pj-i}vbS^bvgwfFp1jN*oR z1Bye$EwTdTweNS+WfP!b@~rjBTSL&lSLPE0h79-O^QIbmPcxoQc5V@)+7(CdLg`&PY_UqiDKhF> zgxz(;O|;jY#dz8;K~DN)17Ys*)~_&zHnU;irvSK27+!GZu!bLbRV1V zJNPVjO!Eq?o=@QiyTUTO<==!#i}U3I;UZrxr)V58r2Of2&5gobfM zJJ=NC(|H}YU&hw89M3VF8}bysNw3*GUmAmyD!6Zv89M*|!xA0jTuOoL`CBy@wuPN! zw)+hLz=VhlDTbi-l5G>S6Ero$5QDuM zuZ|ezjtv;sKZ$4>sgmv$(cE)!#*0}WB=v|}3sOhrU1b=@tu3AWTA7PsH6}3xfa+jL z*6{NgR%C4Wuf%Xk_e=3!8rs7Pb^Q2pSM-BbpyF|NO@~3ynD7!n(=(GV#~Ztr6`GX@ zpR2Z$hc`0^XbaS8P!=M`ppK>H7BE75L|+@ycqGPvqD?njSGuX})k*eK;UJRuplP%( zJ*R_u2wr==fhmHelT5U>q^dxz4G(^Mg(=F)x?#?^lTgYim_9_?^|)usoM*^Yi9u`c zM}A-M=3eZu6qHBN^k&A2BQ3T*Fz#UW*g3ZL)&R#AY7yYR-ox{eVyvdNhsUbl%$cPC zfm-SP3Ff8al4m)Q-&LP798eqtET9f4?EjI=C+p44^nf*1UsNF^d}bd#GB*JLAgqvZ zK*o;4>e=Jo-#jWu?QM*XJBS(#ci%@y-qZPb;ti}jSQaK=fDy1~DCV92Eo1TEqq4U4 z)UG#Cfu9&_HA(W#LqKhE>_xpCroG`6940!~1&V1(s(8uk;$!X4a0M9#+IUpC*&oql z#de!jGzp;ikiWhQd)xKX3-9fDsf)pbeJX%LqTi+{ZLOe%p&uXRvmgMddD*LXt-iAr zfZbDnPv`FRhB@SS*(*NnpRKqk{cILkF9w4@0iP%+EvUP%AM}&nhW%9kmuvO^P5b$O za;W}-Q~7B8)wce#Hm3LjB}w48`f=0$J=2A^EK1==;NyPGJ^Ytc7Uh5Cj|IpufbZV+ zC2(v{z;7$xJV5c;1Aw`}-+X?xAjb=J5eNi!*+Z1a&wy|P7_3@zUGGeupghHS5Ue=| zIZMc?(M)3fl7IKUPegUU&k=FI2tIpf0Bv{3C-v{a5isgtWkBDa=}V!3=h=m?1CP{L zV?EsrtDsKUeG=_)pmw=g(5I7FUEA7=^~5a{lFXoMV8WZ6U%qRmdMpPO%FfSGc6Rk& z!-{*W#Pc6mdtT7PLqm-4iehtC*L1hFb=39Kx?`%4b1~p_i^G_U{hrIIyk$Tr3>?+X zPPca^LvG)6b;TXa3~(pm(Ne1#>EkID(Ho?&$M(ndyKI>|^WXE`HWvdzSR>v5;rOI+ zxWMiC3b_eh5J1iv`jD_#pWSBq;o-7w2R{x~fB4}W^r)x;5C7c!T_Kxp_l<5c7ZdUI zo6`xz*hiN&cg@2ElKKUiq8r)S!xIl=o%@lU1Bp;l!HsLw_Eb%#UHSWpYvykId=XUy z2)4bEe9azbYTOeyZ;K$Q&A49eJ`~b+u#?iSRrR`Go=-VNMGBAe%ek@3hQ%&`JiAl0 zPZipp6`ZT1jC+4>fAce>MYfXmZ2BtL?sfT13OI5-BH}jEegwB`+#P#drQDm1Z~Bd8 zBO6PkM6E4>Y@NgOj#c5W8&Q$$-$P;(ED6=ub3$>`Y-MKQT!9JcTa+FuB2^9bCaSG= zWGNEn)@F`w)irMv5x~a(D4PP^bEb-&;JF*_rLoRrYXJ2`0Qw2Ru&O2aHX(2q@K6Omz@|95%E$* zQ~y{$NRC5egUMX`D$0EWDlX2-!g`AB*ix4H#9(4<7s5sFnJY(XH$Vh;ke1M|tuHF- z*S_>^@&lS{?gzK|V}5Rs$ zW4W@m$Z_Mi!YUE%gJ5s>vyQH1h!ZAO+{{LH&uYYv(aMWbXjzsvD(3g^h-osTNP~aQ z&|KU8-)!IjhqD#gn;$P#)UK8*l;R%_YSYov56lVum1^*D)Lh)we3ZpcW4cC7V|7vw zHl0q@Odz0~#QsYh4&-N<`?yV49#iupT9ltCtd*^vOx8liVJ1{xAoNU@BP7Q8&&y3n|22^cBX ziTPY9_wcFAzc#;4{O9zeRIsf=61P)d!|O{3Wc=}sB;~xL{Np|fN7p#{sjOa=OE|z# zGtvmLjr^y%2}SrV(E2gp2{e7u)PH?Zv$zpP`a>uxdTeAjwTiWM>vhHfhQhNcFgeLnrG{w_Wh~aER#L8!yM)C37rWps`AxX!Io#;{5M9nGrW(Vx94O^P@m=Zg zNDLo!mjMkSqpz2l=HoYUI7$e?rIsJ!Np<;QRCR|^haLxRc|b#pmP$`K=S+z4u$v$= zxO97W=jx_bOk<wY@jH-alXrrW)8( z6;D(TjVbH=Nq9joL{Y%WBPJD7*>}ScU#RSmBcS?s*Q0#o%XybCsFnE;znGJw(c@41 z%);1$vV9EZ-TDk!6OUKIt!$vVhvzXOJv&w{`DdF=h$aV%YWZ`QvS1ag`wAi6?w3T} z!t2>RwG~kH$h$zDvC>?W{^@nliQ+10liAYzpS#Ogug!a}erR=nWj;rmpO(ki%%zNt zkG4jR4O;I`xOyF`B)2Xr{8==3(mp-NP`Q(4`*U|wGoDgO4OydRQK@6i{rI9X%~R9Q!ePQyca=eqw%{MwyQjuUY%z z!V%5Ff==>jt*N!aWh90FAfPwJ^LMjHUkAN+Bvuw# zjvF_3Re$ysFAY8`7k@mtc=dLV3wI-Ot;vursrcRmuPd%}N%IUc0n0RwmLD{6Y;cql zfH`~AKz|ovOdjdJnDsz58lXM7za}3*x=Mi{gHa__I}_lF=eEMe(0hbKKm5{3#9|@n zm#6N{SrWR2wEBDlWt1DhsrU3}Up?}qg${2Vo;~67vApsR!}fYd7FFWfhj)7%XIm0j zt9=b0bgxuY>)N>mEC!<%;#{S|9t+h?;ZC?|_><`*zpmqUn_se468QovhjMbWV6jccF|jRSvrwi#AxDz+dl9HYbZH-AI37;=pE)UHEe3OXC!sO z&2!!iSxLSu^LH;ukhh#PjGOJds&$sJy9=P}I6-!BcYYXwSXbi|&+^QA9d4g9v5n*HmEP^v z!^dRp`8L?mbi8Ei?R=mI4>zKVF{WP%9rd3bQ%E|!V3QRsbk*SQ&^{X6xG*uqhvaL0 zx1EoO<)k_nrQQ@o3tk{HR~%Y61l|^W;PRr0A=Qn%_1ku>m`zN|DOxmCVArYN+GvP( zD4UM~C*s?mf>d>oVsZO8Fj5SX5E4Z_jgo%8(3|kI*NFFw zqCMW(k<$)t!fFBft-~8ME??FdZ84uU(5u@5E2<5rDl-H1%vQ*J@IK0BgEL(0`mQ2i zy-jSIH50Su@v2H6Hdv$GHNEzcVkz3Lk_&gie`I(vGh?Sm2d#E1bZ?#PWiG&^973Jb ziCfu+T#l6=LPAV~!={}|V1=FAah&wBqclZ^Gr^-*eb zg@CnFIILGnq#MrAlQ;Unlx!L|8nlI+qR!@od%`wfQ-pkCbLfrE%a3iyyUs}HUoT`^ zTe0C^$?r>G$-Eb zx+4bBBO$w+EYMg3URb2}`8Utly+y_Vs|m)n^yBFIxQ)rHWwJNhoF0OQSOtuw6lduK z^cKN_eiC=PA$S=H^5TJ&5?z3vLapALcVm3FR$F1t40A2|lbaw?pL_O`#W$a#?yBP; z?KQsDg4x*{!-}jn6kp4R8jma7f1Wc&xlx2_ZcVxRC082o4qf+wE@(*!*fV9B5OCQF z+hvUA&5PUY46#0sS_fWl=s3>d3wefG_gL|M8)J>}qw9?M*6Tp(!b{Gx{>S6`VfsOr zi9F^_8yFM8{{DCsAC}2~zP)%-mbB&p>xCq5ScAoX6eNb&nJmO+m@*k^zCMmxhIiwn zz-=imXhBIj1bv(et(^MyEp(ZZ(1wp892&1=m1lei`>)N==o#gcmXk)7(Mxou-DAqK zoEO$@>$PiTn55?U0u-WngP5ddB&k--+z(8eHk2#JJ8rslSBtiLQHirpaLQtxxyqit zTmKyZPPLc_01Ls&)1IVs7XNu|iq3uq)hpZo?G25M_LMyXL1oJzYf1Kpn!?_c(fGiZ z@1$oY_0A-4itDAIAvSNu9VVf0IhoAFNQR6NpNx)ce^KO=pGfexvv z;-t*VcVUZ+_DDP*H?^GHiGJS=XWsuEAqd~?3t{Y$&{CK`bT>@gNd4NfFT8#vR^7&b zn~yu?mb;0MyEbbP?X7xAB6)E;v_<%8W`o&1=LGqX242H-lR+-5A#KCd&sq?4$S?T* zdY|A_RE4wh8gjm;QCI8s6}Jcvk32xdYZ$qZykr+e?M}inY4&~YH1C{e>a73pde?F- z4&Gc)J-O=S>bm+7`3vNo_}jaL&NElgP!jLbe(nT+pqA&#!PJWR-G%4mHTP9X$be!$o_Y>&DC%de76@bLUrgnz&<+N@X!U_&1P{b?Uxzj!w65$+UG?1eTze&6~82ZHV<+}=jYbep42HCVw3iY%#>e_=% zufK-0>yMyA4u(!YKUijbrao!a$C21uM_q8pz4?L@F2P^X*|P6gp4b^TK=+A9eY#ug zr{*JVWV*25zPz&C?!pDqA*GMkSHF06fNgLx{AObLTHrjnw$y)?>YC2`k8==tm$kDn zn7D&Y^Z2=<*p7m-a~pLnPv~I$`?D_XxsG&N&7-L@88Fd4B!cVeMD`$=CvwK$_F#%0 z=iG;k(ON)4Th;yI>YKYwLIj_xUd|SQn2}kN%w*%U%JBdWA`|G~rXa9YGEE&zu=;~IS{$Ol<*~T?wD0APMxBLn=5M-3roordS>D{_Nu1a6m!vHGUJ6cD)#t7X=tnu<40#>io(wj@ z56D=+NIVaC4i{3?&2 zs|R$2XOKaU6_5iPk&tS7lI2X%v}cs{0wa>GSlb)vd8QmoXT@DDsNrb|_ZYkMS&$=q z|1~Ejo|E{>Tg*BpL6`!LvG1D6s$Qer@S@lS4*e*6_*77?HCrshy4Vme&)Vb<^Y7BT zP{gCbIp9tAaWZl7;C%UXo(AjDrfH~-qLkt(UOz`2?r!oSDbL+|P32ehS_cI>JFmTu z_MLY1U)Hx2ubNl4tp#+=gQ|#WI%c`Ueivn?s{PTiz`zK$_|ZZ$waMl1Gf@H48H*6l z+DjmwgJ`vZQz4%!BhJY3Q#bK`rQ6j{0T0>X;eqeYd&3R>z3Cl)yiMgQ!SD*SVl&9s zjKQ(99OORb6ZU4SrD;(3?^sUnN(u9KvKr!LSQv@gyW{hc7n{|!s4OZp*au_31ORhq zWZQr^=r$X-ds$3pO##0$-7oURpZ1kue+8Mp#4y zG@Pcc+a~hrkD3E>p$0N>UR?wp6>nwMw`Atm9z1>c_n~AiY6RH3DtjG1$<;F3+le=-IxBmP(jnUS(Eg;x6-V;1VC&9B%AqaU4(M#gVfLWG~Y zMC;qUd|#?QUwMeziZ1{T-YvY-FWY6Rmn>&;383>sa~a!2TX2#w4-fhZX$5>cL(%Q7U+a({6tuYl!7b zp>HbmBdV2oO`NAJqI_$>?-e|;woc2{2(^j}hm^iUl0F>x9}tP<$WUqpaA#PF;_XXg={l&3{-X#tM3W#P_FsMTc#2Kb?Dwx;k(?ALrwn?$FIaZ(F57JLmn;tbVv|6h1 z6G$=#OPBt*P?VOIwad0}m5#wwwxv$frofUtCP9AwdKFN~@Du*tGYJfYEw`WF4on#- zn{FF5B?u;hR1!xI7s9>9Mu8jsz9XZ=TvE3fo?P*f@rd6cZogRJEPHAHY_ZRn?@wqq zQAqGJRhKE=Os}y41NO#o#Tm|oJJzXG?=RDjn|=1qfBu0R94AgIirUVfYrM++QK2+p zexAtAZS-RwLhYJpZK}hcR(aZ-7xqRD+EpB z;ewvbhfSQnv}x!YShpM5`0x6kt2eyCp~$83ZO)O932@kuAU*mlmwbrG&Jz@QBmT4|NcGXVO8-2KG(ZwdpFn3 zh2`>WO?KEQ>@JKL#(ws0Bv+$esn(%81}@0{-5}~i_fyq|7goryKWX5W&uu>S%+DR; z&-*=DS-+fN*|Jl)?4AEqU)qsG|_Gc=9Nb1J38lmu-!cFn8MwVp?^4ciLyM3|93gcv(BdwT~izvQ+Kg^uF z+xjFV`sWqNr{OlYPd@MDM%_OBO+JLYx%>}BKAd;|iq3ze6#18j-ABs*KWJqlpF;jk zUy& zxXw9Vlub!nle{fk^5VQdHwrGf-c3Gx0aNk0*3*32XF~@1A3~Wb7QHrWu@WvY{yo~m zr@Hz!yQMBO;3ac|K7Ng;t5d%zr_xx^(M~n~^W2j_Zy^akdbrJN!s=i(J_c*kitnc6 z%2WDPta=qxX@wG1|0FR{M4xHuH`=$b6Ui^Qf4JJ<8YrC>yf`&b@h*cx%!^M_^4V@r zcRQROC75~NUOqEiQPOhBvCw((?vHkb>vw*2%*947?a~qL29fuHt=Uv%@(LT&gu4IC z(dU=HeG?UtJlHZb00KsEdY|mFkz^Hea1C|I(C;_V`Hc(R8I}*C5kEAB@m4#@1{wDH zzW=)dC}I^QtLj8DSSene&@H4*y?sk#r_MImB$Ig7u}{traj6OtF?Q8@8Z?S;?fruoG9VO2ru2aT2d6R$yDt0hB~nS+tr z)m(K%7FexcEFMkP4Q3-3aP}j+Q#RaPy7oPat!Q5J0M$!i5Hyyoj;$1)=vvwy>z=;3 zB=P(vG42}1&&ABBKglWvh=vXG6Kel@Kc}~+@cm0yaPm5`GGlbpsi^?}NZs9;C-<{T zrS5Tp`Nf->YPm95({*H0rPy9rq`q!!S8e<2Pj(N9xCNkEZ4(VvD#?ozp_x>yM6P~< zaeQ^W)v*iX5RuHp71Gs$3AG5BqN*yVa*v&_?EmE0_CI zQ8LbhjxV~X#wmBGFx0uU6<}xzdk%g)brlp2fX}aa;6at z`if0mD+e^Do*ULZ)Ry+KKvtT*r5@?m%Z*SF_-<+)eu$%i`+fMTb~vEt%TSC)8IGJ6 zIX3;@`_NnhY^KZ&K@0pnxO+k6?QZ(OT-mvIK#7ib*%5)=XFqpfM^SLFe4TOnfZxU> zFvVbQ_&H1huBys0U0T*-X}D9=Y}a5bg_IL)ivnvg#+7-FV@?AknvJPeyafX=%)9ds z5X$zqK-Cu*-=!2470u1fq0p-qKeT`b4(fT{S&8RXTZcyzjp^?+Q+2KlbW#sT?tbW4 z7r4Cqtx{H{Q=_8xX`HSb|MpOEKy((CHgCF@r>wt=pEg>T;+dw?ZP&Kj;+m?~%;keexl9GmUY~iOKEb z56E?mjaMeU{-(cCKE7}Lq50&5hVSmQyB2tM*_-BTJ`siHR)biQ1yDZ_zWv9-%6%)@ zQ1|J^{Kukx67je9`t;A4eXvFUKTR+8;lEW3G4fUQe}3{!3~&~I$IGCI|KGO!|N4NT zvidf6?H7BRUBq#?i2QP0GZlQ9?e=WT4Q*-^w>PXRrw=9MJztu+E54#YRHq5+D6$aHQ1{;% zmGZ}iUyDjyCKZwg=@e@^j!D>J?FqL&;uWgR{@{^HIj5C2B`sr;GOt|6^`!^zmjK@s zQ4XZjGRk)sEK9;(w_Wt&7olh?3!$39rm2^~D z7(MreI^DtZs1q!l=vIxuiV3AMjm*W)gUdAOfw3+3zqXoEFO33LVLL;eJfbBtu94^| zdELXw)2EZEf>1|jkpzC_>Sn?#%(R^N!?B;BMsx0L3=aCfXP~jeu31c#dHj<(A8eGR z7>WCUwEoS^KW8CBK2Qd)ST z7O3v5Z|d#RI57RZtn&WzAJeb+u%Rw;5VsM2VeA1Dm)K@_bl-)>oPaPHFpXO)4@^0BAPRYGADsseh-M` zXe%#7{LZbMLil&dCi7Yn|A8TV7-~(`q$N`2d(%!!j`^+%Q}q#s@0UNuo)DZqg+}_~ zFu9+zn}l`@%!V9Z#|b>v=(gWkLL=iXlOwxopSyY&Czi@dSl05Swj<+`*Ex8*Npx1i z4tX_OkDpfH+P*CQsL`4l;e&Bn8NYxQShbM60YbI<$6PeG69YPVZ&&q%w(zjcdrJ5; zYnz0V-+jVg+cxc_NQlXi)~#x5U7PGXEUo7Vkt-E1rZp+;s}Z#VvyNeFqEUw?T;DZqs>-ak zn9&h&PsgIq>pMQ=0waL(u*?g;hR0R7r2yeYb)V@+zYE{Qb9X#tf)`2Mv?woL{53~D z-`JTTV@%|pl7dG( z7hG;(xm{aMWkd_KzGypQo8O%=yv&$8;Vsvy0yRrb`ZS?ymc^%7<7$5&exD#349z9~IvJGzQyBk$ZTkPqd%=%a z3_zfHA6T!$fnEJsxU{Lxu*qcY6wAh%1cgZha7HVeJAyZMoH-^(;!H=T^z=d|SYHGC z{(KM!%dlqFJu9u2vp}WLF1u{$5$J5V9Iu?ZL9&xPv}&s}ok`S} z4-+w@@ld$$kJ(;f<;PEO;R?_7&bl6QFx9B;>jxT}%Apl-<&6c|l=HxM zlXkb)Gz%Uhf7TPBd8su9!j_x`v2;DB%f*jTe3X@~hwX)QFzWNk=$UKuEj_FCD59mB znmkisHlH7q?-kB|G@#W*?{3ciHo@;WdcFQTA7_#mMXvzxt-t-iff7ZdRJPMLwgsN+ zL!nQ$HE73I?XHJ@9}11x>a|ooLmQ!2SGUq65Gwg%J+jAxpu3TZqkqLk`>Hwzy^6mS zYGAYV+_*c|5*G>xwM&q5$oAh@G=gE5SHxU`m%WJ?)JG{sTlC_!$UO90w1Pg991l~s zxpWG*=O}uVzzkZ8rFApLWvVw_?X;=F44qe6O(tt4YbD-+O7kqV$5LEH&((yqv%Hj~ z_2(wsu#bW5_dWeFkUfLmD!=tQX(|JqKSM`(Nw=!*Q!-Nx&@;_zU5ZY7BdRvHXGf@b5_+&|{pzj6LNo|={|J%arR(?KaV9X|xy0W_ zOsvc{pwijkmNr!02;LIJQkpvtF-;T`+)jgnfaGgX60|OxWn9t2+p}SV7p)~_nKvS? zWdOEasY_gmRlLrX7Fyi!8uim7y~$RX=5|=TGZ|UBtbqX;2(QQ6idz9uA)!?$6c&WG zX!I#Be@b#sk4n*OyXAGYw1%Kr|4j?79nt*kjjZ^#9eXg^N%{pfOOr~|{=9lHp&kU1 zVs?=ayL7+((xPQ$b!?(t6!UfV3$mKN?D>maq{D8a9g!1pTq3c&umdB2i7e48qFlwg zBAUvRzT2Ip>d6~Vl*y|J0nwx5C!{DbDO+>6-&k{i_j?Yfv+`Dv8Y3mFTE=5vTk8t; z1(X{%2<5*TwvAm(pH*B`Yh=$|iB%e&u~k<9Z1BPQ2RlPm)pC)U)AH>n47yJB?=O`9#>&e`FINH;aX z3VFAC;v(0=$4fcBL~@445KZa09tmF(`2F~Xe!JuzyN~J&&!DZE+{p3V0hq2oDX5Le z<&C1=QfzFZAGfG1q2+4JBFa>Zx!}LwjOBHhKrRHUbTr=)*M$0b^UlCR7VOaW2wq~_ zd5qj30_+m^F>4nvSE2P&12=oqDwhZ&)xwE`Fo!EAyXHInmkZjv7lkgjeWAy3eo#Lj z48GEX0x2nnA|s4<_*V3~Sd@OWepjegE;Q)7pH7xx`;U4QI9 z8qXgWMHkm=Or>v`;2!}J4Hzg7{YnCx;j&ZmbYAO8T1!YS;AMZ8MBn0&JFs6uh*LN1 zMoxY!_}C{h=(wQ=#Jf)~A_7*DpFZrn_KB5e1p<;IQ|D#`iezA-ax+ZXv_rw%p4;x* z!*ps;)7J=1%fK33P++OtJJ_sB8ds%E?1r63M#ZJ#tVJ$1Z$Z9$Y=lsOg7E@ZgZLTY z)2Sxo@C9eZ9WPEN?MN7}n>YCI&^Io;YHtLum(9kYl9F*-@P_3SKoY*_)39=jWEenT zT-JVi`z$DZQ;+1?gmZ?VY|t6n&oBjLxwh;)Ro20`MlG(7z2&p_++@q1@@-k>dQU_QoFACTG`p}p;hr5Y|ITx$G zIz>k!RJ!^tlS$Rq!{JOB5X0(L&kJl5@CEp3d=1%dvod#GH@fnOCe8d$AR?N5HR_;R=QlW zJ0b*rE2Oez37V|0$=)C&h1wK|?ASJLzYISoxuUovvp>e)=3 ztc`ps2Sv3R2Ch|mm>J{HtIIRYA&*T6zK~YHco%Wr6uY+s`I%l+-hZYGlVnrqgKLWx zD`$TT8ap-Ws7Ut&Hklchhp7$PgqXG)aqn36#^Uf0SeSNPzi^w4DQxl!^{Xxy(@$Td zQ&hus7H0dI#>GsRYgM;1X`h zi$n0-%n5;o0Hmz^BTg}Sd)w~c<0L=-ye(SdK=Tj(YCk9OXjb^oBRds zDXZSmYHh%|MnsRQ(tQej3l8rpp5BPRJeJ8kOf&yxn#?DmYw!{f`5(8~nV<`D8?OY; z8St3#I>A$_sDcfLVKPpV&#cA44Oez+Z3G9ucB$$1Zho-@sDeG|srBY5=jH59N2*y2 zz}LI4kRjR=I(HXHnO-bSJWVDFaVJlrhHD!ItJU4i7ehEv#gf^-{Tp8RPEORS&FCEp zNmmSjTihv~#|N%zbq~@T8<*M6Ft3%tP75a~bC)GHc@~|FTv%(CVd%%&D!t;(IfIK= z;D+Gbg|dtr5bcXl&%1ckzxa{Rnw72{u~;KV(kz1axTzVktn64uJIPL0`rD)EVt~NU zOn29^Db=p;HaMWVL7yXkj?*t4^dsSeTdh{DVpoLO;f!D446LP?1|FKGiL_#<-tYC; zjTxKKB1ed{W#J$GC8|pL41toxDfoc9*mGs67G7*#V9bMT+IiRigb?r^jEN7ENux`4 zjNCPJ(vr zHnqdHRJ95(H|C6MLSsw32Jw;$NMGmA=J?7D)`w69I`l1al4x;+C*xm;Lds?IeG-}u zi#SYva~D1`jjZ7QGc3xJFB#XlT3=!Fx5+)GHRC@=#Cv4*<9IjD5oXf7I(TYUD+_1` zl2x^uyz0JEy}Df*s_Poyp_?z1lqT6Wjp5xx@pC}!a#mv1kLz1qRkNN;}oyIh4d3x|)-tfzloXkwd zCM3#DJS{B^m@1=>{v9;#wW$sbgqj^D^Jzp!M+a?v>3)<><5*`R2L+p%Eg6~VTUxAj zjkT!R*p{;!D@IuhXI%C=eK7|9*7E%SCfY4=4qj%y-0tO+!HEwG-o~(#2BR&k7C8A3 zIWPZbQZtQl{UxNG-WLR^$t*1??NLVd-^KoyZKkmJ0W)jqi4MQrD5@T``__%lt>d8-tFPj*4$S#Br-bs36i$3+W1~hLmI&uL$+}E zz^#e!PX}|or<&RE`43Y(8Zv-l0DhKv8bS@TG&9UPklb$rvxa6HD z$rD6)Yxw`+`QH)0=2B5gbd_JrdCnEXl_&l^k(aKaN?V@*kN3g<`H)5M>V-u`SN{<~ z@)P-`{PETmbZT)Bcph+dn)aqyG0I+%k6nfw!dmR+Z_@_+e*L8~Z?EdBtp{1*@ujc` zsf$SZUUh=lU$Xd6!?VXOUrK)Uv?qFuhvmL^Q1&~^EA>-FK4~;) z5RZ4HG^5JYZj{Yvo-F+9`gC5%5$FF5+W*Ee(eHFe(P-?Kxq@4RkE(qDccG?;J6tmE z`*mdfn!!xPInpq%gOs+_CMXA$M=E17s4RLSQ@x=j2sw3c zrNLP0!ldGjNACtEN#A+rkMM*K8}0U^6AKZM1)`M^Vu@#~W(i9Mw?7bs-u&adJ_sZV z<<41no5}ab4r*wZi?|v;X4$I(o<&Ajzc$!Dw*pMlrPi6a5a*O1J07;FV7|Qf@p;^( zBA7$b!cd38h->mO+b(Cl8pwLr$GNopiW4B{}?g=l|cqc)28awY|l0im$x18> zED}G1RiY68&4HwFS-fg1NzE#01kSpc3g6M(Mr7v&f3& z^MZP4jZA@l66Ct3AxHH@dr;-eI)kjY$K$uY|IMjC{>{5|_k+NHwRiqn?Z<;(^51+h zat`;`&e%dZqC2c>y{MRlHj516)L(d@UxKH;?Mj6eza;3-)Y51q5yl^l(h{B5kY_E> zxN0o*YT;tF8R8kJpbZadc>(2yJh$FG)z0=>E(vGZs-ns-61-GLY3e@Z^h_k3plx+g zMyTY$lISt>s>!6%>|>}Iu0b`hsMlrq8+U=d%KQScG`>5m#!Y*KTO7OT6sl)U<7FVt z7@M-R+Tnuz;5n#(gLqJH{;EFjFJA& zwrtwHF}L2R*;bOXQYy`4*qktue8yBX3;QactAxLf6}C^i|3+ty6HNF~zrC`$`_H$Z z55^}3t-7`<<34x0eR1u-h2dX*b^gPM?wCg=7+HhI&k-t9mNtq>Xbn0CQd2+Yv@r2v zvU$b(ABhy=!K~W$>9cb`|HmTmPXeVDb`Lf+YiQ32YTn!Aw?=LnFAwekJkbHW%q6B^%c*b@+0#`;pL-hSolP z-XroRt&`VkBi($2J_nk3EKz5>@9%!iA18vR81;8^YSc*ba60Jv&~nQqCArpEuoR_B zZ&E5XHNwb93dm2<0kWO)XXAL=o21dgRF^JPU_b!SDHySG42h$Z%IM~r{U;_E&vr>f z{K|i=Ku&q`1sOZ~>sg?S%aJjj=N*6grzna8lynDe@9gc20Z6|lu0;6xLpx4SUT!+H;X z)6Y|*`B4BOWc$SOA4lD`T(730vNH@LdV7B$rIdJWGTftykV@8icgR8QYq@Qw_6)jM z(RknGY268)ubX%L25Wp8Tbb6t?VCBR#`|Z+X|O9*?smaIubTRJIdJ@&AE-2yl<$QT zo(=wIs zJXoYx*NVl1Ru0La(E!V!sf%1sZ}_C`I9<9HO!O!1IBcrHL8E`p!SgOhilw&wp0I-q z^4Ddk<`GPFmD3Yh)RB47Y2fpKtN{ZudbSnI?xYR@G@7dB7&T@4(m#evZyM)2XB^M5 zjkTdiVOI#?Mn_S8U3vS_&5Q|(f9Qsf_b~HjsxclHcqzB!&L^**C+jN8*4zE((@k5d z89X3?_YgY9DJ?8+si9(@8CCK&!G)LXz+&v9>bmfP$Iujs#}p|_NH&dsLvcG>q}WGg zfjW72ip^yrIZS0+)$3Q>yu6yQr{Z0dNA@AhUcewrldg>mL{qk8{F=T*-V+{zEb1TBuMh|LBMu0l)TalB+^a%S%b-lbJEzpK;e{R4fHvtVf&-2IHbf zxf0E0Gt7!EfA3uSO(YMgX9}=t>d$(9s%kEtaMgMsHwSn}D0m$josx*Ec-({1OQeMF z2pd(#nF=Y*epJqx-XptW`LoimyB8JeO41Ysu8r8M%G;ASgOwQ?amTn;jP0Ft40yxewOj(jg zF#!@&mXw)y@g9;2qL+n;zkaPV=jX>eCprvNGs{fw(J1d)8V%>Azw!G3b7^$H6(G(6 zxKCQ7k|Q_mPNhWjQ0tqSt{kW3sv@bU5*^46Rg=-J23`k-Y|8EhP3g4&`^jH>vd^PU zcAIY(bx;00jV!}=ry!Eb5UvS-zxD*L{x9OdrwXAi#A$>XpPBK!JhgvX=}?^>Z2f+* zrP*2Huj#xNX8av?wUBSooo_z2mG?hxGiLcvu`=L=ZvJU#7`WDh`TEbH_B$Co8wF62*SkIAP;IVYr1tbo$^p^tpAnNvT=phw}@ z&nx>bm{QPEBf=xPqvEI2$9VS>2(=5}wC z0emZ%zNhL?SP;52RMC`z>vU7X6!b3i7m=R0GG zE0uDPnGxx71H0w=dEYTl1O!}jR=ya<^Z;``JpQx#rl_RNS>pSEG>8{9)IA0#r(YVWX82SQragcTHD)R~-`TK00q|4ytvqTg!(i1ezoi_zg%; za|REtFQmng&n-)-yaE79TaPJ;C&Yh*6HlFR+w5-2d$d_K^kR%mp161tsmH|Rn);#8 zt1*B zUSaMproCSUq^Ih-y1LrhObO4;$wHk1P?n2}OMb-nX);+R*YkSUd_uhVFn4&VS7C}3 zd!nd*jWLSwjd3$im1KxolxEt~3(lbE#D#ujLA7XacHs(ClTrLxAxPMD4d~1Yz(CjS zmOPCSqz`l3;vHjduS0WMvx#>QN{`|ZGyy9ggTOr~udkQOJ0ZBcIgk-_;dZk#WluB? z^0!w|OEm*kLeg70I3Jx^j;y&-KHA;OG4dgw<8QP!7c3NL0u{FQz?L~%=oj)!?Ft76 z*G13vlZveZ+IUQFvC#vcRD}6~&-D#9X(N{5k&MT?3nopkeC10WTZsbo=Q-KzdXh7U zI{TR|C+jE9S62lkihY)4jII8f$Lf&#g3qj2X=R zt|B_z;ReTio?GT?5|%Dd*C*5`F;@e+6jVXlFC|L|y+Jr(8e5pMR!puQacvHSqZ=!! z%ZnX^wDnBwbyCGbM1~I93`kU9UM6_lgKBJOFpTZn;rJINVrEZMMA*r5gXbn=47YQtr#P&lsbf{lRE#BvEi0whENI{?Rn`v2 zxxt@d&N^V_zCJ?ee7U-Rcj3m~p;UYX*LaK|KX_xyX#o+n3_#(L$mjxr+p#GnC!JS_tqcswSe)wEmS99^= z)~G9J;c{o#v?{ae&p~bLO`k^?CDw#CMv-QjgQ}r{dvim3$;1IS1zcS^+wfSpYXw3{ z@Zun4duPYqh4HxR63@<*;pmC-^KY4%vT3H%4>h7mEz__abC^Win3nRvQ&cA2Am5FX z|N4|W_WCZf@%hp3{YH&ofvwlc`&)~Ps|FSR(=&7VLEneHAAfq>Etun{^(F9mCyAQR zVY{8UOEyPLy}vP;*FX1fEaR}*^1unPHz_SW&3+Zr*OhvAnzG{g$^G4Q=i1$SxYUdc z-MIy=X63MVb*9hrR(%T0v;7Gbj=NKkhl*f^mW zpUAP4nb^I#c=uU8z@fLDKPGkGSMn=v|HSB$tsA`rt!Qq05C3IUNS85yNFL2CCxv6EaGxyIX?p)GfXJvWEe z*VnhVZ-t=Vn7cs7nab)1TbxEO*#ek}O>re_!_PC=hfH`1@cFVbx22))_~z-}jSHgc zID&4IKiXp93^PcswAGC#C73yMU=w3+defNy+f{Qpyt`7f53eh-yT)QAVnNUj^KQAN ze-eR`>Ek(CjcQ2r3%Y)X#LvP0KU~6@67N5Id`Qpu2vw~s`W6t031&enN=D7F@|rRg zKkC7U+l?~hK=pvVMW!yC{!)#4=5a4-rR)AWOVH!Gy1O3;J^&z%*xc#RR_Jghi=plw zEx{8-Rl`6B2lcGyMRmUA!F^kBQO~K{uwIWL>`tj=Y>SWL3y?;X-%5LN45N(6c`;;O z%3mGFdF`;1j&qTYmt=M6iL-0byXA{8Hwt1D>r&0Be&yrSGxeyNlvynw0A zMrfbA_f8W$3O=n!d=&BZs~QMI9ieyy^?=n`>o(=&n^HBMD=FL$p0hcG2t2qvrV3VS z2frsOYgmmJQbG_um22HWWxeRxxhD$3)uBI{6oej+!UZQ}5XVyau)5gF%-x;*WLp@5 zIROb9`4aT%(e4&AP^r3oe1+p|1Ny5;$&(dVxN8a7vh&?!5%(`7bS3<-m?XJx8&wV5|=QG|;{QY?>Q2I5%6;il~6q?A$SdibsT zUd;_Bj&T3I+NI``VMie}+2DOz#=z}$zf}=|zo{{;Wa&LO9&gjwjSLO#)ER<=Ny0Zx z!D+;;g1924C9k@2T~4N(Oyh1w8ednYgUbu}$e(Ux1Kpq1$rL3Ib~at$G+(j+MEjS= zT4P%Fv^sX`dFDVm0W8&)uwGw%s+eYiXiT2Vf6LxLGFGt(6O)zIAab-$g*OS=9+3H5 zqtV%0de^>dseX5%SHp6o*Owzd%#f+iRfwd&j_Re#<|adNnSM@(&J$Bp-e>!W*4CBi zRz_aBh)(M8-UY}n2u`s*`d0o|{|lUD4aEv-VX_XDrIc(P_cLC4to*Y1nYZEopP=%8 zPd^(764A)D-w4NoqP`nT9#sCIt+HY7?IFRM&{FcKre^YsOhMoOO#wZ=?xdE@$GL!c zOnuQMHMpj=IRhi39^<$%cphJI?(3ZE@UAr>2?kE19*=S$B*UuMT@PY;XbM)z!6R#%Zz=TgWYG zww&C+Ma}FeI0I8}Y0F_suMZ(kWZ*4Awk{r%X`gn@!}LDZ z6k|{WbLqiHWg90trq@f3*C@YuiJwd8i`cZLs~)zj&>b70Cg|k(j^nTrE@&j+V#sZC za;K_2X<~TmM#s0jYEXzt(0Xs@pcZ}3vt`s%A0W*pd5I%bJsfT_(T_~P^jCQxEGdR% z7{#}vzl2Fq$^{M0$=ElR0budn5MbYoD*g=9D8TjfydHiCGDr|o@Yt#5=zmU@s-^Yp z^7J%SCv>IVG6izAkDbR|_<6VMZE0q-VDC#^+d$}&u)RjstYtVaC2anD6(^HEFEQE8 z!oqhN`sJ-r*Cmmv@fUx}=jP`J!9BWLsgF=Tdq(up8uw}iV_JQpSCf4y2?l#aFcotT zmKn(cM-xMav1-rvWS}zr0GWcfycz<0Zm?~$tu%TY9(_T}aB&Gqf2Y=4ueBEbzMI1R zDlrnY5t?Ye=uf3)YCb;NTIBLS6#-Lrk*L{JjQ=#f#*AIi-+G!@qlYNWHlqEld#yc|M^5Vrs&au|tn+giP*bxkgm_SSs@a0@)ls zrvkkZEsq-Fp_n5Bv2%nn{eDb&_D?0bE~NK#F|FnCE_b*>$U-p{99!ABa{y7i_@`J%A$FQA_GjW@8t z>m;0xYM7Eze$)Jx>X`e>T#oUbZ!V*$K91A6Dp4Y}^H1DT=R7`~u4(Jlztb;ruu$`K z3Kt;C0l0JyEf6Rc>EbK?L_Zn2iK}yp`$M zS(<#;==h8nYS}#(Cx(k(trM$?j=u=FYzN}dD=ml*RiWIXkhy@9aG|GO%Rbl8`!y; z?8=0lV86BLtQq-eST<;TDqcsW5m!KImc-VAZIiCO&2R8T{MlUAy762;c5gSY`XBI) z(EQ#}D$E3FQRXCCD`vFkSYcwN?ceNZU_1Ee;r0Ega$E z3XJQXZ0S1en&RZUzPHeW`ec@F(zI%50og#?J3I;I(b^;+S;l;$E-tJXOH;K-($_|; zNSDcr<0oA0WLDkBi#MFTf{skH|J7Y2unQbI)uttEH^0l z)pyC&jfg$%j>q8Qo8u9D$FhZrpo8l5R~We;S7k%P%KosIXK(rkLZS;=PpY7Q(xRts zeL_)SxGnP@(c+r28AU`3hE*C-H?N%-KBbFVf}MJvz^yM?lW#7JBm#nKQK;q(C#erA zBlSz*MqTyFcvbq6Ymp!AU%u8^gKga+#$-kEe%OaIX{E&LCfFMAz+#65DfFE1u+(A&BUjZ2Q936V>d^4Ds4hFv6(@5+HtE?$K?g} zXoJTN{3#VjOeW_5m~IYQ3NI&g`}n}sR3>P#0{LfgZ+lez>p%uYQ;^0SnrLlNX3hj_ zuJ0mp3(xYkXL?|_vs_kU=J~FUFOR{)Q{Uj9vK?)z36M$Wrj6t3^Qk4jitVwP(DojU zt?OPCOkX?*VSFg36wdPwZmoY1xQ%~#I1r79n2^R$(HRE>^j@4~1gqJa&7>?rMaCDr zFB0ZAS&cIu?U{l{VggLRrzH*y!_fhKg0Tz*7K`$$d6o;t6zNalNqEt){XP(K#gr%@0<8`oiqnQG}{fME#w^K z%i7+R#xdQc3aMdXpE}`8J79}@M)`S;9500%Fx=T|V><)3zTQmF%`Yv@92!51x$42O z1Y6VwZOs)1kscdbZd0cK0o*UrD4Ho_Z;GElL?B||tWsoTQSi)AoYOh}t(sYW6EXi0 z`Kl#U>v!``y7l1=W_b{f-8>MxpUKrpE8o`m)G>eO$W_{H;=04ErRe&GbVU}%l{B(b zewXF}_FP8I!2VZGPR~{4^)y8WZZ7y+_*B{BFv;A$ixJpaj3&I>zt%F2^j_`!!PaP2 zona{t4-Y^w$$IZ5bXx$7le(j$BLqSnl;Et?SFJx*%cp^+f6g4L*RC*=kGtj)YDueD;B`_)6B}g+4NQnCN|5}vnkTbFAd0`Nd(Cqc{^Z~rtis+$6OD*xQ`N=0-Xe+so z{{izfZvPw1<3BC6$}?ZCv}RtY1_gGeott-tIM|sNgauFr<=Z^du`Sw7w;P_-s3OLr z;O2(T8q6_VNTuPL53dOv&B}72{&Cwd$2eK>xy*E%QjxK~H1$24;gX7&C5Yxz~x)+Tlgj9B||zUBpSsKjVVu}wyG)~ zOgMVG{$~yCE<@%My|HXp)Ni_j61B0Zj^7Y-+W!4|k#yXt){6T+i^aji&J5>|< zSNk$VinRE7o!P#E$T!Ez=d2nH>}bSf{oDqc)kp2k@jvKHF6^yp@68T30(Xsr+plJo z!BMU5xeUi{EiUzVtI5_{%_2)Q6TWi%*z!ae(R_a3T8BQxxI*Xslh1~1ho7fVb?a}U zD%Sn^8eCL>XtrJPSbZYe&>v&l$Yoz6Mcc@wCpBxEfbZDs=d-%IoF@W!Kp{)6dP7qPwQ;ADWTyfZz? z;m$h1C5uJQjAm6V1}>ez>G@rC^4}Z64|NJydt`sogxGtNle7Jlf;F`qCT2}dbj$<` z6n%ANf0U+XPw4FGdU$YPt=B&GWPW;jdSOBOrb-Myst(^)gv9`e_397#jj>)ez!|!# zEYKxoH5ymX()V86;fSVS$UvlD#CbJi@2JI&xNH?U~X)A zW=28cN&^%^?Bl>mjwku_3&Xv_w_nWOo(tLjQ7eH%HV^|3)p3`V; z^6|P@*f8U^`FdmM(zgbM#sv$?i-@R)vw(#oA6JR~^XJR_+}zyQSo`!XUd0})=tiaP z;SGqcIH99N4Ixyd@;P+RS0p|?-sJgvok=lvx6Yu3olmzZxTt0#!`M9re}INMG*3yaNeos_U19%TNja6;a@n_gc;)fWTz%uA;m$6m zz1IP#Wo$96r#C8krvn?Y#i$neQgb|r-S+l}eok&omBI10JFw@x)@g0v-m&tW4^)|} z6*D3e!T7_xDBNdS2uNk6lM`=O*&Tkf^QolFo91RwUju(PH}^*JYWD+b{YM>-`o4w; z?1Q}6B)(rpX#iUfpH(YJ`@HgPg1c4*!6klU5K1Ni^p z421Pb>4bpEAyDimknjGZ3qv&N2DTJCmlQsH)!{3buClVWWse4OeNhV%>BBt$c4@mpT(6U#QACDM-M{hAeamfn1OI39-byYG>gdFMsa=5|AS9arSAqZfHudrRoH zh-c{cmVYTyK1rN*`g!1W2t`J_49d6a$3b+M-iJOB z%gf1*D;IMv;qZg^00!gyib}+7Dv5#AVsQKKzrM|qWJOg3z^+I6a7$M`ot54o5@2|? zV_DkF^Z`L|Y#>$;Oh=@mqEaHdUqE!WNq@+ye?~VrO-mdW zEAZss%X?_nz2_y2^(ah?UgPl|{?O%#o*>lU;u$Sr@VY0}=TvG}t-#{;3=u>D7f8 zRPY~Bn`N|T3ULPvu9Hk%q#qYYQfpD$gXNHG~SN?FX{(E8#cVFfL_e2r$T3 zdvK;tG_{!C*d#kMAV;uLqo%>Zoat`~|7xJWX+#Hg>VqAMn|=^*|2|r`?z4WL znz-xi6y|$X)9|zGx0yh_#di=p7+i)OTrxOSO-(z+ zJ%-46!5wV;2h2=m{_evX-*tvSxHC@XHR@pJhiO)ntE_y1QLZkH57Ma3Q5o;!j zL0ktgWCfI@CEk`$AoY!}P5))qWU12nR_Li;4N^0|yZrd&DfKI$H@>);4jl!BkY~PI z!E4}*KHvf5SNMnKT^r{^Lm#z@x4|!PxS$h92;b;cX8G9W>U(Q z3Nvg5%K@FhJ1QbZ=5KjZp6!>I53arKHdgfySNGpp60g3fcbLQ&+{L5eqEBzDmTy22psHSi0 z&8Z0#RNn<-0fzB{oMI+Z}b+2x^kjkg0dSSJ`NUL+?ckBf`zS$U&~w_?Q+(8bAPTtfO+ zVWfCMgdMrldRJ;D3(=0`<$K=XW8m9R44wKd!|b}u2-&nI-FHVrCtE1wRcCCeZL3@W zQ8p_-JUB!NLd^>neiBzd5O{K){~!J$#)bFCU`>A$bgIh8m#^YVuO0(9*4_a8n!*EL z(;9@+LW}r;Pr(E&Jv}`Ig#ykrHnL;(GZA8J4sY!B}uxn6CNO8M|wTuPa}k+TN<8nER0YAejey23~s@#{+?Z){XkuK@jzg z+x#m!)$C>dHPJ0F-Odj^z|Kf{!*(x)ACMaWc(^r^LE-XDK7@;>y0&&))zF5%JCLiKDPSTCCMu`=(69VNj=5yK*%z!3$7O>2RoQH% z?ONkTZa9L$!*kJ6QGBHtujC`Z&Ik#yeGw~TE z1^ho(am?A)_48KZjn?AC8dTsZPyn!p>erI;2aeXoV?Hgl7SuGsSK%29wXGix+X$45 zL^A6>-lef@RT=M;>b2?GYLw5_e&RMD@Hv0=!}cSW?~~%ER7;0n_U~?5BgrrAy4`0g zxUH{yo{dU_Iu+BqR88p&Lq-2K9SDg~{8xW=)UAI(jn{J*IFWOpV}gl^iSQRf?C%f| zzd~I$eHG=0m06_9&2;}j@MVUk5`1FCD|p%hckuc9d^8CDY8yjjbSp)%KDf_Cp^c-n z#nZ_XWb!5|fzRJoE55s3bpf3NqfOsl6*+|fPJ?{3vBQ)HviiEs#C*-G>}G1^uR~nA zAm7A9xO2x;5r+fnr7;j#XLbT?asOV+wO^&B2S5T6T&&kuT;lWAYprkp=9BUn6TM$J zQljs(j&f1Q>bCDGW+rpn@8bRXq8i&cZ^_*U(c*HkcATX4$nP~5?^Cm*M=Kca!emt} zHSQZEsS3RildNkW5Ot9?9RX!`<&8Z_|3Q?a@D4x3ev+j^+k6@Iab)GROj1~+Lu;;@ zuad1{toA!y)mGSfTiZK48g}5k%xC8319m41M@E<#Ohe>N!^|b-l!9%ot>t2Z8|#mY z;*Ab`B{5HG;N~%Z`XaU3`BmIyvi2;Ixqh$t;sQ|}TJA@+rwep0EIcO0@jUJ`CA$ms zaOKEZbn!y@yu;T3ZW!cp!+`kntODQnxsC=4RL6{L!`rGX;sU5hqv1mTVUfynOKdXuB*d- z5DP~7_-CNKl%VkVd|lqcaVWzzym}YvY1x{<7?Bml!p4@LmsdfFM`LL^fxC^T$az|J zJ2ZL9fx%rr&p#j_Osi|#F6=3GnohVxJ99*DMn0Ys;wD)KoyFK+(Tr+Jv%NWK0TeSl zYCK?X{Yw`#^4P}S!QP(Ws0dOoE`xZpdq1e`h_)u{2531^Pj_QDtt3~SRa^1#3-CX9 zj{qM8bMq5Yj8$yz>l2_d{B~vE(S5+TrK0hz|CdfqU$b2ty+#iC9&mVES|+0i&&Sd`zI#J?az>{lwYRB%#|HF` zj(pdDl*;?eK2$w+mGD-}$ygyQQ?_Quv22hKYe2d~%zoaA3CDY3J? zK^>U?Q>>nZvX;qWUY%%w7#}8G#%G|86`)dYsC`qNN!(tg&&t&g*M8|M4hjkatc=6M z!!}hHKpq)ba~;>lZkxz>?@l7BY2^Od%x{_u8pq@piRBzA>- zYz!8`M57M(&B^(j&1w84Ew=dHg0_e>ur{@550aLnkJ?%qpZ{wf$Zu$Vp|dk0;Duj2 zrCKKqy^+@5`{tjqPQ9hPV&E~LiPCtkmjBJ=tna}X-_SLO036P?c`w2)KxaG&r`Y1- z^6b!!f`LKCdf+i2HKbPCbCG`Gj4_%mqNiri3m1i@2tdSmDHsfhr{jKjZPo6tI?0nh zA(-Us`MqIL>iBBz&W8t|Vqv#BTsDVN2?!L-T>L*)Ae@8)Yinvq_F`m7KZk7UT`JOf z8Bh|xtlDrj>|c?!*nKW1t#&j13Z}wBZ}Tnm75*l(W#C%Gb}wW&aD9N|u(p?aU+p)p zq+oO0gk*b_c6U(s768S+pS}EbH7v)OQR+e zICQjibP$B+{w-gnXEdE)#A&n&ggOzzNl&&}UF+gMWW_XNSNc(=Qbz9XrxX_@9CC5i zUQ+#?xC5u_=Bg!?%O_Z$&l9L^96DO-D=?#@!Lrb8CIUVk+x{0l$syo7XzPmGv;cO* zMZ0UE|HiTa4bIzm%b`HH45Y*&`I=D7qPD}d8qjlOCZ8!H#?gpwp@z@8enDw;_v_Mz z(SZYq!{~ppth8V<6^HY$IM4r`%kta%|H@@0%FXc?3-f_>EOj==NE(p`>yU>_P zT_a)RR_k8tG8dWeaI3XipPGkw@2mj#`I7AT&B!C4ndqjnf%i8GX9CCtVN}_{TB)%u z5zmsRcb|fJT6K{Gos5wdIO|WL5Q6Y!eYBn_5_xX=@n%dkeI{BdoP(3iC+$>QOIJ5^ z3jk1?t*zf|Lg};v0|Wj2C5?`}+noG%;7rXIJGNO__O*xuq4@Z+X0H*kq|F6vp5rVP zbz>FjaRApvm$%a53;EXX>eH;Ao_BFI(LeT{2Sa|gqE}SXT}?HjBM=_gA+`J-l=$M6 zg^3cVAcIXW?cLSuk#y=_X}6u(z()!dRjuA@Ft%DjD%m-1GfDPehmSr~^lVK@v97lA9rlgzW8TdtVHcD~g0`P}@Ub8Zqm!p&IhuSOo?3CRg_%n6Bs;AJ7Svg8xxDcu= zZ{0z$TS4w$1Pfi1BrjyjgY)7Rmp$)dq!i84laGgr5L)g6OTn0Hp~G75S`7LWJ)t9^ z^8}M4Xn7*C!@~Biz87D4$}vzZ@c`Zc=SYmU1~x)hW-;j8x9@%f5p#a_Wbj%IR3@Yj&%6J zyM*z=P{QQ$#!cJEGhwN8vSQsgMFU)coF^>YU&lAC>toa3a{V%PvHToC(twXg6LHiU z?2S!~U_ioyF(>m>qvvGBbe}5J!CMpAX@%3YYHFO-R2E~4+2fU<^=Rv7zF+b-1fOGF zig=xl{R@PHU78RYk-4e#6pHL z+9CcExTS;4fj4<| zvRB40$X4%5c|&pHZFwEkEZMneDOe0R4P9;E2`-k zw$ALkaIM5NwpatRbcPy{HOk5@82v86{;JMr8fV%*EXaRj(Io_Hu{MA`+dAH>~wy)29!C#hc|BKnp@UI^}rUR#|ixE)>T7&NoEXoc8FRc{Nu@+-2b8>LM zD$E+essu;H|1X(M^dg$r<)i3)=a*x=UWXr?9RgZ zXR}us?l}Qvp!tibovMN;%oqB)NsbEJ%bXFV?lbnTUQoK=d0c`ht6m(rTWXxZl&rU^ zqq?#7b=Q&{)yp68$_|FYELxAmm)+@K&>PM!&;K{JXq+6ybq6v2F=(< zgWNWI*vTHKVGDV)nTb`>zXu*zS1~pQPAmLhoV{gSRMForilQJ=Qqm|$cOxwzT~b4L zcXvxkH%Lo2LwBcimy~o23|&K=jsNF!@44sP=e#)k6(X}{@3r?{>lfcxOt#vf6MpxR zKUId;F`xa1193Se)&pr1ooba_cFv_%iXHmxU;-`Bmi@h8ryE;F-Z`d$W3bI{!=`)VEY$@}+1T197Yr>wEtUKo|nxhp8sY1hPS^${LbSI0XVG zOF^Tz=exd7pb7m>cw+vgGvDL(aS$V#4{>=yb{d~su-Af!jSN}-8GhZU%XaBpD(os# z$1^$u0!kc9tG-LyIA%cGw9~R|FdPlnUB0-e5=vTo8b0gOhkP8CjGvu55^Q4mlDEl7 zL6OgOCu_e&VOUYY+ytfYNw*f|!k^%#Q8Jwm<0Zf6$j@AiLnB%r*mjUtz;Q?}55ox` z1rV-p^fmS~-4}3OZ|NH7=Ie?Xmq+#30CKWbRifPmwCiOPW?3E?Lz!mC5`b8fNnJ?zvtV>dRZ~x-8>#({A;$ zerYZ+btz;Ra;L+=BFTd8W&WoPIi!_q(`=>YeCyoV&@LB1i`pkMZb5CG7N_tP6uNff zHXbB|w|Pf0YiSyK64u$B@I8|AF3F5-;PQCh>*o-XMZ8_t$30cEuLaEB3cJGzgbv_HRmOs^+RvN*YRY8#a69)4i98pYf4@ z$uN>yJvO@&vb;Hz)OPawkY8Wnk!G|Nd>WOnN__WYem}imYm`X;4OoKwQ=ObVVlg1x zxhSbTe~#fCMCMv3;5t#fx3_8mkl^feS3B=E+)U655IxjKEnaksv>bC}Phaxvvo>!@ zysyyoVbgxN)EwvfiGH3YlLz#$?eX>qCqfF_DADoJb|*iL)f{e=xTKX&m$qxV1tU?s3Y)wN-1cc!=7r9)A|Ips(?5=BG_zhU{fWe62S`CB8)XrxcItUm1aj z*6-%T|IjeLI=A8~RfMDuAn{%yues^H7%h78iMe}aD!+M06S^!TO;uJ12Db|S9n~0c zd7&8ElR5Vo!c0Dk=(S%hW?L2?+sDT4v`1wJ0NJ%rgyK_v{R>$6#*p)SD29;z~xv z=4O9kRGZ;}5gq*UXTkkpMVCvfw#BQlNybu!J%(5lA|C-x!?9Vx1;5iy;O^jt+7qLv zV+%$zPGjQA%Qq{kVQw<&N59Z2BNz#BJ@m|Y4>H!4?xAJit1e{KQzMqQwzkH?1Ho(X zSk9%nmW;pWH)>R3pudXCT5g+p67$cYR?yPAAE9%YdQYFqxjXftqeJ!KPY0u?++D6~ zBo*)Xf`Zc-pd1ANhXMB80R+P9`*;tO)Sq>NX3Q#EjNjgBBhY~I1U(>+E*yKJ~Ok4=JDLCS6(_)Rti(}c6lr>>)lad7M+u?@8!ZP-ASoU zYShw)hk%vX-!=`1$hDt1=~BxEogz`9;Ks`{9uALccJuqHos(w*_W+RX+I7I|+Rl=H zuLWlXApG$X1|Yem0=0Pmx|FSs)zy>mTkv=m+#cfUI%QU)w0pr8Uz}pw2+Zo+eulf;Nj^3<~?c$vkbhK+MEpdp_1(C*vza2#(^F90=r zmG7Qdj?!mQ7j=tMj`5vxs>N}U_xzTp)J{5$gUM%|gtJv9&QIqVZTk!8ZJ`P3t&FE&jnTL=_c3bo8$ z8Ak^dl$Ve0V?(vQ*Ck|sJT9s(tPuL%$Pe@L%C~#h#xwfzx;+9)sIFvKQdLROPIJO3(cCG?uw4M)WG60~J)&em7db*0x5b+&p>Xu{<<}7g;9UHEQ2JJZWxe z4JC0<0C5Yxf zaE3MqO=?61#8=pF|kkL9!@jAJH{3#w)fe%H>|i#o)WI&EMvhEiqxoAK7h zJ-Qhp7MRV)lFy8Mk#j{T15IrzMDEoaUlw1qCv9X715|Qmcc5h^gQri<%y2(+(t3x$ zS-Whr`Ka?$A>*9kl=6*RfCx<-ea#=gDoTCH%wp6VCQqk3L$b@u+^}1Yy`xW%G$!B~ z{b^5DKxAeSQf7X5t7?dTeN6he)}P6R_Gk6;g7%$g#A!GlbPemi!>g&>l-xBA=ozp- zOo4}A$7}2sz{ZjI>R~M{yn^O-YMSyt$B)ddjO*YwcfOcPisgLQ&Lx&ftIx@2WK!Dm zE2m%(<^c$_gObhPik0#jbD4B&zV!1?8t4%kf#RcHl1^jhfUD@tjMraoSMS9=&_8Gp zG)u0cJgURN#p6BqP2N@S-3?qFn|tX#?^i=+ zk?T*986M44`)ZIkzN>)FYC~wmK77$j5W(zF0O&m zOx~7XdtPTKS9qOnm;)^yN-G&f?GNdQV-^w)6v-0Y|N2Y$G)jDQNouX)XjD>cM3gpP zLem=67!G+wt47X6WcG*hH`2dSEQzFLXBIh#xlO);`?3X4Pk!PZryM-Ls?BD#X=;hX zA1s^!Wc#%-F=8wq&QbENPV+-4U0b2LL-Z?>F6=Jpg2Jk)y^#zO?}5b7Z2EK4-pbtw zVO7<6fUUbQl($WS;I$N2EZi0Csqq(Z^|*n{-|a<8RrZWZNk>wGG3i1Ry!-wLBJ2|B zk@KY}X^mV46(m=yFlEX}ONe>d)U13(UPK-lZl=hrY6s+coX#+l0nubHhF}puWmQu4 zSF{hSqDtP*PrYtO2l ze5m;jl4AHcJc`<<({{)7^A+qac<&I>tD?(Ro@&ztZLh(Fnt$#Fb~gQ@&^VpE;$TZJ zToC`XfMswf-(ERtat>Gd^5RW-`yGMkWJ~IMvZlEz4adk@*at9h21wxXd;yi6Q7;3c zbXP%(|LRczAvvIG)HE~1Xki?h+}gYHCL~xTltKlM*=h{=CV)}Y+p(-7JCYEkmHwu! z^#vRyI~MxDsT0AMU&S ziHFBTN=if7Y9gFmX=4+r?!c{y|GH&*5pu$9=*wOw;BYdcQ_A4GRxHo!Wm0hfag9>Z z0YHP%C&LklyP1#4!Lw^Vqfg`ez($8#pl(say*$W?2UVQ)zT>%`o&0VnR$!=L<9p@= zJaK^-ySo^&eZQ{Nw^_?~50ngLLv-s=IGGoW?5X=gy=2p}1%6M!4)c~_H7b`?q7|n= zZ7rSvc#S^aK5v+xwhy5Y!J*L)ShL$d1Z>fbQ+U&(=W}z&t`WOgESDOdsyw?keSgqA zBvw-E%m{R3tt8CKD?2$I&?9N$>kWsM7WPF7JrS;T9AF96$y%>v2^y{(*52*pKjoZ` zC=F<=4D)L5u0fBMCJh8vxDbk+F}2P4VrF-4`qB>3Z#^qyR-AY9*VI@OO_ZDYJnyVr zzqgt0N;cbs=Y@E`!__e@AaM%hHkx+sR^uwBBgM6g+ z6&xR|kn&d|H43~CmGBO73Kua6S5xmNE~ar@ z-62r$6hMgjLqKz0tW#&Wn*z0|XC>NCnzrX$I=nwl6|}8IZ{#0m0%>`#;TWFJdR?1c zcTKmg#kzYiS9n480BRtUY(&Gwg@t^*Ok`*?&8PipBYDopvRtmV-FuwS+(?zs&`@)8 zLq{a&=f=}w!{eU|3>M2i*Bqx$I%#7dghqg51HYQVaa+FDE0dK`@a>XFaOV)>D3`MH zi^chEOE%<-AWZR~hfZ%zT`-2l2(ySc!;~bYElmfRPhT}K0kGkb`Ssr_qC{>br%Awj&uQ^fb;vDORma9 zq0pS%9Lx~=yCMBcFi(bD&Eg1%QUly`dh-}8*OF20$vtK9V7pmp)u#%qdg-H-VbL8% z4{g;qMf=|T?BB-Z}3Y%Svtm<2Hgvdk;l*cl{B0(wGL1W)^L< zk^Rc!NBV-*e>614qS}3(|J0ff4w5=oMmIe^`jpOE)Kqc%h>~Gg56%?(o5FBj9qL|k zGBLR55X>V#TupXy=3+VvhNW`S-6q{XvWKz-@?vKD;xMvW{|Td%b#!uGH{dWqK=4C; z?!Le4rvfuR+K_1CEAmOq4QH8$5oH!jPn3_oBN5N?Y^v(B$Q;WK|A*WYq zVBa|f-;&({E(GG4gE2sS%cyNvijf28E64)0py&_t6@cN&;^gGya5R|Y^OBN=hK4~7 zGolQf$jX~-t!PZW_9HhveBo=b&!5w9-;5MN{))AI?9i|5QNy zIRGRRT|4dZ96Ul4-^!CX0O}X@^?hn`+zqTG_$DmeeX%dp0v=!nkA1%P^4)Nn+yH;R zLy9cRX(VlL2fFOQ`n2M8{%qi&Y{o5)V%eNC8AGnXIQ>Ob*U@EByN{W(uj_?59mrwA68NW_{&>gO-+-l9G~>(ighjwy);t-ppI3SX=m5L6@`#W&W57-WgqC6)B30MpD2Fher-BL# zi_jGPWY(F-K2z*hB`h-eS(k*H)p5gs1gCISkpDI;aKU_1K~f=Sc++sckdog8Nj7x4 zpSvv64AOFd9^!k_uP#2sK2VF@eE50!?q>Dl>7_jXGwttmPNow4aI=#+ z(T)72uL>a`t{MF%TsNTSxD!L6?{wl3^QB+7w%ZdN&(g~LBxFr`+R&B6bw!f()%zo2 zvS{8~+$Xa&F;@>~k(3(f&a`?c zNGW0EU+XmsC~Z;_VOl1za7Pm>tU_9)g5I#-H){}MIjO^tHBC1dmAa`I_M_~YFJ z&OZ3(xS(^{Y}0J3d0nyjg|lhG@<;sXU^tYSd{_^W3qld$CQJco12uBRNx12m-6!RP+Hxbm%k45=V`Ih zSx0@QWc;(ZvU6xf5e3I}{Q9RIR7WdPkE0U9JmDePK*=h|y&-6d&aZ+$f)%|w#?FMV5YMf3=*0Xv6t%(Qy z_;2-x->P(4KK6WVViZ`{R~0+sGyWo;HNUF05+R(txyqV7M`wnwu2P962@Q=X44Kw; z4@qi+TmPk5SB4k|;c>YXYi@~MS;-V45Yhca=ZPlOP{@$*>}rU=gwv6d zy~a-a`T1dLak>{j@H31T&|L|+T%`W8Fd4B6_~$Cma-qst!U*V^;*Za@K9m;YF^AoJ zp;BkM_(2&@P(wHIPXg2?>zQ8IEzpLRP`kVrlCxKF~x}Q-d$1 zKD)0np{_9Ms2q^8QcO;!A!<%?vzD>qA}a|WMBNJ>@|$*x~jV!B6uFXdN|oq6p=TM(-#7ja)87bL`aq6$|9 zxHKa1hxJckrc5v!E)o%!mVMl|;O`){eO6T0a0JZuo@M`j*=+eo+MoaFs8JI$>T{y9 zl%%oV9kw9l0#pK_gUcn8e|gvrztDy43nbO4h?yYf{*4dkV&pV z5(_j&vO1$gD)lpoUfpfqIeGL3W*}4l3adL?-#f2+BPu+pgg`Na>RwD*fj+!~_h_xJ zWF)>a^jQeRbOFW3pVRXNvfDF5@m^+f)^%*#l@_%1&L?XXk&M;Z!;d%3n8^-^EH#NFmAt~ zNOZ$>0+e4U`Dw{E1(UFj-23grbx?rmMOMRv@#o~q1AyT%#>F^>1OCO~Wydk4*FUU` zYi&P3=wBrzTXKv;f=f3?4Uu^tN23B|Z@T034xLR~kT+1zyq3S5(jbknN0PG5!LYYY z3|8KCwEkt(*ALh6vKJDzXq-fc-QAN!yiK7Qre<8wtXR4w%?BFim})tMie0h(Vj)p1 z_Kg(G=Ul^~Gw!3;KSLz;v$baM&7`SNs?F=i`O6PBh>4fnmI@m6!W%ZKh$d|Pv+3xt zhrj6pfyF7vA`mOkygWqh2jU`pe0%`^bio^=BAR(~bF)8P_^C{eaoRvsUMqR(W;DW% z9@TZ^{*G(6uvb1RTI26`EN$)I*F4pIyo??>fFN;p0}AW8OIX6TtgUs$WVdYU7g8nK zC=&`yI%0?J^@t{(3d;oP@*ccoUN*|kEVR{-_XC~;nHX71R_KrOFX1{Tx^G%qYsT#> z^V1lgY%J!z`$yv?pYn~f6&r~y%@$tA{PQDS;m?vf{z|UB7sf>bO`wY_y41QK1|$@} zj;XvN038rm(7l~8mhy#3IjV(jy@H``^Z>~SbT!!_J0Y>(Pt_2w3bw65wuy#6L?jIb zY#T-@X>|q4^CxS&p0?0jSkq*j%gF6~NgI94RZ*Uu*RVn|t9S@n`{ql3Gs5#1ovO>) zklsQd-| zhQ3vhc#lQ=zR7x1%B)E5q(D6H1n2e5qt2D65(E~A3D)FBS&z^@&XCZSc`pv7Z@-(F z+FZotcM==Hdwc=pklFUIL-lL-VP5t+ACkXNwCs565(dD%l>iYkonZ!8fnLhTF7JWR zv&HR2SybO6WSkMQu$O@(7Wd}9Xcq{ycBl0*rP`Z4JBVgC)j_@8ual?ds;AWAPQj4{ zbEGyf;hvH$JB&5H!o`-t`EYr_np5%va}FYJO3IWL2-B@#_$?7=|GkC_)cu~kGvzJL zBz|f{@MwP6$MNs>?}08ydb&(}wiv z2M#x9)A6y4AS|_}yRh?pfI1*}E0A3a2p36Jj)GS70^IifiBbt%J{rmn_zCjkkiE;fuCdyN?q}#!yHi?NR908@B1Zit#Kc|-@sX!KE7uX`X|_jiNm_K(VT|v$D>%Qz=Pn z{FxRQ>I)6OS{AxfZ9_Lw<2ixNVqYq@1abs)R7Flqr}5{e+D%`Dk+1+f!#05_xo;S3 z9V}eQai(#3>0i&tI^vUI0B7-}1KiiQH05ZS8pxj<&gT3AtnN(w2Eg@p#!xQR@zb3( zxrf#h0JJU>YhprCo@Xt5)-93x&=$|IlSYXjTu_XTcsV)ep_ALIj8~+~elwUS{>=)XjP343fI9)Agupmp!#GGxP7Ab< zzNTXXi7lrorpTxCm~CoUktbheCBFBJ=iQ9KRnZ-d4xk>l`<{{7MEumf8IT-KMCV7O z9lNse3-?rYIz^Fo5wxu0@vIo5W0uAV4~q0YH*Gcb9GCtTf<@cLxl@sNX#>yuZU+&; zk2DkjTO7Ky^sJj%SPTsf8O$24>q)Ebul_2|Hxk{6bBfq#`NCnY5|lT^!EtIdzp(JR ze(jlR1?bdw@sd-$bNvMJob>CpWFd-EQ$%cgg$t*Lq6hu@CP2nn0c{?24D`$qf`bcY ziU36TaS;F@^z%Pu-u%}OfGW`c*|_`v&hhX0JK+BRoxuOQ0b}z3qJD9$Y^@Q!;cH#M z!9g>!%!@RaDNCt7x%{r`@SEtE`(FY_z`=TM`McNafH&1xB-a(xY2>=ju#$%~o@S=^ z*K%*JIPpAjhp%yg+%?a?_3b+wAdT?4+9-B;6-6%dA0yYrKcd6cxvfTkHr+nGPL~B) zid)9mZMDV-P80a@cX#5vTxVL@XNOe;_ECg8ndj;22GscVh^R~DCr(6XcS?|jj~!cn z(%?#||Fe{31OdpMzd0WhD`wMfS}hi{&o1gX%~gauWdFuy zS=p6Q|Niw2;J#XfBw6=FnmAb>b5zF?#t*t76nkXuaW{X|BUJv=R)N~;nZh^ja7p5c zT5>@GG%*L^(R$JGXU~Wyjpc1|BxgL@G`a;3*xC~~-C|ay!Sj0_VRi!Mp08HR|5)UC zVl`gxF9sa{`Uc)~;4i9RB4Ti)Qd%JN4I@v@$osnE?6VA>xr<=Ar&;N$i-b%Uz1HA$M)BMz5eXV2=hZKL#v658o;uyy zi^b;6UXQmJ{0%3#L2&%A;+Vs?EPin~T^h$9#2fZ(L2Gv`U9tE`2u$Ob&j3g}RX)Q) zV2Sm{;Vfa%fZO}#H^vo_U${`bka)>?2v=ilFc~+?+m)KP@DJhK@7n(4{pBoTSfR%a zMS-#o!vk{B2U<2>49?GPvbQbi{IP_g7W8SkN=Of#Vr1ws;EU9^ii3hWX}PhD(|ts; zjFy?|b<*9$_CYyLH9~F+PCuzb2YYcCg0;UoxBc{$`UP)27yDL2#p{W(P`y;yVzibX zi{x!+pPia$mdLCPO|0jXa%gL?;0HNJ=YVA_2F_trcdyIP10MXWAA9P5`mX*iZ#f#N z>zGTTdJ0j(zN4Kp{kXFz!OrYjsy6WWQJ0sHiON|GL>U&+t`;TBiz6an?vXm#hB42N z%&5W@;G0kjRi+w#0%w+F}yM2kUxhA~IaKS&T9CHkAL%2@% zJ250{e6jTG!ktPIPMF1~_uL_W6LJ!PX!3yvQPj5&Ks+EDUnQJ&dGA4CN}=9xg1>d; z02vZ+N>9g%c`Y5$4o4VZg`4?2(atT08J|VMxDWw}WB}7jPLnzqV{W)JaWk{7S23cF^4Vt&9=dAw#(t^f_>H z;+Nv~8{=jX#+BFnF)a>(y$7-tJKOGA`BNJ21)6sDUGdeV9J$hXNj+9to>3&pU3Kn!h zAbZ^ngl6qd+->~6kME=%ZzJK6t{&=g7H0K4x^KT{k#aq+b5-w>T46p@aj6T#i0Y4w z&4-B#R?V%6_kxGqLiV}G-%;`jAF1iVgH{pa7H{VLvCft`f11OKjd?$mC@HYrUt32x zO?<|oVE<&_^`%U$=fiht*SF3(#ork1 zJ7Ol#+3BGeH9{WQO*>U_=pMq2PkZBtpVl>Z_!$!hj4>-R`crvkFD?4sXKTd~o~Z^C zlf8PcwDM~n>JZ9E?yrN!1ycVauTc4BpmCrD0m^#mA=;)YT-CW?_M`**AZ(> zZyIB|QiIW$5OJUN@&wlF-_D{&Q>14rh?~l}FQjca9P<7|)V}7eBYdE?VRX}Et5YF+ zod-f#%d4Bm9Cc*_+AWtZ)KBOW-aK0fz;!cocC(Qzs17FMz6nZKSLGjYulQA5qJ zh`ifi0kX3U&GJhxiQ`P^o`+NSzbV{}ESg#nBD z>}whNQRhh6Ix}PrkBWD1xD4hV+)=%E5m%T$S2RpJA{oTjdpY|3>Z2GTW$c-@%*46s z;!wkTE1i|^q)QqA^0D2(u&P}D zC@3!Y_o6|}%%4xLlLu?3ImojIeTvmsPoP}LXV)j(YIF+ZX#@N__R7_D-RRP2ue_dY6k>(jHJ+{M1W5rU&t>$$7ll8NIbm8! z{pK&{~(zL`Be6J1H08+ z5V4bG*)*Iz}gexrTl-U#6wiH8Y8R z3;%jQi$+!>5fbg(>`xkfx0EW-S7#dbm~HrN0(Dt_-4X~X{%%YFK`dyEAU=ipi&I2D zG>Q;x>u%e=2GmOd;l%9j)easyn)V*R&S+qDZPhS~-~&S$8uF85E3=?!BISTDP_rD^ zjq}T;2#~4XV6nSO?%Lgb{wS~zGb4NISbz4;6a!^1Tf0gW^rwlW8k&DpZ?CWL3Q^Eh z*mXsGGpEwc=BYhH(Ck;!fx;;W7%@B_f$9tA2a|IZx8|X>6NawzIP%2iYTGB%wZAz8 zxb}8`qCvD9d@J!>P(3+QyG(uY5Bt60a52AAjcpn_!4( z0qQd}^W2~*_{cUZP+2L(&mGGk+?kmYi!#}exX3}m}LFUe& zSO5H?;Piw8z4@5o8g1WjvjhyL)zZe&F5vtzv`E(}u!qFBTBCBoq=uQ%HG3<~j`6Zw zKLcMB!37`!Dr*j@nHCixP7c?1#FiIKmwv9=8#%cah`OVr-0UPu6t}G-ZN}>@xCvJA zSTz*doe`P?SD(XsT02{ZQt#F#wAv_*9tl}eoi+!MG>DV zkwA9>vrcDRR$tp>tC?Tr5AkxPdiMD=8&=(Xj5Z8=7OkAQKIy~FQ2!zV;j2;&B@M;R zhnVNp^Qaw{g^Of?-)**zPJf2+DJID_VB$p|YMn9PrZ#`16NjE&O`GnH;C^m3W;I)< z*Pno+p%#gYGxMa3Q zK^GnU#(35qjpUKru8vo6yk}|*kP zwH9`dJN)@%#BHqUE)u&)B@?SJoA;V{4q_g+yRx?<5NHt+s`C0X<4WPzns@*l&P)EK z2bhhI-vNkIV6s*GbeRfmoe5P7Mv;!A+PV{uGo+W@Sz@MX`HjXwpcL1@IbyAj^#-TI zT#`*v_*Vp1?k|ct72{wVYS*Xi@#tX{>V;G;SVK!XUXwSsymE_&ury$=0>TFWeN0H^ zQl1WWi1^Bw_wmnfZCVgbL^tY;)p7D|oik5iRYKXe%Qo99p1&1Z9Ccrzp^RzHdEe)7 z*0NMf){OP)JW(&4-J{_PP_OvBQA=a7vdsZSBqY~n1d^HXZSDAjS5GljwO@Axo+!=; z9uu;PT-MSTEyv|VBbPhwJb*~MaICZal~~Wt6dCL?pUNwWQuXsX^a`c_yzT_kjOxNJ z4OQ4uHY7Ce=S{B(%OP0_B#6-GwHuNSLOa%XPUpRb4U;C)=+gX_l6WNlX~2aO)@%ht z;sTT>wuvK85Y4AA6ZX=5)ufseSbJM;4-o_vid2ejn5BbYkCbiQ>x~ilY+`fQ%!>e z+nXjfcmkOi(PygZ6N*7K-^j`7hSc&YXK^a-2pzeIcHq?tl$(@(he>Esh5gSO=Nhu1TU^>z?Ofa0@#^Z&KDUBH;qcQh0ifc_kGS!)n>hD& zkW(pJqm;}3#fazlGJjSZ=lcn8RAoMuDl+axb9bSd_TD_IK+K)xI))LI;=aauEg>o@ ztxD9l0w$$=JzQFJFJR7Eu@KA;CTvB)+Bnvekk$N4gG#?>4R#==XFLfDbz<4Va zGD}j$9wLtnxJkwS_U@ODs$G2H(uY2S{aZ?+r;~WntT&{J(%N0bSpZr2WxRQzYrt!d zQKEW58!uMWPJgt6K8{Wm_FuyZBJwZkZZp&2%pNgVGhLx)-0SSzh;IHO$hBCi1Z$Q> znz`S06W?yf5f%HcUb-X6bh>u`WKV3zR~zJjCf`*f{IyAhK!#nV=l~X}!R2sWps(kv zgXAlBEDsd><#+$~Hi>`N zqB7?v;g@|9QodA^yJIQ!Q3S8EMvSz_Kq51DRq;7$1iph6Js}#x8oGBL=lAFbVm%g3 z3BVGQT>JrW@=7^S8ypV1KR^hWxJa(V6k%{~MyVKg0*%-^k&`7gTe> zj|So>aw05!?sZRG(bN`qY%f*%lN|9hG&#d_;=-|ND;zJ0ht9WUA2R*CfBbj_tfp8& z5VCVEw#7V#>tkI462{J=ZG!P1-+Z0m^Y5yAC;_RL@i4;45*jCp<~EgQ@{8p_&SIuE z#yCd6I(W8>=dhi1dbF^spSZTudG2)^bu94=GA^%nTLC-M=@Vkthw#WoNIBYP{L zJ)NfqBtlHc4)N>`A}#aEOkh-Q7F!}14nEjMuE&BoIJh1Rxnfj200r6X?d5kJ@8H*v zgrYISMk_1}uagFExdMVRRaKWc=1^uMB?;H`s7vv;9FzRv18%wWU*Ao&nD&sIHTGEI z0oV5R877PLNvDv_5^|GWLN-aHG}$R>930f*5!1+Yfc#OZeAA>C1Fi5Ayg|8Dd<|zv z+Dx(%DF<>}2J|$3d5cR6S;T_V^%mlH>kof4VK8(?P6z#q&6^a_xjgr>=L#)Bt8VqDboxNCq*~r3?OGwY;%uGUJ zVqeLN&itw>j5UIHag^mHG0F%8vtHR71!e+T>~vYZ$QLXwz!*SzPMFx0X{frb zY-D9Te(mRyLn+7;aiu!Kw>pT)QJI%s>oto*!{ZiRt7~7$!t;v>AYjnXXuteCVu(Lf zOvz}KWd-GqmE%~*6*)Nuek52nAuj%v_I|jrl6JBj!v$2jL6XbiV6a7})slmuDz^Xy zHpP3!f8+c!7GNGupmj}^u?ng-qmz<~WcNB_ofXxTLV?=M`qg6>v)u|mSCZ(|UnLfs z>;G$Yf&bF60^LF90!p%^oj3$6n9B3D{R0WTsR57$5?jlEwOj>D6lu5QGo7-l8GD@; zjiz=b9(ZM3Ey(XDbYq{T#R}aM%cwcQllF#%lDdmUn zR|>d(d4p=9H?aSn^FsC8$aP)V{JvR=ba@4x$-gP3BnF=U({2QWa2(473RYEJ%jaya z_&a*aRM1cyLG~XtO1gFAb`Zd(w0NsEO>b`QKWCNXX<~l1O@KEdJBe-eTuFoT`w;{b zH%&aXr?1B*i{EjoBt4AUwKaZ*xhxxxgtNJqdfB_xq?9PipQZ?^){j9M- zjzcnxuWMbvFMllASoeh`TBY*~;1YW?_dEm~p6~jBZXNMdvbUx{*70TvQ|aY<=3l_Dz{M8ZL|!JSq|t{v!{vlvgJ?OARZ~jmS*)Gh z?S{O!mj4+r_7k7`~EncYPINKFM!f~<>h)!CyLoE z7wRMJY@mPC?k!L6TUYeg+$NpldRe6+<6(0m69>*j4W+= zJ;A!Kjk8qU1D;FkP-9t_jI(9LigwvHDK}_|9d0uoP)HT$jJmd$B!oczOp+ zJN3bEHsJS~VsjWILOb#4*HrcBUh^tPhtn{vxkbrE(mkprz47tnfww0K2W@@A4inb& zfeLyuwi@jHkCAbeQm}NmCXQNYsJZm4g>=$`onr}b8naD#HZyG9DkPzHj zQdk=a8g4J7qiY-J!PL;Liv~I{D%Fc0J>77)1hI4oC6iC`5gv|rM}mxX|1`rYE@!Q;GDcehGzd+2MMru zVrGVSV%qgj9xHNE*|@HHWWdE*^W&qeBu#^(N6yeN!@+mWye>$Ht4ZE44yz&vMwkmJ z?F0ZW&qp@{pF4+2+=)#SrF0yn0`{y#*y@Us-Rts195ZRh$W#jTu%TDZrH2=YP;a7)Pz5o8vOY%lS=u9Z^U zmz1%j)#m14VG%J@yBWzmZW#~ln9&?Y)wpdB*)})FoMjxmYA8ua37AE9H}TR^`1TMT zxkb|y=re1;PGPAIU^jr{OXL66{M{^;EKSWFxHmy&lu zYbvU{w_nzCo-1f9|JuL+S+n6pr{itBPJH_zmnQ)O$j0otKJE;r^14As>z`RF;Qjda zj24AfJ#Ip+StG6=^@vkSTCix$bu{c>gb4QzgaJg1AFCrB_)cm*)Ia`BoF;BVt4G6a z-fG+%u*q;fRx!6Cem-Ndw?GqlJ*d*7DqGhECTdFe{7dGyK)Uk$ON?&Z=fBdE`S@QC z`hVM7)~g=s(Dpd-8KkXu5z=ILbnSY%f@*K&{4K1t$@#S-XF-k1^TxD5|~QjSE<6l(M1GoPvEb z@qhQyR(Ef?{$><%b9N&UH9jh%mYMP!gh-K@Sa~1!>NejB=lN?W!IjItm$}gb1{8jw zj@yZ<)l+*BXOE?TBYfr54+&dcw~L`0?_=WMD-6ncN00jyr4k`K$pdx5eLvL_+%J}< zF_(UPE;(=4B>@}Mv4aaF+s$YemRiU?J%n7mzBd^U8otLGEmiHubNQfgOR|K9kVBf4 z`259sd4TNB3r2FRG*!vwyb3$m*)&7W0R8eoqT^@-l`9uf8u-YofSK3V!gP`;%9_fk z$)Ex{JUI1P*uxXmbCgauL-8&gMLqn4-d9)r)$yCnyOP^hkD0hDCuD7!C!wo;_4=be@vxUWvyh#-3OS31+EGp}3OfH7 zIn8|N?_e?57vWQWN2&LH6kjnkEls!S2Eqsi`|og*$6XKa$UJWICnG-)7qum{zgxDvSQaOmb0<#UYlN#Nhp%aD=mOaV(>PJGE6cWYV0^WS)cR3 zNf)Y_DMHK8MotQ9|4~F?k2K0(P_(e^&~61`IW&|vs*sMAuOk$&qRdnA9m=%ZXFnb` zcDD~B+$mxc-EvZ;C`B5XvD3PANxM42O4R)<;qg6HMpajeaJj-gf3|W>(Oaqr`+{KA z=8C;{PUTjS%{#{*GIX@~P~B8LH)8z(_eknz>%Icg#aiRuOy(->14dIO`Pa!02069G zRXhD`rF8OExSX4(h54@IYw`(4mZe^O%EpvPHF1p-WBV&2=v4ras5T^KPnp0G@qfDb z-X-tV1v-s(JIW>-3!9gV*SG3eo_^|?1hNudJ{W>5QwMp<8aSddS=Sm8S|GVNDWd5c z(b8fz4IU=<%MrY#6vpFk;y9-Ak`yeZHUMXBWSfPYR>;28lyY_E)?l|@)OM9s_RnHn zTmPY}nPB~+4#)tLTr$uok9eEPnl@`Z@{hB9J*>b6J*_QPy4>GuwKjXsL^=)R^OOS( z*|m|OGWO+fE98)(?8vLIvR^45v|I6p^4aWDTtq}!?P~u6 zL;w3ir+$=u<*A!K{3~{`vSwwY+xv)}ZAu?*!_V?bx&qVuN0pc1?<*dIKIQ19hBZPI z5aZwVeYeqwIH}1Wu*#J@UH1AP#eHW~Q`@&MM-O5HtZ=0M1p%c?m9Ah=P(XU`AOeBV zBZOi@lqw*-gMcIyDItWAAiZ}IN~qFnXd$$~-Ei(0cigXUyf@z0wddG-?X~8bWz9K% z)3D*`k$rAX=|UX0W7D(snKFBiHtD?B_;`F2N9suhXp#wQCLH+LrD?>$`=UbUIW-%J zCGQR9zv$*`9ZtD1@eOb&V;_$!j8|4YX!q@_%-d$Yu%qA#sW8sDApw2OB%-C=;joSi zVo+K}Hoa|5@@u=bv~MxK@MG2sD7m;7wo*XsP-+4BIrnefZ>j4^Mjnpt<@#!sfBeBW zkFnt>rMQzLB%ll$ej}@Vvkz!d>Q{tsk94xz|FG|QKo|XE700cDmCv1;M?>Jx63&;T zz&7M!j`sWJw;8gY^!P)f*PHDgEJ4=DwKbISoL8NG}qTOh`-H%F4? zs^lgmb`lp+Fy|-&-#TxcMfzhuSh$5a)m4dL%k3WOJTQFVmZ&MGj}XuJrls~~?S4UJ z;^M^4d^<0fxor7CWG7$oiy*fs`5(XJD|w#Oj7#(JNT3pqsi|!oSboTQ3dJ%e zV_uYC;x7wPl1)D$X?pfc_?e^|MGyN`fVT6kX2Q>}CgIQK-&jWl(|i`Kqm(BJ*0{=? zzqRggIxgx5U;>}+6p)`KQS3{G1RWBEP-9{M`oiGgUT+hGvhYw&nm~ zNe#U)Nb+Bh%Lv#VaY2p0Mw(>6)@7a=yt~o}Yw7>w`}NGiYi@lsrytg&yuF;I67ohz z=>Gl1<>edoPEPO@*E48L;H4JL4@z(+$A<{R5~i>wM#a6Uwpc#Pz|&j%s;#C<0_nWs7l}-Z7a<3qLoW^~QOzVCMc1@&mV$J4{(&GdUZj=iam zCzC+ai%Mh8w`?b$-339vXd{-u@#>x>;77SSH(gM}IegQFvTp`UN1b_A<5=&hV0d4e z-F#&{R>q@g{mqL-Vzsf=+ontaS%#^TJkoAjE3kTIoA4j+P}647>VH--4d%)zHnaGfe40nQs9Nki z%bJlhp%8!&0*PBSCq+v*(Vb8DqD&El$SgO){d6H z-sHobP)X8KQc}{=tdba?HNUMkJ`#q613Fu1ZTMRS8SS+8q41%dic#Bdg_E0uJw4y7 z&(&XtBn-Pq6mJS;_z<0VD@GpdTuo)){6xl@oG1s691XhSVvS&psG&vf3G|quZH;uw zE?WglM}PxMdX7d|uix+lDNWJ1X5fx_K2js(6C}l5xNPB9OKUL(lpvjrIz1Ne1k5gN z!>=1e)Hn^U4wug4CRoI%}vJ_!m zw?2L&W=SoY;K<(7!ScpLNd{e-SZBU59e|E#A!m(yHf%OKrsp zCwz!5s$FwAT_5J{Vp_&&_uX8@C0%>QTj097X_U`%mGLGEM}(wSQ#B+{ZcH>@N+H^E zYa{R0ZmNG6`8V(jG{u*B+7JL9CuPi2%h?&BJ%$T7bS}XfB>!4=Lq7AM__AE_QxLv$ zQNTr#Zm^x$iQ}F8E1*R9&zhuiz5zs{8{tjsBfD)WF5VS><>Pk697dPa^~vY({0dt+ z1LW>bI!0M_Q6sq8XZh?x)Gb#)%|gLzvDY?A;Wb$4cyH!e6o-(85&n^noh`yM>@Aeo zzkEqG^7FS1p`qpEr_SrfI2LFt6P{>-l`LI~lJlsD_?wRXz*WtXCUs;%8x&HN8Sq{m z@^%?Zn3a;0mh0HqVKuX#2~%KK=Y|nD=yNH*G%7q!fFenncL3&$TuJu1*+|kd?ivK+r+lDdw_{pPrX+F(V zAaDEI$qfUM{P&s*-S5JFonG8e@xO}M*EiEF_~w8Xp?u?ky4@?p5if)V@1OceR%+ju z55aCDdVa{3n*yIshiDA1oEAU=8Z7)@`tBbg^GnTHC_t3^{~f_kFaY*xV`Jmt zAr_}TvgV^7uwO%&fR$i(M>9^27IgD9$2~fP5C%mD^U}3w@Q4_aRTTS_OFQ&`#02~* zLIk&Gqpy!wqGtMTck{{Pghs%-%(Z(>04R{&mD7Ktd95>AQyp{?*h8uGia%*kNpj}! zcUVn75#l^NNP~{KhZGtLoe?IgIc_gEFe)AGphZ&Iaw>_QMsc(Xt(Pte|T9y(Y!)@ zneA0DPyA)ycG(&D*@t+686DL92raO0W=t|chOU;`cQAQeK@f%fH8TFZJ6n09U;O}# zqLQx9iZ>Tb5mDRieDb=7*pn7W#v3wMa158r8O*p`&ebdZBBk=Ccj1!#L!~=%y#@Rc zYmtuIU)<5A3w^Norh=sAw;{>r;#kuI++8A}@LYrO2Pis^5aHD0G?pm;95_Mll4A(* zXrQGX5C!$5L`6sNOYhISj-+nR(O05Lshpk;@`Gp!2Obq?sN*=81?*1BMz8>h% zclY#Pe&15ZaqQ*C%}IZ6OH9TS{&px=+V6KTj8BUr16wD?(ixQ_WHCcDVB3(`?4Gmk z`7+^c_Q)QL@bZ272;NfuQm0Cqo|n9~XB}jfrb5)QEA|YnI&KCJn-(}Z+}iZ{I_{?; z^LcLnCF|xIlY*Z&7}*1_|HT$nqUwDrx#x$dsx@i}g~XG+ng=DEPiE zTNxL(q=H9kjY|$En2%jk$kjnXq|UaL+P(4&>T0~Ht9HbEL8V4>y(8j-_+j*Zph{}|xfuKM6pkF>u@doLEUP0YZ zms2ATKdz@~D_m>eY_uC4G_E0@J8s~gs8*p5cK2m^ZxF{igSEI`Gx;{83E5Xf@0~fs z_kkYnd1vZ;GokY`Ysb}+1)s1YRkn;tnKLs^N5I-bVSm$Zrj5~plb!Q;1B@?oUWZrh zlKaX@f&S~$u|bF9hcoa#(q`qJK_-J?xB02 zjZI5iAGC!p;`Nm*1KO274fl}#=5vN=xH1&s_VAsE{20jzCN0`DjedSV8xg1=&}exagdO6K~;hf8(caJ)}CS9IWLr zV3&Uh5Q<0D*1rkC4NU=^RuFOz{ZT+42|@OKR7{Va%Is51l0<8CIWcvxzv%{{BiWax zHji{1X8x*;tSsoxDK0oPWT(GtZT5+`k7eu!{}mR5t^H02qcfXw+VfnL{sr6gvxxF< z|MupV7CxZposUnq;QP3%AwFZc_UJD4ur~dHz(D%t!hi+%k>RB9fD~E8zU#GRq4{x? zWt9cQ)nYTUtT=Az3P%PjNpPhs!fdv#K3B5$fhW?0FI-3c-i?G!tuvOFk8=vd`xQM3 z+FhO98`<9Ck?x+C@{o*oZc2zZN0^+_(7Ywf%q4l>b+i z@voiF=|$xeqyMNC*gOcw_1Dy!3{gWK>f=5L*5eOni>FoqkM5Q1tiF}@OS^2CDXY0Y zL9D5|8uomRHTEQKba*%}`MYon{zb6-vTahoOs0s=<0Co#dxT(i) zk0R*zknXr(AI_pBB<@GKDz3=OL>?HM|qH_cLL+ z@Nb0(^W7ADr5YALRE_8v!L^tdoSG=bqO<7LYUAntg@{80m_LGvwAqpv^yPz%<`-Slh#cqnd?40^? zKT2=vI?VcKihE>F1!~%glERxab{!!G&yo-*<$+?0;z!BDLngH*Fv{g;wmqD$eanT# zW3FX4OOcG*kM91_l9q+wBfnwx_F0_cP;$q(J~Kmqs)*uqYW%1prI#tS;P`NAQaZy zN9$cS;7m`dlNKq2{2q6FyvUJ(?D2$l+(ni@&K^P)KLcN^xwgi5(kiuA(SjDQ&dfi! zN+P2J9}q}>SxPLfmGnNCv}5jsW24Nh3=F(dRiM&~Hit@$j!%Bcl@zwP6>jF!b9Z_r z29s@`&InWRF{H3MmE7IcYseyELIy@w1550?C+6=0O*|!PT_JwF!;_SHzdquTwdYB%wlNxx?1OL2>sSIoN%e)hJVmr!E)mON6*cGzDTkVH^a%c$M3F6?xJq` z{bx>Hi#IMLIY2u)w#+_WE3Tw&#q3g)mf^k7dzAfE=ksku03K&c$z+x9TsOWefWItq z*99q;p(e)}m+|%_YaAD9`_-4K3S^`T#sMrHrFgIiG=XSnXfUQ>u96R8X>;pH6AQjX z92XL4wC5FwVL%68Yz(hYGO~*J1-^uHx#bNBskq2DsvirMV)_OOlTOsL->*D=W*3{M zlCS4mUF9Dl_b6N4uXOJ|=MJis;nRF&N6$c zI9w3RKBng;7$Az*qG#b5U&WedE-n{jyHzl=t!s(Vhc1r?Q<-Jrdbu-pFV}8-A@WXI zvVIB3+_h+Z)OfJ4%}jb(i1iyK%ioT+E~|Eaemmd%B#hDH-p@3Bv$(4R-ChR{02qfy ztOBtyOln0Tp)mb6Sw3FGE{Ub59Kl1yMPBSZP#lth=xjfll` zX}BrM7diOd7K1X*%UBBRHQS)c-%3Vu-0ja{&iE&_f5WOy+x4fr%PlT(KlM0fcs&<4 zae6Tr;nNZsOodb>uX}z+TyC2mo?@zHQ~#O$8mkiKFH^oNrL;aTL>ppiJY&NBS+h&l z+sr+s!#jV|Lt6eeMRNI41A+Chiw_e!C$$9VbiEE23$a~V5k-rG zg#^=JAU3BfP~vh)p6j!6ACU6icefop0n-4p6X{v#2} zH4k?SIz6Ekj?g2`Aan%8uFPd|Su5`lTEu*4n%d#wt<~682z;-z74iGV{Sxn@4417n zlRNq|4Fl;Iai4jege41umKaB5?h76|yg@heHlEdVcL$pmSdeQ|0)$ zmcIETP>RBsx(MG1YvK_rt^4qwG=H9dv{R}-Kn6;|8?BGiJKtaFzoYN0r`}JI1~;JHU>e5qAY>y^^F_?W{=GR@=Hv-C~S#6dS1a)*C_(9QedO$$mN9=f%ADrNmhw_phlNs3gqi$)HVEeOS z$uE=7;~tB`jV0e-#rpvcv7=Z!FjU%CC?Em~t7dH1CI<(aSyK35bwB^4?H3)JiC(io!hgjYzplc&StZL~B?0MFp|&yvmGY}>iz6rX*2E>j@o25uWH zE3eNGWKCoHLNW{X)&x?Y0Xr-mV#jLjqmCyS5sl>OVRYou)_)j zIQ`Z?c^Zn`t8rYHFHf6OCbM47n+}0{I>JqvMixjwYlj0~KJ<3}nQ3)vPhQgs%H( z<$m-+dBLxuqJI>|h;Rjw{Ng}| zy+M~_m7rzrLV#k*so{v diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_service_principal2.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch1_service_principal2.png deleted file mode 100644 index 17edd57bca96e7042c633258531525c4ea9098f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63610 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 b#L?gooNuL#VR-`AXCV7pQL)~ToVl~+ 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 z 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 JTEQ~xzX099b@2cI diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_admin.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_admin.png deleted file mode 100644 index d49c21f21823323a94a9f36ba0f18db41d9b26be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24680 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 GhbMaS3|C8Xdu`$)qSJ^-U8X=6QfGnt%8e*# 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 diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_consent.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_consent.png deleted file mode 100644 index fe94ed2b52ad05ad906cc3faf0d7aabe432b3539..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 52940 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

    `j;MffJ{0869rkH<$$hZMTBo)$!q~*4TBKVD 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 diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_login.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_login.png deleted file mode 100644 index 12ec948ae11181739ab1b35173fa3fd29c97e76f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35175 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%0D@jZ%|=026dCuc!i-o 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%0D0x`nw%MkV!tcGe7 z0_OG^d(|L~k>RQKJ`R)(YnLOJW$B_JZ#JEhU;H^9#X#`GOv@FcO8eW9-K9&H12a#L z?(|Es` zwQ9vGVsOGL&~{Rg>1c7v!=?UuJYeK=gGl&JPmZGv@F{82G7q+^V_(h~FIDvPd06^k zGk8MTVL9a$Ds(x8Y9PGqoz(hnY1qw@nJWyVL^&hr(gIkwG4DK)%`>^*)fQGxO4DTNNH3 z-3q@bb!0|V8O}V+B!vGCV7aYk{$r8h!-0=8$d?T!u5s&Xvu7i-A-#hI=T~G;7v^uS zXS}T=ol^I|N;4YusgN`cvdcecW9&d4#0uQMVKQ#O;$+0KX?1y@w)U01?>#XB*d6Xy z<85Pa*VB`9@5qx;2!4v=NX99qp<`L>|I~B%Uc0$}CgI}mZ~0r{@!xk^d7>=}oMKY@ zi&M;>hv~ULt7*EnevRVA>`iZ)PAg-h8z$>2Tto$CLyIhb-7=?8UB&R9R^BJI47Y?= zkEfMAn7j-hcV)+weE-yCm_dF6x$)l4+bXdFAa4H1GCBNrkE}1#t%zl{)F0Sn%5-E6 zAoz@oW`D+b7~KIqB)Z>q5aQQ!I$ffPR!=Y33&k}fper&C|t&`@g%&9gYW#_&YjT!)~QT!9IuyM!=YbD zkDQb>TBdA)5QmV&Sr>~5F>hqYuZo=k8k4+z6D0z)oZEs*_KpsBKXkGKMsnW(T31K) z@UA{AQVB)C5Ux9IR`l^oV-{8fGAAr08o<^2k7Psn*W33B1!;w{@j;2hqsA?g;>P9S zXIXUgO-P+j7Ow)z1U-gZ<0N~E!GKR70iPvV+mM73~$2xQ? zmZiwGYP>bfx`{2QkxX`6`ZFNbjC#*>K{VVEjrr)%02336k427ULO^=(S|AdpE^-tjj$)GNqa*U)>|)8tadXG&^}B@lUl?%1y}SYNN*e zz4^dGco5P@vwG6y7=a)lHr*C#*(ABjcc$^=H~Is!Z6;6M6g-~))FTGx);hS+n+Hu` zWk5b3H4A101if_YQ5kN60Rf>*|A~F4G$y0Fy({1y`Eh%%W_0UMSGHVJE)`N1FGA2j zdcp8ZmMJ$;peAJ`!-Wy{^-L%qDH)XZy>jVGSf&ULQjHz_u?;)v-tA$!GU=>-bok

    PFDE-p(5H8qhP6Dd~N~NFU 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

    yBVJ-CvMwFz66Cx8-D-q13vu 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 VEw6DNjSR!`#Pum38EJz3e*hhg{%8OI diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_topology.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_topology.png deleted file mode 100644 index 6abec2db4ba34f11a0ba683c6f57783a162a1a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26517 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 C6uvhA diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_user_list.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_user_list.png deleted file mode 100644 index 2eb0e50472c119951488b198ccb6c960e7c2ec7c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28961 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 b)+(0v*PhJo5Z%84-SNfq*5~kNJa7F6gX&If diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_auth.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_auth.png deleted file mode 100644 index edcb1fe01e9a1b18a39896e20c6b1ae07e4339d1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59688 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 rnN~+b{nE3OrzZ diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_config.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_config.png deleted file mode 100644 index 45bf8e05c477442b33265059d034e5a392c25bb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 71414 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%0Ddnc6gsozlVW!1%_o-yZ#P$xTCc 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 z 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 Ah5!Hn diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_cors.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_cors.png deleted file mode 100644 index c6f49b3deaad1e00ec20e9da509325b2d8cefabc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54909 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 diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_deploy_static.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch3_deploy_static.png deleted file mode 100644 index a0de986179efdacd999c97b65abe029af9bcd7b4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43204 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 - consent-flow-single-tier - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/topology.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/topology.png deleted file mode 100644 index 6abec2db4ba34f11a0ba683c6f57783a162a1a25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26517 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 C6uvhA diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/angular.json b/6-AdvancedScenarios/2-call-api-mt/SPA/angular.json deleted file mode 100644 index 8d2fb7c3..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/angular.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "$schema": "./node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": "projects", - "projects": { - "SPA": { - "projectType": "application", - "schematics": {}, - "root": "", - "sourceRoot": "src", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "dist/spa", - "index": "src/index.html", - "main": "src/main.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.app.json", - "assets": [ - "src/favicon.svg", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - }, - "configurations": { - "production": { - "budgets": [ - { - "type": "initial", - "maximumWarning": "500kb", - "maximumError": "1mb" - }, - { - "type": "anyComponentStyle", - "maximumWarning": "2kb", - "maximumError": "4kb" - } - ], - "fileReplacements": [ - { - "replace": "src/environments/environment.ts", - "with": "src/environments/environment.prod.ts" - } - ], - "outputHashing": "all" - }, - "development": { - "buildOptimizer": false, - "optimization": false, - "vendorChunk": true, - "extractLicenses": false, - "sourceMap": true, - "namedChunks": true - } - }, - "defaultConfiguration": "production" - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "configurations": { - "production": { - "browserTarget": "SPA:build:production" - }, - "development": { - "browserTarget": "SPA:build:development" - } - }, - "defaultConfiguration": "development" - }, - "extract-i18n": { - "builder": "@angular-devkit/build-angular:extract-i18n", - "options": { - "browserTarget": "SPA:build" - } - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "main": "src/test.ts", - "polyfills": "src/polyfills.ts", - "tsConfig": "tsconfig.spec.json", - "karmaConfig": "karma.conf.js", - "assets": [ - "src/favicon.ico", - "src/assets" - ], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css", - "src/styles.css" - ], - "scripts": [] - } - } - } - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/karma.conf.js b/6-AdvancedScenarios/2-call-api-mt/SPA/karma.conf.js deleted file mode 100644 index af0f20e5..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/karma.conf.js +++ /dev/null @@ -1,50 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/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'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - dir: require('path').join(__dirname, './coverage/spa'), - subdir: '.', - reporters: [ - { type: 'html' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml'], - port: 9876, - colors: true, - logLevel: config.LOG_INFO, - autoWatch: true, - browsers: ['Chrome', 'ChromeHeadless', 'ChromeHeadlessCI'], - customLaunchers: { - ChromeHeadlessCI: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'] - } - }, - singleRun: false, - restartOnFileChange: true - }); -}; diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/package-lock.json b/6-AdvancedScenarios/2-call-api-mt/SPA/package-lock.json deleted file mode 100644 index c57637fc..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/package-lock.json +++ /dev/null @@ -1,21060 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "spa", - "version": "0.0.0", - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.5.0", - "@azure/msal-browser": "^2.32.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } - }, - "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", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "dev": true, - "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/@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/@angular-devkit/build-angular/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-angular/node_modules/rxjs/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/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", - "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/core/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/schematics": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.7.tgz", - "integrity": "sha512-nJUJXCBQr7rmVn6IXFAXMCWAB1w6JQmFGuFVW0G3GH/A0e+A3ttzJc6qVLYluqaFoafw394cZu24YJo55E/+Zg==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "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/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/schematics/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@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/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.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", - "integrity": "sha512-tABt1EDwBHm0ngsutdkXXWgPgHzapGLC7rSPHXStMc24ngViFZpXGzBCpompjHvXNt6bjklmJmuRvjS6+ktBZA==", - "dev": true, - "dependencies": { - "@angular-devkit/architect": "0.1400.7", - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "@schematics/angular": "14.0.7", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.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/@angular-devkit/architect": { - "version": "0.1400.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.7.tgz", - "integrity": "sha512-8dv/Ql86dHajsHYjjr5jvpiV7uXWbt7Mz4K/rGiOi+zzDNKPcZcuCejulWhOySDcCPjT/an47Qcwr+awL4Wr4g==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "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/cli/node_modules/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/cli/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@angular/cli/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@angular/cli/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/cli/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@angular/cli/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/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/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/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/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/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", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "node_modules/@azure/msal-angular": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.5.0.tgz", - "integrity": "sha512-dRA12lcrd8cg9xsrAJDWcwlE6UUJA/OYaqBHxUBfr8/LKk80x4ZyqmwFGwUZZ8CAJvFFiviCrQFeW6aQB+SsBQ==", - "dependencies": { - "tslib": "^2.0.0" - }, - "peerDependencies": { - "@azure/msal-browser": "^2.32.0", - "rxjs": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.0.tgz", - "integrity": "sha512-uDP0vNmIefM6+RjILGKu+zOiN+VGnEvxRfUIV5hOWOWLLkG7kcDPYG/v/EJMoG+R5DYW9jXA5nvZT76t5HdEAQ==", - "dependencies": { - "@azure/msal-common": "^9.0.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "dependencies": { - "@babel/highlight": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/generator": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "dependencies": { - "@babel/types": "^7.18.6" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", - "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", - "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", - "dev": true, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.12.13" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.3" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-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-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.10.4" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "dependencies": { - "@babel/helper-plugin-utils": "^7.14.5" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", - "dev": true, - "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", - "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/types": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", - "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", - "dev": true, - "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/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true, - "engines": { - "node": ">=0.1.90" - } - }, - "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/@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/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "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", - "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/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "dev": true, - "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/@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/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/@schematics/angular": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.7.tgz", - "integrity": "sha512-I0v1gNFpm9ReL/hUzwjjOa+hk0qvlXv/vjITAWnlUV5dba6FZxzwsrTGsGO6t5XMNsm6QtwpDYDRdy9uy/n/1g==", - "dev": true, - "dependencies": { - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "jsonc-parser": "3.0.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/@schematics/angular/node_modules/@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "dependencies": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - }, - "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/@schematics/angular/node_modules/jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "node_modules/@schematics/angular/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/@schematics/angular/node_modules/source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@schematics/angular/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/@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "node_modules/@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "node_modules/@types/express": { - "version": "4.17.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/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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "node_modules/@types/mime": { - "version": "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": "18.11.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz", - "integrity": "sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==", - "dev": true - }, - "node_modules/@types/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", - "dev": true - }, - "node_modules/@types/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/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/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/@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "dependencies": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "engines": { - "node": ">=8.9" - } - }, - "node_modules/adjust-sourcemap-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - }, - "engines": { - "node": ">=8.9.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "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/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "node_modules/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/babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "dependencies": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "engines": { - "node": ">= 8.9" - }, - "peerDependencies": { - "@babel/core": "^7.0.0", - "webpack": ">=2" - } - }, - "node_modules/babel-loader/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "dev": true, - "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-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/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "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/base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "dev": true, - "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/big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "dependencies": { - "fill-range": "^7.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "dependencies": { - "caniuse-lite": "^1.0.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/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "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": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "dev": true, - "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/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - } - ] - }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "dev": true, - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "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/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/compressible": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", - "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", - "dev": true, - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/compression": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", - "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", - "dev": true, - "dependencies": { - "accepts": "~1.3.5", - "bytes": "3.0.0", - "compressible": "~2.0.16", - "debug": "2.6.9", - "on-headers": "~1.0.2", - "safe-buffer": "5.1.2", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/compression/node_modules/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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "dev": true, - "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", - "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/connect/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/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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "node_modules/cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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-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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "dev": true, - "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/critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "dev": true, - "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", - "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/critters/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/critters/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/critters/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/critters/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/critters/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/critters/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/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/cross-spawn/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "node_modules/date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "dev": true, - "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/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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true, - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "dev": true - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-equal": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/dns-equal/-/dns-equal-1.0.0.tgz", - "integrity": "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/dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "dependencies": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "dependencies": { - "domelementtype": "^2.2.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "dependencies": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "node_modules/entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "dev": true, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/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/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "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/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "dependencies": { - "websocket-driver": ">=0.5.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/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/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "node_modules/finalhandler/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" - } - }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "node_modules/follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true, - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true, - "engines": { - "node": "*" - }, - "funding": { - "type": "patreon", - "url": "https://www.patreon.com/infusion" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/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/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "node_modules/handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "dev": true - }, - "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/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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "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", - "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/http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "node_modules/http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "dependencies": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "dependencies": { - "@tootallnate/once": "1", - "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/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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "dev": true, - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.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/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/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/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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/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/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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.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", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true, - "engines": { - "node": ">= 8.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "dev": true, - "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", - "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/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "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", - "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/istanbul-lib-report/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/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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/jest-worker/node_modules/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-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/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true, - "bin": { - "jsesc": "bin/jsesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "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/karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "dependencies": { - "which": "^1.2.1" - } - }, - "node_modules/karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "dependencies": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/karma-coverage/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma-coverage/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/karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "dependencies": { - "jasmine-core": "^4.1.0" - }, - "engines": { - "node": ">=12" - }, - "peerDependencies": { - "karma": "^6.0.0" - } - }, - "node_modules/karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "peerDependencies": { - "jasmine-core": ">=3.8", - "karma": ">=0.9", - "karma-jasmine": ">=1.1" - } - }, - "node_modules/karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "dependencies": { - "source-map-support": "^0.5.5" - } - }, - "node_modules/karma/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/karma/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/karma/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/karma/node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/karma/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/karma/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/karma/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/karma/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/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/license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "dependencies": { - "webpack-sources": "^3.0.0" - }, - "peerDependenciesMeta": { - "webpack": { - "optional": true - }, - "webpack-sources": { - "optional": true - } - } - }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "engines": { - "node": ">=6.11.5" - } - }, - "node_modules/loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true, - "engines": { - "node": ">= 12.13.0" - } - }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "node_modules/lodash.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/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "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", - "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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log-symbols/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/log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", - "dev": true, - "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/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/magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "dependencies": { - "sourcemap-codec": "^1.4.8" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/make-fetch-happen/node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "dev": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/make-fetch-happen/node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/make-fetch-happen/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/make-fetch-happen/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/make-fetch-happen/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/make-fetch-happen/node_modules/ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "dependencies": { - "minipass": "^3.1.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "dependencies": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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": "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/minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "dev": true, - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "optionalDependencies": { - "encoding": "^0.1.12" - } - }, - "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/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "dev": true, - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "!win32" - ], - "dependencies": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node_modules/node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.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": ">= 10.12.0" - } - }, - "node_modules/node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true, - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" - } - }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/node-gyp/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/node-gyp/node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "dependencies": { - "hosted-git-info": "^5.0.0", - "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/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-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-registry-fetch/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/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "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", - "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/ora/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/ora/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/ora/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/ora/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/ora/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/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "node_modules/parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - } - }, - "node_modules/parse5-html-rewriting-stream/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "dependencies": { - "parse5": "^6.0.1" - } - }, - "node_modules/parse5-sax-parser/node_modules/parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "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/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/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/pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "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/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/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true, - "engines": { - "node": ">=0.9" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "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/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/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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "dev": true - }, - "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/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "node_modules/resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "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", - "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/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rimraf/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/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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "dependencies": { - "tslib": "^2.1.0" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "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/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "node_modules/schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 8.9.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/schema-utils/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/schema-utils/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/schema-utils/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/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/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.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/semver/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "node_modules/socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "dev": true, - "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/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": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/source-map-support/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/sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "deprecated": "Please use @jridgewell/sourcemap-codec instead", - "dev": true - }, - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/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/stylus/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/stylus/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/stylus/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/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "dev": true, - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "dev": true, - "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", - "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/terser-webpack-plugin/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/terser-webpack-plugin/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/terser-webpack-plugin/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "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" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/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/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, - "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/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true, - "bin": { - "tree-kill": "cli.js" - } - }, - "node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/ua-parser-js" - }, - { - "type": "paypal", - "url": "https://paypal.me/faisalman" - } - ], - "engines": { - "node": "*" - } - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - } - ], - "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", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "dev": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/wbuf": { - "version": "1.7.3", - "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", - "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", - "dev": true, - "dependencies": { - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "dependencies": { - "defaults": "^1.0.3" - } - }, - "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-dev-server/node_modules/ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "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", - "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/webpack/node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/webpack/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/webpack/node_modules/schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "dependencies": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "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", - "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/wrap-ansi/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/wrap-ansi/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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "dev": true, - "engines": { - "node": ">= 6" - } - }, - "node_modules/yargs": { - "version": "17.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.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/zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "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", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", - "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", - "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": { - "@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": {} - }, - "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" - }, - "dependencies": { - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "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", - "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/schematics": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-14.0.7.tgz", - "integrity": "sha512-nJUJXCBQr7rmVn6IXFAXMCWAB1w6JQmFGuFVW0G3GH/A0e+A3ttzJc6qVLYluqaFoafw394cZu24YJo55E/+Zg==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "jsonc-parser": "3.0.0", - "magic-string": "0.26.1", - "ora": "5.4.1", - "rxjs": "6.6.7" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@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.0.7", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-14.0.7.tgz", - "integrity": "sha512-tABt1EDwBHm0ngsutdkXXWgPgHzapGLC7rSPHXStMc24ngViFZpXGzBCpompjHvXNt6bjklmJmuRvjS6+ktBZA==", - "dev": true, - "requires": { - "@angular-devkit/architect": "0.1400.7", - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "@schematics/angular": "14.0.7", - "@yarnpkg/lockfile": "1.1.0", - "ansi-colors": "4.1.1", - "debug": "4.3.4", - "ini": "3.0.0", - "inquirer": "8.2.4", - "jsonc-parser": "3.0.0", - "npm-package-arg": "9.0.2", - "npm-pick-manifest": "7.0.1", - "open": "8.4.0", - "ora": "5.4.1", - "pacote": "13.3.0", - "resolve": "1.22.0", - "semver": "7.3.7", - "symbol-observable": "4.0.0", - "uuid": "8.3.2", - "yargs": "17.4.1" - }, - "dependencies": { - "@angular-devkit/architect": { - "version": "0.1400.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1400.7.tgz", - "integrity": "sha512-8dv/Ql86dHajsHYjjr5jvpiV7uXWbt7Mz4K/rGiOi+zzDNKPcZcuCejulWhOySDcCPjT/an47Qcwr+awL4Wr4g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "rxjs": "6.6.7" - } - }, - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "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" - } - }, - "@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/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/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/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", - "resolved": "https://registry.npmjs.org/@assemblyscript/loader/-/loader-0.10.1.tgz", - "integrity": "sha512-H71nDOOL8Y7kWRLqf6Sums+01Q5msqBW2KhDUTemh1tvY04eSkSXrK0uj/4mmY0Xr16/3zyZmsrxN7CKuRbNRg==", - "dev": true - }, - "@azure/msal-angular": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@azure/msal-angular/-/msal-angular-2.5.0.tgz", - "integrity": "sha512-dRA12lcrd8cg9xsrAJDWcwlE6UUJA/OYaqBHxUBfr8/LKk80x4ZyqmwFGwUZZ8CAJvFFiviCrQFeW6aQB+SsBQ==", - "requires": { - "tslib": "^2.0.0" - } - }, - "@azure/msal-browser": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-2.32.0.tgz", - "integrity": "sha512-uDP0vNmIefM6+RjILGKu+zOiN+VGnEvxRfUIV5hOWOWLLkG7kcDPYG/v/EJMoG+R5DYW9jXA5nvZT76t5HdEAQ==", - "requires": { - "@azure/msal-common": "^9.0.0" - } - }, - "@azure/msal-common": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-9.0.0.tgz", - "integrity": "sha512-uiFiFKVNTsRpmKio5bcObTuHcaHHZB2GEsjJJN8rbJNmzoYuZzNioOoK+J0QK0jEasRBgAoR5A8hSty2iKRzIg==" - }, - "@babel/code-frame": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", - "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", - "dev": true, - "requires": { - "@babel/highlight": "^7.18.6" - } - }, - "@babel/compat-data": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.5.tgz", - "integrity": "sha512-KZXo2t10+/jxmkhNXc7pZTqRvSOIvVv/+lJwHS+B2rErwOyjuVRh60yVpb7liQ1U5t7lLJ1bz+t8tSypUZdm0g==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.0.tgz", - "integrity": "sha512-0jp//vDGp9e8hZzBc6N/KwA5ZK3Wsm/pfm4CrY7vzegkVxc65SgSn6wYOnwHe9Js9HRQ1YTCKLGPzDtaS3RoLQ==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-create-class-features-plugin": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", - "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", - "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/types": "^7.19.0" - } - }, - "@babel/helper-hoist-variables": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", - "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", - "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-module-transforms": { - "version": "7.20.2", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.2.tgz", - "integrity": "sha512-zvBKyJXRbmK07XhMuujYoJ48B5yvvmM6+wcpv6Ivj4Yg6qO7NOZOSnvZN9CRl1zz1Z4cKf8YejmCMh8clOoOeA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", - "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", - "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", - "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", - "dev": true, - "requires": { - "@babel/types": "^7.18.6" - } - }, - "@babel/helper-string-parser": { - "version": "7.19.4", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", - "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", - "dev": true - }, - "@babel/helper-validator-identifier": { - "version": "7.19.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", - "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", - "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", - "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", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.6.tgz", - "integrity": "sha512-Pf/OjgfgFRW5bApskEz5pvidpim7tEDPlFtKcNRXWmfHGn9IEI2W2flqRQXTFb7gIPTyK++N6rVHuwKut4XK6w==", - "dev": true, - "requires": { - "@babel/template": "^7.18.10", - "@babel/traverse": "^7.20.5", - "@babel/types": "^7.20.5" - } - }, - "@babel/highlight": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", - "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", - "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", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.5.tgz", - "integrity": "sha512-r27t/cy/m9uKLXQNWWebeCUHgnAZq0CpG1OwKRxzJMP1vpSU4bSIK2hq+/cp0bQxetkXx38n09rNu8jVkcK/zA==", - "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", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-class-static-block": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", - "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-export-namespace-from": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", - "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.3" - } - }, - "@babel/plugin-syntax-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-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-private-property-in-object": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", - "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.14.5", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", - "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.14.5" - } - }, - "@babel/plugin-transform-arrow-functions": { - "version": "7.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", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.5.tgz", - "integrity": "sha512-WM5ZNN3JITQIq9tFZaw1ojLU3WgWdtkxnhM1AegMS+PvHjkM5IXjmYEGY7yukz5XS4sJyEf2VzWjI8uAavhxBQ==", - "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", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.5.tgz", - "integrity": "sha512-jl7JY2Ykn9S0yj4DQP82sYvPU+T3g0HFcWTqDLqiuA9tGRNIj9VfbtXGAYTTkyNEnQk1jkMGOdYka8aG/lulCA==", - "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", - "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/types": { - "version": "7.20.5", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.5.tgz", - "integrity": "sha512-c9fst/h2/dcF7H+MJKZ2T0KjEQ8hY/BNnDk/H3XY8C4Aw/eWQXWn/lWntHF9ooUBnGmEvbfGrTgLWc+um0YDUg==", - "dev": true, - "requires": { - "@babel/helper-string-parser": "^7.19.4", - "@babel/helper-validator-identifier": "^7.19.1", - "to-fast-properties": "^2.0.0" - } - }, - "@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "dev": true - }, - "@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 - }, - "@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 - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "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", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jridgewell/gen-mapping": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", - "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", - "dev": true, - "requires": { - "@jridgewell/set-array": "^1.0.0", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", - "dev": true - }, - "@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", - "dev": true - }, - "@jridgewell/source-map": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.2.tgz", - "integrity": "sha512-m7O9o2uR8k2ObDysZYzdfhb08VuEml5oWGiosa1VdaPZ/A6QyPkAJuwN0Q1lhULOf6B7MtQmHENS743hWtCrgw==", - "dev": true, - "requires": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" - }, - "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" - } - } - } - }, - "@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.17", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", - "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", - "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 - }, - "@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": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "@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": "3.0.3", - "resolved": "https://registry.npmjs.org/@npmcli/run-script/-/run-script-3.0.3.tgz", - "integrity": "sha512-ZXL6qgC5NjwfZJ2nET+ZSLEz/PJgJ/5CU90C2S66dZY4Jw73DasS4ZCXuy/KHWYP0imjJ4VtA+Gebb5BxxKp9Q==", - "dev": true, - "requires": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^8.4.1", - "read-package-json-fast": "^2.0.3" - } - }, - "@schematics/angular": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-14.0.7.tgz", - "integrity": "sha512-I0v1gNFpm9ReL/hUzwjjOa+hk0qvlXv/vjITAWnlUV5dba6FZxzwsrTGsGO6t5XMNsm6QtwpDYDRdy9uy/n/1g==", - "dev": true, - "requires": { - "@angular-devkit/core": "14.0.7", - "@angular-devkit/schematics": "14.0.7", - "jsonc-parser": "3.0.0" - }, - "dependencies": { - "@angular-devkit/core": { - "version": "14.0.7", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-14.0.7.tgz", - "integrity": "sha512-XBqK2OMVKkV1Ltkh4aBsoHoDJQlins5a6qa/ZMjW4reYx90qLERs8ZfeWlRUWhvn2/ohx4aPq77jwSR5avp/Cw==", - "dev": true, - "requires": { - "ajv": "8.11.0", - "ajv-formats": "2.1.1", - "jsonc-parser": "3.0.0", - "rxjs": "6.6.7", - "source-map": "0.7.3" - } - }, - "jsonc-parser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.0.0.tgz", - "integrity": "sha512-fQzRfAbIBnR0IQvftw9FJveWiHp72Fg20giDrHz6TdfB12UH/uue0D3hm57UB5KgAVuniLMCaS8P1IMj9NR7cA==", - "dev": true - }, - "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" - } - }, - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - }, - "tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "dev": true - } - } - }, - "@socket.io/component-emitter": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", - "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", - "dev": true - }, - "@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", - "dev": true - }, - "@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", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", - "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", - "dev": true - }, - "@types/cors": { - "version": "2.8.13", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", - "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/eslint": { - "version": "8.4.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.10.tgz", - "integrity": "sha512-Sl/HOqN8NKPmhWo2VBEPm0nvHnu2LL3v9vKo8MEq0EtbJ4eVzGPl41VNPvn5E1i5poMk4/XD8UriLHpJvEP/Nw==", - "dev": true, - "requires": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "@types/eslint-scope": { - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.4.tgz", - "integrity": "sha512-9K4zoImiZc3HlIp6AVUDE4CWYx22a+lhSZMYNpbjW04+YF0KWj4pJXnEMjdnFTiQibFFmElcsasJXDbdI/EPhA==", - "dev": true, - "requires": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "@types/estree": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", - "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==", - "dev": true - }, - "@types/express": { - "version": "4.17.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/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/jasmine": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-4.0.3.tgz", - "integrity": "sha512-Opp1LvvEuZdk8fSSvchK2mZwhVrsNT0JgJE9Di6MjnaIpmEXM8TLCPPrVtNTYh8+5MPdY8j9bAHMu2SSfwpZJg==", - "dev": true - }, - "@types/json-schema": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.11.tgz", - "integrity": "sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==", - "dev": true - }, - "@types/mime": { - "version": "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": "18.11.11", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.11.tgz", - "integrity": "sha512-KJ021B1nlQUBLopzZmPBVuGU9un7WJd/W4ya7Ih02B4Uwky5Nja0yGYav2EfYIk0RR2Q9oVhf60S2XR1BCWJ2g==", - "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/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/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/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": "*" - } - }, - "@webassemblyjs/ast": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.1.tgz", - "integrity": "sha512-ukBh14qFLjxTQNTXocdyksN5QdM28S1CxHt2rdskFyL+xFV7VremuBLVbmCePj+URalXBENx/9Lm7lnhihtCSw==", - "dev": true, - "requires": { - "@webassemblyjs/helper-numbers": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1" - } - }, - "@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.1.tgz", - "integrity": "sha512-iGRfyc5Bq+NnNuX8b5hwBrRjzf0ocrJPI6GWFodBFzmFnyvrQ83SHKhmilCU/8Jv67i4GJZBMhEzltxzcNagtQ==", - "dev": true - }, - "@webassemblyjs/helper-api-error": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.1.tgz", - "integrity": "sha512-RlhS8CBCXfRUR/cwo2ho9bkheSXG0+NwooXcc3PAILALf2QLdFyj7KGsKRbVc95hZnhnERon4kW/D3SZpp6Tcg==", - "dev": true - }, - "@webassemblyjs/helper-buffer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.1.tgz", - "integrity": "sha512-gwikF65aDNeeXa8JxXa2BAk+REjSyhrNC9ZwdT0f8jc4dQQeDQ7G4m0f2QCLPJiMTTO6wfDmRmj/pW0PsUvIcA==", - "dev": true - }, - "@webassemblyjs/helper-numbers": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.1.tgz", - "integrity": "sha512-vDkbxiB8zfnPdNK9Rajcey5C0w+QJugEglN0of+kmO8l7lDb77AnlKYQF7aarZuCrv+l0UvqL+68gSDr3k9LPQ==", - "dev": true, - "requires": { - "@webassemblyjs/floating-point-hex-parser": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.1.tgz", - "integrity": "sha512-PvpoOGiJwXeTrSf/qfudJhwlvDQxFgelbMqtq52WWiXC6Xgg1IREdngmPN3bs4RoO83PnL/nFrxucXj1+BX62Q==", - "dev": true - }, - "@webassemblyjs/helper-wasm-section": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.1.tgz", - "integrity": "sha512-10P9No29rYX1j7F3EVPX3JvGPQPae+AomuSTPiF9eBQeChHI6iqjMIwR9JmOJXwpnn/oVGDk7I5IlskuMwU/pg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1" - } - }, - "@webassemblyjs/ieee754": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.1.tgz", - "integrity": "sha512-hJ87QIPtAMKbFq6CGTkZYJivEwZDbQUgYd3qKSadTNOhVY7p+gfP6Sr0lLRVTaG1JjFj+r3YchoqRYxNH3M0GQ==", - "dev": true, - "requires": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "@webassemblyjs/leb128": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.1.tgz", - "integrity": "sha512-BJ2P0hNZ0u+Th1YZXJpzW6miwqQUGcIHT1G/sf72gLVD9DZ5AdYTqPNbHZh6K1M5VmKvFXwGSWZADz+qBWxeRw==", - "dev": true, - "requires": { - "@xtuc/long": "4.2.2" - } - }, - "@webassemblyjs/utf8": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.1.tgz", - "integrity": "sha512-9kqcxAEdMhiwQkHpkNiorZzqpGrodQQ2IGrHHxCy+Ozng0ofyMA0lTqiLkVs1uzTRejX+/O0EOT7KxqVPuXosQ==", - "dev": true - }, - "@webassemblyjs/wasm-edit": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.1.tgz", - "integrity": "sha512-g+RsupUC1aTHfR8CDgnsVRVZFJqdkFHpsHMfJuWQzWU3tvnLC07UqHICfP+4XyL2tnr1amvl1Sdp06TnYCmVkA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/helper-wasm-section": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-opt": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1", - "@webassemblyjs/wast-printer": "1.11.1" - } - }, - "@webassemblyjs/wasm-gen": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.1.tgz", - "integrity": "sha512-F7QqKXwwNlMmsulj6+O7r4mmtAlCWfO/0HdgOxSklZfQcDu0TpLiD1mRt/zF25Bk59FIjEuGAIyn5ei4yMfLhA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wasm-opt": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.1.tgz", - "integrity": "sha512-VqnkNqnZlU5EB64pp1l7hdm3hmQw7Vgqa0KF/KCNO9sIpI6Fk6brDEiX+iCOYrvMuBWDws0NkTOxYEb85XQHHw==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-buffer": "1.11.1", - "@webassemblyjs/wasm-gen": "1.11.1", - "@webassemblyjs/wasm-parser": "1.11.1" - } - }, - "@webassemblyjs/wasm-parser": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.1.tgz", - "integrity": "sha512-rrBujw+dJu32gYB7/Lup6UhdkPx9S9SnobZzRVL7VcBH9Bt9bCBLEuX/YXOOtBsOZ4NQrRykKhffRWHvigQvOA==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@webassemblyjs/helper-api-error": "1.11.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.1", - "@webassemblyjs/ieee754": "1.11.1", - "@webassemblyjs/leb128": "1.11.1", - "@webassemblyjs/utf8": "1.11.1" - } - }, - "@webassemblyjs/wast-printer": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.1.tgz", - "integrity": "sha512-IQboUWM4eKzWW+N/jij2sRatKMh99QEelo3Eb2q0qXkvPRISAj8Qxtmw5itwqK+TTkBuUIE45AxYPToqPtL5gg==", - "dev": true, - "requires": { - "@webassemblyjs/ast": "1.11.1", - "@xtuc/long": "4.2.2" - } - }, - "@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true - }, - "@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true - }, - "@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "dev": true - }, - "abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", - "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", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "requires": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - } - }, - "acorn": { - "version": "8.8.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.1.tgz", - "integrity": "sha512-7zFpHzhnqYKrkYdUjF1HI1bzd0VygEGX8lFk4k5zVMqHEoES+P+7TKI+EvLO9WVMJ8eekdO0aDEK044xTXwPPA==", - "dev": true - }, - "acorn-import-assertions": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.8.0.tgz", - "integrity": "sha512-m7VZ3jwz4eK6A4Vtt8Ew1/mNbP24u0FhdyfA7fSvnJR6LMdfOYnmuIrrJAgrYfYJ10F/otaHTtrtrtmHdMNzEw==", - "dev": true, - "requires": {} - }, - "adjust-sourcemap-loader": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/adjust-sourcemap-loader/-/adjust-sourcemap-loader-4.0.0.tgz", - "integrity": "sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==", - "dev": true, - "requires": { - "loader-utils": "^2.0.0", - "regex-parser": "^2.2.11" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "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", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "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", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "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" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "array-flatten": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", - "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", - "dev": true - }, - "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" - } - }, - "babel-loader": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-8.2.5.tgz", - "integrity": "sha512-OSiFfH89LrEMiWd4pLNqGz4CwJDtbs2ZVc+iGu2HrkRfPxId9F2anQj38IxWpmRfsUY0aBZYi1EFcd3mhtRMLQ==", - "dev": true, - "requires": { - "find-cache-dir": "^3.3.1", - "loader-utils": "^2.0.0", - "make-dir": "^3.1.0", - "schema-utils": "^2.6.5" - }, - "dependencies": { - "loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", - "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", - "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-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" - } - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "dev": true - }, - "base64id": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", - "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", - "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 - }, - "big.js": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", - "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", - "dev": true - }, - "binary-extensions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true - }, - "bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "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", - "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 - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "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" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browserslist": { - "version": "4.21.4", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.4.tgz", - "integrity": "sha512-CBHJJdDmgjl3daYjN5Cp5kbTf1mUhZoS+beLklHIvkOWscs83YAhLlF3Wsh/lciQYAcbBJgTOD44VtG31ZM4Hw==", - "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" - } - }, - "buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": 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", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "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" - } - }, - "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001436", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001436.tgz", - "integrity": "sha512-ZmWkKsnC2ifEPoWUvSAIGyOYwT+keAaaWPHiQ9DfMqS1t6tfuyFYoWR78TeZtznkEQ64+vGXH9cZrElwR2Mrxg==", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "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", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "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", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.7.0.tgz", - "integrity": "sha512-qu3pN8Y3qHNgE2AFweciB1IfMnmZ/fsNTEE+NOFjmGB2F/7rLhnhzppvpCnN4FovtP26k8lHyy9ptEbNwWFLzw==", - "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": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "dev": true - }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "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 - }, - "commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "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", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "connect": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", - "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", - "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", - "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 - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", - "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==", - "dev": true - }, - "convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "dev": true - }, - "cookie": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", - "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", - "dev": true - }, - "cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "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-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.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "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" - } - }, - "critters": { - "version": "0.0.16", - "resolved": "https://registry.npmjs.org/critters/-/critters-0.0.16.tgz", - "integrity": "sha512-JwjgmO6i3y6RWtLYmXwO5jMd+maZt8Tnfu7VVISmEWyQqfLpB8soBswf8/2bu6SBXxtKA68Al3c+qIG1ApT68A==", - "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", - "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 - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "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" - } - } - } - }, - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", - "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", - "dev": true, - "requires": { - "boolbase": "^1.0.0", - "css-what": "^6.0.1", - "domhandler": "^4.3.1", - "domutils": "^2.8.0", - "nth-check": "^2.0.1" - } - }, - "css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true - }, - "custom-event": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/custom-event/-/custom-event-1.0.1.tgz", - "integrity": "sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==", - "dev": true - }, - "date-format": { - "version": "4.0.14", - "resolved": "https://registry.npmjs.org/date-format/-/date-format-4.0.14.tgz", - "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "dev": true, - "requires": { - "clone": "^1.0.2" - } - }, - "define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true - }, - "dependency-graph": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", - "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", - "dev": true - }, - "destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "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", - "resolved": "https://registry.npmjs.org/di/-/di-0.0.1.tgz", - "integrity": "sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==", - "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" - } - }, - "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" - } - }, - "dom-serialize": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/dom-serialize/-/dom-serialize-2.2.1.tgz", - "integrity": "sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==", - "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", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", - "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", - "dev": true, - "requires": { - "domelementtype": "^2.0.1", - "domhandler": "^4.2.0", - "entities": "^2.0.0" - } - }, - "domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true - }, - "domhandler": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", - "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", - "dev": true, - "requires": { - "domelementtype": "^2.2.0" - } - }, - "domutils": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", - "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", - "dev": true, - "requires": { - "dom-serializer": "^1.0.1", - "domelementtype": "^2.2.0", - "domhandler": "^4.2.0" - } - }, - "ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true - }, - "electron-to-chromium": { - "version": "1.4.284", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", - "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "emojis-list": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", - "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", - "dev": true - }, - "encodeurl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", - "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", - "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", - "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", - "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", - "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" - } - }, - "engine.io-parser": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.4.tgz", - "integrity": "sha512-+nVFp+5z1E3HcToEnO7ZIj3g+3k9389DvWtvJZz0T6/eOCPIyyxehFcedoYrZQrp0LgQbD9pPXhpMBKMd5QURg==", - "dev": true - }, - "enhanced-resolve": { - "version": "5.12.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.12.0.tgz", - "integrity": "sha512-QHTXI/sZQmko1cbDoNAa3mJ5qhWUUNAq3vR0/YiD379fWQrcfuoX1+HW2S0MTt7XmoPLapdaDKUtelUSPic7hQ==", - "dev": true, - "requires": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - } - }, - "ent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ent/-/ent-2.2.0.tgz", - "integrity": "sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==", - "dev": true - }, - "entities": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", - "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", - "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", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-module-lexer": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.9.3.tgz", - "integrity": "sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true - }, - "eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "requires": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - }, - "dependencies": { - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - } - } - }, - "estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "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", - "resolved": "https://registry.npmjs.org/eventemitter-asyncresource/-/eventemitter-asyncresource-1.0.0.tgz", - "integrity": "sha512-39F7TBIV0G7gTelxwbEqnwhp90eqCPON1k0NwNfwhgKn4Co4ybUbj2pECcXT0B3ztRKZ7Pw1JujUUgmQJHcVAQ==", - "dev": true - }, - "eventemitter3": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", - "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", - "dev": true - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "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 - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "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" - } - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-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", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "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", - "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", - "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", - "dev": true, - "requires": { - "websocket-driver": ">=0.5.1" - } - }, - "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" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "finalhandler": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", - "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", - "dev": true, - "requires": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "~2.3.0", - "parseurl": "~1.3.3", - "statuses": "~1.5.0", - "unpipe": "~1.0.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true - }, - "on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - } - } - }, - "find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "dev": true, - "requires": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "flatted": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.7.tgz", - "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==", - "dev": true - }, - "follow-redirects": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", - "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", - "dev": true - }, - "forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "dev": true - }, - "fraction.js": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", - "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", - "dev": true - }, - "fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true - }, - "fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "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", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "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", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "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", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", - "dev": true, - "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - } - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "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" - } - }, - "glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "requires": { - "is-glob": "^4.0.1" - } - }, - "glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "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" - } - }, - "graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "dev": true - }, - "handle-thing": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", - "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", - "dev": true - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true - }, - "has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-js/-/hdr-histogram-js-2.0.3.tgz", - "integrity": "sha512-Hkn78wwzWHNCp2uarhzQ2SGFLU3JY8SBDDd3TAABK4fc30wm+MuPOrg5QVFVfkKOQd6Bfz3ukJEI+q9sXEkK1g==", - "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", - "resolved": "https://registry.npmjs.org/hdr-histogram-percentiles-obj/-/hdr-histogram-percentiles-obj-3.0.0.tgz", - "integrity": "sha512-7kIufnBqdsBGcSZLPJwqHT3yhk1QTsSlFsVD3kx5ixH/AlgBs9yM1q6DPhXZ8f8gtdqgh7N7/5btRLpQsS2gHw==", - "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" - } - }, - "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-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", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "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", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "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", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true - } - } - }, - "http-parser-js": { - "version": "0.5.8", - "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", - "integrity": "sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==", - "dev": true - }, - "http-proxy": { - "version": "1.18.1", - "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", - "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", - "dev": true, - "requires": { - "eventemitter3": "^4.0.0", - "follow-redirects": "^1.0.0", - "requires-port": "^1.0.0" - } - }, - "http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", - "dev": true, - "requires": { - "@tootallnate/once": "1", - "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" - } - }, - "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", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "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", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", - "dev": true, - "requires": {} - }, - "ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true - }, - "ignore": { - "version": "5.2.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" - } - }, - "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 - }, - "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 - } - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "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", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "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 - }, - "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" - } - } - } - }, - "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-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "requires": { - "binary-extensions": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true - }, - "is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "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-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "isbinaryfile": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-4.0.10.tgz", - "integrity": "sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.0.tgz", - "integrity": "sha512-eOeJ5BHCmHYvQK7xt9GkdHuzuCGS1Y6g9Gvnx3Ym33fz/HpLRYxiS0wHNr+m/MBC8B647Xt608vCDEvhl9c6Mw==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", - "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", - "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", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "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", - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.5.tgz", - "integrity": "sha512-nUsEMa9pBt/NOHqbcbeJEgqIlY/K7rVWUX6Lql2orY5e9roQOthbR3vtY4zzf2orPELg80fnxxk9zUyPlgwD1w==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jasmine-core": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jasmine-core/-/jasmine-core-4.1.1.tgz", - "integrity": "sha512-lmUfT5XcK9KKvt3lLYzn93hc4MGzlUBowExFVgzbSW0ZCrdeyS574dfsyfRhxbg81Wj4gk+RxUiTnj7KBfDA1g==", - "dev": true - }, - "jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "dependencies": { - "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": "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" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "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", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "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 - }, - "karma": { - "version": "6.3.20", - "resolved": "https://registry.npmjs.org/karma/-/karma-6.3.20.tgz", - "integrity": "sha512-HRNQhMuKOwKpjYlWiJP0DUrJOh+QjaI/DTaD8b9rEm4Il3tJ8MijutVZH4ts10LuUFst/CedwTS6vieCN8yTSw==", - "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": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dev": true, - "requires": { - "minimist": "^1.2.6" - } - }, - "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 - }, - "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" - } - }, - "yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "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" - } - }, - "yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true - } - } - }, - "karma-chrome-launcher": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/karma-chrome-launcher/-/karma-chrome-launcher-3.1.1.tgz", - "integrity": "sha512-hsIglcq1vtboGPAN+DGCISCFOxW+ZVnIqhDQcCMqqCp+4dmJ0Qpq5QAjkbA0X2L9Mi6OBkHi2Srrbmm7pUKkzQ==", - "dev": true, - "requires": { - "which": "^1.2.1" - } - }, - "karma-coverage": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/karma-coverage/-/karma-coverage-2.2.0.tgz", - "integrity": "sha512-gPVdoZBNDZ08UCzdMHHhEImKrw1+PAOQOIiffv1YsvxFhBjqvo/SVXNk4tqn1SYqX0BJZT6S/59zgxiBe+9OuA==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-instrument": "^5.1.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.1", - "istanbul-reports": "^3.0.5", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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" - } - } - } - }, - "karma-jasmine": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-jasmine/-/karma-jasmine-5.0.1.tgz", - "integrity": "sha512-FkL1Kk+JAKmim8VWU8RXKZBpl0lLI7J8LijM0/q7oP7emfB6QMZV1Az+JgqGKSLpF0tYaav+KUVFQroZUxQTHA==", - "dev": true, - "requires": { - "jasmine-core": "^4.1.0" - } - }, - "karma-jasmine-html-reporter": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/karma-jasmine-html-reporter/-/karma-jasmine-html-reporter-1.7.0.tgz", - "integrity": "sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==", - "dev": true, - "requires": {} - }, - "karma-source-map-support": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/karma-source-map-support/-/karma-source-map-support-1.4.0.tgz", - "integrity": "sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==", - "dev": true, - "requires": { - "source-map-support": "^0.5.5" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "klona": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/klona/-/klona-2.0.5.tgz", - "integrity": "sha512-pJiBpiXMbt7dkzXe8Ghj/u4FfXOOa98fPW+bihOJ4SjnoijweJrNThJfd3ifXpXhREjpoF2mZVH1GfS9LV3kHQ==", - "dev": true - }, - "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" - } - }, - "license-webpack-plugin": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/license-webpack-plugin/-/license-webpack-plugin-4.0.2.tgz", - "integrity": "sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==", - "dev": true, - "requires": { - "webpack-sources": "^3.0.0" - } - }, - "lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true - }, - "loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true - }, - "loader-utils": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-3.2.1.tgz", - "integrity": "sha512-ZvFw1KWS3GVyYBYb7qkmRM/WwL2TQQBxgCK62rlvm4WpVQ23Nb4tYjApUlfjrEGvOs7KHEsmyUn75OHZrJMWPw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.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 - }, - "log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.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 - }, - "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" - } - } - } - }, - "log4js": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/log4js/-/log4js-6.7.1.tgz", - "integrity": "sha512-lzbd0Eq1HRdWM2abSD7mk6YIVY0AogGJzb/z+lqzRk+8+XJP+M6L1MS5FUSc3jjGru4dbKjEMJmqlsoYYpuivQ==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "flatted": "^3.2.7", - "rfdc": "^1.3.0", - "streamroller": "^3.1.3" - } - }, - "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 - }, - "magic-string": { - "version": "0.26.1", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.26.1.tgz", - "integrity": "sha512-ndThHmvgtieXe8J/VGPjG+Apu7v7ItcD5mhEIvOscWjPF/ccOiLxHaSuCAS2G+3x4GKsAbT8u7zdyamupui8Tg==", - "dev": true, - "requires": { - "sourcemap-codec": "^1.4.8" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "dev": true, - "requires": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" - }, - "dependencies": { - "@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "dev": true, - "requires": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "dev": true, - "requires": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "dev": true, - "requires": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - }, - "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" - } - }, - "ssri": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", - "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", - "dev": true, - "requires": { - "minipass": "^3.1.1" - } - } - } - }, - "media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "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", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "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", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", - "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, - "requires": { - "braces": "^3.0.2", - "picomatch": "^2.3.1" - } - }, - "mime": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", - "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", - "dev": true - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true - }, - "mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "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": "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" - } - }, - "minimist": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", - "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", - "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": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", - "dev": true, - "requires": { - "encoding": "^0.1.12", - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" - } - }, - "minipass-flush": { - "version": "1.0.5", - "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 - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "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", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true - }, - "neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "nice-napi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/nice-napi/-/nice-napi-1.0.2.tgz", - "integrity": "sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==", - "dev": true, - "optional": true, - "requires": { - "node-addon-api": "^3.0.0", - "node-gyp-build": "^4.2.2" - } - }, - "node-addon-api": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-3.2.1.tgz", - "integrity": "sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==", - "dev": true, - "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": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", - "dev": true, - "requires": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-gyp-build": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.5.0.tgz", - "integrity": "sha512-2iGbaQBV+ITgCz76ZEjmhUKAKVf7xfY1sRl4UiKQspfZMH2h06SyhNsnSVy50cwkFQDGLyif6m/6uFXHkOZ6rg==", - "dev": true, - "optional": true - }, - "node-releases": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.6.tgz", - "integrity": "sha512-PiVXnNuFm5+iYkLBNeq5211hvO38y63T0i2KKh2KnUs3RpzJ+JtODFjkD8yjLwnDkTYF1eKXheUwdssR+NRZdg==", - "dev": true - }, - "nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", - "dev": true, - "requires": { - "abbrev": "1" - } - }, - "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", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "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.0.2", - "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-9.0.2.tgz", - "integrity": "sha512-v/miORuX8cndiOheW8p2moNuPJ7QhcFh9WGlTorruG8hXSA23vMTEp5hTCmDxic0nD8KHhj/NQgFuySD3GYY3g==", - "dev": true, - "requires": { - "hosted-git-info": "^5.0.0", - "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": { - "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" - }, - "dependencies": { - "@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 - }, - "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" - } - }, - "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" - } - }, - "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" - } - }, - "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" - } - } - } - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "requires": { - "boolbase": "^1.0.0" - } - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true - }, - "object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "requires": { - "ee-first": "1.1.1" - } - }, - "on-headers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", - "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "open": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.0.tgz", - "integrity": "sha512-XgFPPM+B28FtCCgSb9I+s9szOC1vZRSwgWsRUA5ylIxRTgKozqjOCrVOqGsYABPYK5qnfqClxZTFBa8PKt2v6Q==", - "dev": true, - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "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", - "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" - } - } - } - }, - "os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "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", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "pacote": { - "version": "13.3.0", - "resolved": "https://registry.npmjs.org/pacote/-/pacote-13.3.0.tgz", - "integrity": "sha512-auhJAUlfC2TALo6I0s1vFoPvVFgWGx+uz/PnIojTTgkGwlK3Np8sGJ0ghfFhiuzJXTZoTycMLk8uLskdntPbDw==", - "dev": true, - "requires": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^3.0.1", - "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.0.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", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "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", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "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", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-5.1.1.tgz", - "integrity": "sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==", - "optional": true - }, - "parse5-html-rewriting-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-html-rewriting-stream/-/parse5-html-rewriting-stream-6.0.1.tgz", - "integrity": "sha512-vwLQzynJVEfUlURxgnf51yAJDQTtVpNyGD8tKi2Za7m+akukNHxCcUQMAa/mUGLhCeicFdpy7Tlvj8ZNKadprg==", - "dev": true, - "requires": { - "parse5": "^6.0.1", - "parse5-sax-parser": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-htmlparser2-tree-adapter": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-6.0.1.tgz", - "integrity": "sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parse5-sax-parser": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5-sax-parser/-/parse5-sax-parser-6.0.1.tgz", - "integrity": "sha512-kXX+5S81lgESA0LsDuGjAlBybImAChYRMT+/uKCEXFBFOeEhS52qUCydGhU3qLRD8D9DVjaUo821WK7DM4iCeg==", - "dev": true, - "requires": { - "parse5": "^6.0.1" - }, - "dependencies": { - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - } - } - }, - "parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "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 - }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true - }, - "picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true - }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - }, - "piscina": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/piscina/-/piscina-3.2.0.tgz", - "integrity": "sha512-yn/jMdHRw+q2ZJhFhyqsmANcbF6V2QwmD84c6xRau+QpQOmtrBCoRGdvTfeuFDYXB5W2m6MfLkjkvQa9lUSmIA==", - "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", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "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 - }, - "pretty-bytes": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/pretty-bytes/-/pretty-bytes-5.6.0.tgz", - "integrity": "sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==", - "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", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "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" - } - }, - "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 - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qjobs": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/qjobs/-/qjobs-1.2.0.tgz", - "integrity": "sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==", - "dev": true - }, - "qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dev": true, - "requires": { - "side-channel": "^1.0.4" - } - }, - "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", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "requires": { - "safe-buffer": "^5.1.0" - } - }, - "range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", - "dev": true - }, - "raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dev": true, - "requires": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - } - }, - "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": { - "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", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "requires": { - "picomatch": "^2.2.1" - } - }, - "reflect-metadata": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.13.tgz", - "integrity": "sha512-Ts1Y/anZELhSsjMcU605fU9RE4Oi3p5ORujwbIKXfWa+0Zxs510Qrmrce5/Jowq3cHSZSJqBjypxmHarc+vEWg==", - "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", - "resolved": "https://registry.npmjs.org/regex-parser/-/regex-parser-2.2.11.tgz", - "integrity": "sha512-jbD/FT0+9MBU2XAZluI7w2OBs1RBi6p9M83nkoZayQXXU9e8Robt69FcZc7wU4eJD/YFTjn1JdCk3rbMJajz8Q==", - "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 - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true - }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, - "requires-port": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", - "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", - "dev": true - }, - "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", - "dev": true, - "requires": { - "is-core-module": "^2.8.1", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url-loader": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-url-loader/-/resolve-url-loader-5.0.0.tgz", - "integrity": "sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==", - "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", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, - "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 - } - } - }, - "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "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", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.3.0.tgz", - "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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": "7.5.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.5.7.tgz", - "integrity": "sha512-z9MzKh/UcOqB3i20H6rtrlaE/CgjLOvheWK/9ILrbhROGTweAi1BaFsTT9FbwZi5Trr1qNRs+MXkhmR06awzQA==", - "requires": { - "tslib": "^2.1.0" - } - }, - "safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "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" - } - }, - "sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true - }, - "schema-utils": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-2.7.1.tgz", - "integrity": "sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.5", - "ajv": "^6.12.4", - "ajv-keywords": "^3.5.2" - }, - "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" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - } - } - }, - "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 - }, - "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.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" - }, - "dependencies": { - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "requires": { - "yallist": "^4.0.0" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "requires": { - "randombytes": "^2.1.0" - } - }, - "serve-index": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", - "integrity": "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", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", - "dev": true - }, - "setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true - }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dev": true, - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "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", - "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", - "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", - "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", - "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", - "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", - "dev": true - }, - "socket.io-parser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.1.tgz", - "integrity": "sha512-V4GrkLy+HeF1F/en3SpUaM+7XxYXpuMUWLGde1kSSh5nQMN4hLrbPIkD+otwh6q9R6NOQBN4AMaOZ2zVjui82g==", - "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" - } - }, - "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": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", - "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", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "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", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - }, - "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 - } - } - }, - "sourcemap-codec": { - "version": "1.4.8", - "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", - "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", - "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.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true - }, - "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" - } - }, - "statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true - }, - "streamroller": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/streamroller/-/streamroller-3.1.3.tgz", - "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", - "dev": true, - "requires": { - "date-format": "^4.0.14", - "debug": "^4.3.4", - "fs-extra": "^8.1.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "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" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "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", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true - }, - "symbol-observable": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz", - "integrity": "sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==", - "dev": true - }, - "tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true - }, - "tar": { - "version": "6.1.12", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.1.12.tgz", - "integrity": "sha512-jU4TdemS31uABHd+Lt5WEYJuzn+TJTCBLljvIAHZOz6M9Os5pJ4dD+vRFLxPa/n3T0iEFzpi+0x1UfuDZYbRMw==", - "dev": true, - "requires": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - } - }, - "terser": { - "version": "5.14.2", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.14.2.tgz", - "integrity": "sha512-oL0rGeM/WFQCUd0y2QrWxYnq7tfSuKBiqTjRPWrRgB46WD/kiwHwF8T23z78H6Q6kGCuuHcPB+KULHRdxvVGQA==", - "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", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.6.tgz", - "integrity": "sha512-kfLFk+PoLUQIbLmB1+PZDMRSZS99Mp+/MHqDNmMA6tOItzRt+Npe3E+fsMs5mfcM0wCtrrdU387UnV+vnSffXQ==", - "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", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "dependencies": { - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dev": true, - "requires": { - "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" - } - }, - "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" - } - } - } - }, - "text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "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" - } - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true - }, - "tree-kill": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", - "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", - "dev": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==" - }, - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - }, - "type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dev": true, - "requires": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - } - }, - "typed-assert": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/typed-assert/-/typed-assert-1.0.9.tgz", - "integrity": "sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==", - "dev": true - }, - "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true - }, - "ua-parser-js": { - "version": "0.7.33", - "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz", - "integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unpipe": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", - "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", - "dev": true - }, - "update-browserslist-db": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", - "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", - "dev": true, - "requires": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "utils-merge": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", - "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true - }, - "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", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true - }, - "void-elements": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-2.0.1.tgz", - "integrity": "sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==", - "dev": true - }, - "watchpack": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", - "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", - "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", - "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", - "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", - "dev": true, - "requires": { - "defaults": "^1.0.3" - } - }, - "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", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true, - "requires": {} - }, - "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 - }, - "schema-utils": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.1.1.tgz", - "integrity": "sha512-Y5PQxS4ITlC+EahLuXaY86TXfR7Dc5lw294alXOq86JAHCihAIZfqv8nNCWvaEJvaC51uN9hbLGeV0cFBdH+Fw==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - } - } - } - }, - "webpack-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" - } - }, - "ws": { - "version": "8.11.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.11.0.tgz", - "integrity": "sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==", - "dev": true, - "requires": {} - } - } - }, - "webpack-merge": { - "version": "5.8.0", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.8.0.tgz", - "integrity": "sha512-/SaI7xY0831XwP6kzuwhKWVKDP9t1QY1h65lAFLbZqMPIuYcD9QAW4u9STIbU9kaJbPBB/geU/gLr1wDjOhQ+Q==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, - "webpack-sources": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", - "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true - }, - "webpack-subresource-integrity": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/webpack-subresource-integrity/-/webpack-subresource-integrity-5.1.0.tgz", - "integrity": "sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==", - "dev": true, - "requires": { - "typed-assert": "^1.0.8" - } - }, - "websocket-driver": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", - "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", - "dev": true, - "requires": { - "http-parser-js": ">=0.5.1", - "safe-buffer": ">=5.1.0", - "websocket-extensions": ">=0.1.1" - } - }, - "websocket-extensions": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", - "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "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", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, - "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "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", - "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" - } - }, - "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 - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "ws": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", - "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", - "dev": true, - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "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.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.4.1.tgz", - "integrity": "sha512-WSZD9jgobAg3ZKuCQZSa3g9QOJeCCqLoLAykiWgmXnDo9EPnn4RPf5qVTtzgOx66o6/oqhcA5tHtJXpG8pMt3g==", - "dev": true, - "requires": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.0.0" - } - }, - "yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true - }, - "zone.js": { - "version": "0.11.8", - "resolved": "https://registry.npmjs.org/zone.js/-/zone.js-0.11.8.tgz", - "integrity": "sha512-82bctBg2hKcEJ21humWIkXRlLBBmrc3nN7DFh5LGGhcyycO2S7FN8NmdvlcKaGFDNVL4/9kFLmwmInTavdJERA==", - "requires": { - "tslib": "^2.3.0" - } - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/package.json b/6-AdvancedScenarios/2-call-api-mt/SPA/package.json deleted file mode 100644 index 720ee886..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/package.json +++ /dev/null @@ -1,42 +0,0 @@ -{ - "name": "spa", - "version": "0.0.0", - "scripts": { - "ng": "ng", - "start": "ng serve", - "build": "ng build", - "watch": "ng build --watch --configuration development", - "test": "ng test --watch=false --no-progress --browsers=ChromeHeadlessCI" - }, - "private": true, - "dependencies": { - "@angular/animations": "^14.0.0", - "@angular/cdk": "^14.0.4", - "@angular/common": "^14.0.0", - "@angular/compiler": "^14.0.0", - "@angular/core": "^14.0.0", - "@angular/forms": "^14.0.0", - "@angular/material": "^14.0.4", - "@angular/platform-browser": "^14.0.0", - "@angular/platform-browser-dynamic": "^14.0.0", - "@angular/router": "^14.0.0", - "@azure/msal-angular": "^2.5.0", - "@azure/msal-browser": "^2.32.0", - "rxjs": "~7.5.0", - "tslib": "^2.3.0", - "zone.js": "~0.11.4" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^14.1.0", - "@angular/cli": "~14.0.5", - "@angular/compiler-cli": "^14.0.0", - "@types/jasmine": "~4.0.0", - "jasmine-core": "~4.1.0", - "karma": "~6.3.0", - "karma-chrome-launcher": "~3.1.0", - "karma-coverage": "~2.2.0", - "karma-jasmine": "~5.0.0", - "karma-jasmine-html-reporter": "~1.7.0", - "typescript": "~4.7.2" - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app-routing.module.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app-routing.module.ts deleted file mode 100644 index 7a94a05b..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app-routing.module.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { NgModule } from '@angular/core'; -import { Routes, RouterModule } from '@angular/router'; -import { MsalGuard, MsalRedirectComponent } from '@azure/msal-angular'; -import { BrowserUtils } from '@azure/msal-browser'; - -import { HomeComponent } from './home/home.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { OnboardComponent } from './onboard/onboard.component'; - -/** - * MSAL Angular can protect routes in your application using MsalGuard. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#secure-the-routes-in-your-application - */ -const routes: Routes = [ - { - path: 'todo-edit/:id', - component: TodoEditComponent, - canActivate: [ - MsalGuard - ] - }, - { - path: 'todo-view', - component: TodoViewComponent, - canActivate: [ - MsalGuard - ] - }, - { - path: 'onboard', - component: OnboardComponent, - canActivate: [ - MsalGuard - ] - }, - { - path: 'adminconsent', - redirectTo: 'onboard', - }, - { - // Needed for handling redirect after login - path: 'auth', - component: MsalRedirectComponent - }, - { - path: '', - component: HomeComponent - } -]; - -@NgModule({ - imports: [RouterModule.forRoot(routes, { - // Don't perform initial navigation in iframes or popups - initialNavigation: !BrowserUtils.isInIframe() && !BrowserUtils.isInPopup() ? 'enabledNonBlocking' : 'disabled' // Set to enabledBlocking to use Angular Universal - })], - exports: [RouterModule] -}) -export class AppRoutingModule { } diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.css b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.css deleted file mode 100644 index 43d668de..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.css +++ /dev/null @@ -1,22 +0,0 @@ -.toolbar-spacer { - flex: 1 1 auto; -} - -a.title { - color: white; -} - -footer { - position: fixed; - left: 0; - bottom: 0; - width: 100%; - color: white; - text-align: center; -} - -.footer-text { - font-size: small; - text-align: center; - flex: 1 1 auto; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.html b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.html deleted file mode 100644 index 31da6498..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.html +++ /dev/null @@ -1,23 +0,0 @@ - - {{ title }} - -

    - - Shared TodoList - - - -
    - - -
    - - \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.ts deleted file mode 100644 index 00ae7494..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.component.ts +++ /dev/null @@ -1,134 +0,0 @@ -import { Component, OnInit, Inject, OnDestroy } from '@angular/core'; -import { Router } from '@angular/router'; -import { MsalService, MsalBroadcastService, MSAL_GUARD_CONFIG, MsalGuardConfiguration } from '@azure/msal-angular'; -import { AuthenticationResult, EventMessage, EventType, InteractionStatus, InteractionType, PopupRequest, RedirectRequest } from '@azure/msal-browser'; -import { Subject } from 'rxjs'; -import { filter, takeUntil } from 'rxjs/operators'; -import { clearStorage } from './storage-utils'; - -@Component({ - selector: 'app-root', - templateUrl: './app.component.html', - styleUrls: ['./app.component.css'] -}) -export class AppComponent implements OnInit, OnDestroy { - title = 'Microsoft identity platform'; - isIframe = false; - loginDisplay = false; - private readonly _destroying$ = new Subject(); - - constructor( - @Inject(MSAL_GUARD_CONFIG) - private msalGuardConfig: MsalGuardConfiguration, - private authService: MsalService, - private msalBroadcastService: MsalBroadcastService, - private router: Router, - ) { } - - ngOnInit(): void { - this.isIframe = window !== window.parent && !window.opener; - this.setLoginDisplay(); - - this.authService.instance.enableAccountStorageEvents(); // Optional - This will enable ACCOUNT_ADDED and ACCOUNT_REMOVED events emitted when a user logs in or out of another tab or window - - /** - * You can subscribe to MSAL events as shown below. For more info, - * visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/events.md - */ - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.ACCOUNT_ADDED || msg.eventType === EventType.ACCOUNT_REMOVED), - ) - .subscribe((result: EventMessage) => { - if (this.authService.instance.getAllAccounts().length === 0) { - window.location.pathname = "/"; - } else { - this.setLoginDisplay(); - } - }); - - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => (msg.eventType === EventType.LOGIN_FAILURE || msg.eventType === EventType.ACQUIRE_TOKEN_FAILURE)), - ) - .subscribe((result: EventMessage) => { - if (result.error?.message.includes("AADSTS650052")) { - this.router.navigate(['/onboard']); - } - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None), - takeUntil(this._destroying$) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.checkAndSetActiveAccount(); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - checkAndSetActiveAccount() { - /** - * If no active account set but there are accounts signed in, sets first account to active account - * To use active account set here, subscribe to inProgress$ first in your component - * Note: Basic usage demonstrated. Your app may require more complicated account selection logic - */ - let activeAccount = this.authService.instance.getActiveAccount(); - - if (!activeAccount && this.authService.instance.getAllAccounts().length > 0) { - let accounts = this.authService.instance.getAllAccounts(); - // add your code for handling multiple accounts here - this.authService.instance.setActiveAccount(accounts[0]); - } - } - - login() { - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - if (this.msalGuardConfig.authRequest) { - this.authService.loginPopup({ ...this.msalGuardConfig.authRequest } as PopupRequest) - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } else { - this.authService.loginPopup() - .subscribe((response: AuthenticationResult) => { - this.authService.instance.setActiveAccount(response.account); - }); - } - } else { - if (this.msalGuardConfig.authRequest) { - this.authService.loginRedirect({ ...this.msalGuardConfig.authRequest } as RedirectRequest); - } else { - this.authService.loginRedirect(); - } - } - } - - logout() { - const activeAccount = this.authService.instance.getActiveAccount() || this.authService.instance.getAllAccounts()[0]; - - clearStorage(activeAccount.homeAccountId); // clear the storage of any claim challenges - - if (this.msalGuardConfig.interactionType === InteractionType.Popup) { - this.authService.logoutPopup({ - account: activeAccount, - }); - } else { - this.authService.logoutRedirect({ - account: activeAccount, - }); - } - } - - // unsubscribe to events when component is destroyed - ngOnDestroy(): void { - this._destroying$.next(undefined); - this._destroying$.complete(); - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.module.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.module.ts deleted file mode 100644 index dbafb55a..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/app.module.ts +++ /dev/null @@ -1,159 +0,0 @@ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { NgModule } from '@angular/core'; -import { FormsModule } from '@angular/forms'; - -import { MatButtonModule } from '@angular/material/button'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { MatListModule } from '@angular/material/list'; -import { MatTableModule } from '@angular/material/table'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatIconModule } from '@angular/material/icon' -import { MatInputModule } from '@angular/material/input'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatSelectModule } from '@angular/material/select'; - -import { AppRoutingModule } from './app-routing.module'; -import { AppComponent } from './app.component'; -import { HomeComponent } from './home/home.component'; -import { OnboardComponent } from './onboard/onboard.component'; -import { TodoEditComponent } from './todo-edit/todo-edit.component'; -import { TodoViewComponent } from './todo-view/todo-view.component'; -import { TodoService } from './todo.service'; - -import { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http'; -import { IPublicClientApplication, PublicClientApplication, InteractionType } from '@azure/msal-browser'; -import { - MsalGuard, MsalInterceptor, MsalBroadcastService, MsalInterceptorConfiguration, MsalModule, MsalService, - MSAL_GUARD_CONFIG, MSAL_INSTANCE, MSAL_INTERCEPTOR_CONFIG, MsalGuardConfiguration, MsalRedirectComponent, ProtectedResourceScopes -} from '@azure/msal-angular'; - -import { msalConfig, loginRequest, protectedResources } from './auth-config'; -import { getClaimsFromStorage } from './storage-utils'; - -/** - * Here we pass the configuration parameters to create an MSAL instance. - * For more info, visit: https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/configuration.md - */ -export function MSALInstanceFactory(): IPublicClientApplication { - return new PublicClientApplication(msalConfig); -} - -/** - * MSAL Angular will automatically retrieve tokens for resources - * added to protectedResourceMap. For more info, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/v2-docs/initialization.md#get-tokens-for-web-api-calls - */ -export function MSALInterceptorConfigFactory(): MsalInterceptorConfiguration { - const protectedResourceMap = new Map | null>(); - - protectedResourceMap.set(protectedResources.todoListApi.endpoint, [ - { - httpMethod: 'GET', - scopes: [...protectedResources.todoListApi.scopes.read] - }, - { - httpMethod: 'POST', - scopes: [...protectedResources.todoListApi.scopes.write] - }, - { - httpMethod: 'PUT', - scopes: [...protectedResources.todoListApi.scopes.write] - }, - { - httpMethod: 'DELETE', - scopes: [...protectedResources.todoListApi.scopes.write] - } - ]); - - return { - interactionType: InteractionType.Popup, - protectedResourceMap, - authRequest: (msalService, httpReq, originalAuthRequest) => { - const resource = new URL(httpReq.url).hostname; - let claim = msalService.instance.getActiveAccount()! && - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${msalService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ? window.atob( - getClaimsFromStorage( - `cc.${msalConfig.auth.clientId}.${msalService.instance.getActiveAccount()?.idTokenClaims?.oid - }.${resource}` - ) - ) - : undefined; // claims challenge e.g {"access_token":{"xms_cc":{"values":["cp1"]}}} - return { - ...originalAuthRequest, - claims: claim, - // https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/multi-tenant.md#dynamic-auth-request - authority: `https://login.microsoftonline.com/${originalAuthRequest.account?.tenantId ?? 'organizations'}`, - }; - }, - }; -} - -/** - * Set your default interaction type for MSALGuard here. If you have any - * additional scopes you want the user to consent upon login, add them here as well. - */ -export function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - authRequest: loginRequest - }; -} - -@NgModule({ - declarations: [ - AppComponent, - HomeComponent, - TodoViewComponent, - TodoEditComponent, - OnboardComponent - ], - imports: [ - BrowserModule, - BrowserAnimationsModule, - AppRoutingModule, - MatButtonModule, - MatToolbarModule, - MatListModule, - MatTableModule, - MatCardModule, - MatInputModule, - MatFormFieldModule, - MatCheckboxModule, - MatIconModule, - MatSelectModule, - HttpClientModule, - FormsModule, - MsalModule - ], - providers: [ - { - provide: HTTP_INTERCEPTORS, - useClass: MsalInterceptor, - multi: true - }, - { - provide: MSAL_INSTANCE, - useFactory: MSALInstanceFactory - }, - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - }, - { - provide: MSAL_INTERCEPTOR_CONFIG, - useFactory: MSALInterceptorConfigFactory - }, - MsalService, - MsalGuard, - MsalBroadcastService, - TodoService, - ], - bootstrap: [AppComponent, MsalRedirectComponent] -}) -export class AppModule { } diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/auth-config.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/auth-config.ts deleted file mode 100644 index f86040fa..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/auth-config.ts +++ /dev/null @@ -1,66 +0,0 @@ -/** - * This file contains authentication parameters. Contents of this file - * is roughly the same across other MSAL.js libraries. These parameters - * are used to initialize Angular and MSAL Angular configurations in - * in app.module.ts file. - */ - -import { LogLevel, Configuration, BrowserCacheLocation, PopupRequest, RedirectRequest } from '@azure/msal-browser'; - -const isIE = window.navigator.userAgent.indexOf("MSIE ") > -1 || window.navigator.userAgent.indexOf("Trident/") > -1; - -/** - * Configuration object to be passed to MSAL instance on creation. - * For a full list of MSAL.js configuration parameters, visit: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/configuration.md - */ -export const msalConfig: Configuration = { - auth: { - clientId: 'Enter_the_Application_Id_Here', // This is the ONLY mandatory field that you need to supply. - authority: 'https://login.microsoftonline.com/organizations', // Defaults to "https://login.microsoftonline.com/common" - redirectUri: '/auth', // Points to window.location.origin by default. You must register this URI on Azure portal/App Registration. - postLogoutRedirectUri: '/', // Points to window.location.origin by default. - clientCapabilities: ['CP1'] // This lets the resource server know that this client can handle claim challenges. - }, - cache: { - cacheLocation: BrowserCacheLocation.LocalStorage, // Configures cache location. "sessionStorage" is more secure, but "localStorage" gives you SSO between tabs. - storeAuthStateInCookie: isIE, // Set this to "true" if you are having issues on IE11 or Edge. Remove this line to use Angular Universal - }, - system: { - /** - * Below you can configure MSAL.js logs. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/msal-logging-js - */ - loggerOptions: { - loggerCallback(logLevel: LogLevel, message: string) { - console.log(message); - }, - logLevel: LogLevel.Verbose, - piiLoggingEnabled: false - } - } -} - -/** - * Add here the endpoints and scopes when obtaining an access token for protected web APIs. For more information, see: - * https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/docs/resources-and-scopes.md - */ -export const protectedResources = { - todoListApi: { - endpoint: "https://localhost:44351/api/todolist", - scopes: { - read: ["api://Enter_the_Web_Api_Application_Id_Here/TodoList.Read"], - write: ["api://Enter_the_Web_Api_Application_Id_Here/TodoList.ReadWrite"] - } - } -}; - -/** - * Scopes you add here will be prompted for consent during sign-in. - * By default, MSAL.js will add OIDC scopes (openid, profile, email) to any login request. - * For more information about OIDC scopes, visit: - * https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-permissions-and-consent#openid-connect-scopes - */ -export const loginRequest: PopupRequest | RedirectRequest = { - scopes: [], -}; diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/claim-utils.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/claim-utils.ts deleted file mode 100644 index d883b953..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/claim-utils.ts +++ /dev/null @@ -1,191 +0,0 @@ -/** - * Populate claims table with appropriate description - * @param {Record} claims ID token claims - * @returns claimsTable - */ - export const createClaimsTable = (claims: Record): any[] => { - const claimsTable: any[] = []; - - Object.keys(claims).map((key) => { - if (typeof claims[key] !== 'string' && typeof claims[key] !== 'number') return; - - switch (key) { - case 'aud': - populateClaim( - key, - claims[key], - "Identifies the intended recipient of the token. In ID tokens, the audience is your app's Application ID, assigned to your app in the Azure portal.", - claimsTable - ); - break; - case 'iss': - populateClaim( - key, - claims[key], - 'Identifies the issuer, or authorization server that constructs and returns the token. It also identifies the Azure AD tenant for which the user was authenticated. If the token was issued by the v2.0 endpoint, the URI will end in /v2.0.', - claimsTable - ); - break; - case 'iat': - populateClaim( - key, - changeDateFormat(+claims[key]), - '"Issued At" indicates the timestamp (UNIX timestamp) when the authentication for this user occurred.', - claimsTable - ); - break; - case 'nbf': - populateClaim( - key, - changeDateFormat(+claims[key]), - 'The nbf (not before) claim dictates the time (as UNIX timestamp) before which the JWT must not be accepted for processing.', - claimsTable - ); - break; - case 'exp': - populateClaim( - key, - changeDateFormat(+claims[key]), - "The exp (expiration time) claim dictates the expiration time (as UNIX timestamp) on or after which the JWT must not be accepted for processing. It's important to note that in certain circumstances, a resource may reject the token before this time. For example, if a change in authentication is required or a token revocation has been detected.", - claimsTable - ); - break; - case 'name': - populateClaim( - key, - claims[key], - "The name claim provides a human-readable value that identifies the subject of the token. The value isn't guaranteed to be unique, it can be changed, and it's designed to be used only for display purposes. The 'profile' scope is required to receive this claim.", - claimsTable - ); - break; - case 'preferred_username': - populateClaim( - key, - claims[key], - 'The primary username that represents the user. It could be an email address, phone number, or a generic username without a specified format. Its value is mutable and might change over time. Since it is mutable, this value must not be used to make authorization decisions. It can be used for username hints, however, and in human-readable UI as a username. The profile scope is required in order to receive this claim.', - claimsTable - ); - break; - case 'nonce': - populateClaim( - key, - claims[key], - 'The nonce matches the parameter included in the original /authorize request to the IDP.', - claimsTable - ); - break; - case 'oid': - populateClaim( - key, - claims[key], - 'The oid (user object id) is the only claim that should be used to uniquely identify a user in an Azure AD tenant.', - claimsTable - ); - break; - case 'tid': - populateClaim( - key, - claims[key], - 'The id of the tenant where this application resides. You can use this claim to ensure that only users from the current Azure AD tenant can access this app.', - claimsTable - ); - break; - case 'upn': - populateClaim( - key, - claims[key], - 'upn (user principal name) might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place or might change to reflect a personal change like marriage.', - claimsTable - ); - break; - case 'email': - populateClaim( - key, - claims[key], - 'Email might be unique amongst the active set of users in a tenant but tend to get reassigned to new employees as employees leave the organization and others take their place.', - claimsTable - ); - break; - case 'acct': - populateClaim( - key, - claims[key], - 'Available as an optional claim, it lets you know what the type of user (homed, guest) is. For example, for an individual’s access to their data you might not care for this claim, but you would use this along with tenant id (tid) to control access to say a company-wide dashboard to just employees (homed users) and not contractors (guest users).', - claimsTable - ); - break; - case 'sid': - populateClaim( - key, - claims[key], - 'Session ID, used for per-session user sign-out.', - claimsTable - ); - break; - case 'sub': - populateClaim( - key, - claims[key], - 'The sub claim is a pairwise identifier - it is unique to a particular application ID. If a single user signs into two different apps using two different client IDs, those apps will receive two different values for the subject claim.', - claimsTable - ); - break; - case 'ver': - populateClaim( - key, - claims[key], - 'Version of the token issued by the Microsoft identity platform', - claimsTable - ); - break; - case "login_hint": - populateClaim( - key, - claims[key], - 'An opaque, reliable login hint claim. This claim is the best value to use for the login_hint OAuth parameter in all flows to get SSO.', - claimsTable - ); - break; - case "idtyp": - populateClaim( - key, - claims[key], - 'Value is app when the token is an app-only token. This is the most accurate way for an API to determine if a token is an app token or an app+user token', - claimsTable - ); - break; - case 'uti': - case 'rh': - break; - default: - populateClaim(key, claims[key], '', claimsTable); - } - }); - - return claimsTable; -}; - -/** -* Populates claim, description, and value into an claimsObject -* @param {String} claim -* @param {String} value -* @param {String} description -* @param {Array} claimsObject -*/ -const populateClaim = (claim: string, value: string | number, description: string, claimsTable: any[]): void => { - claimsTable.push({ - claim: claim, - value: value, - description: description - }); -}; - -/** -* Transforms Unix timestamp to date and returns a string value of that date -* @param {number} date Unix timestamp -* @returns -*/ -const changeDateFormat = (date: number) => { - let dateObj = new Date(date * 1000); - return `${date} - [${dateObj.toString()}]`; -}; diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.css b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.css deleted file mode 100644 index e4a58e48..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.css +++ /dev/null @@ -1,26 +0,0 @@ -#table-container { - height: 500px; - overflow: auto; -} - -table { - margin: 3% auto auto auto; - width: 70%; -} - -.mat-row { - height: auto; -} - -.mat-cell { - padding: 8px 8px 8px 0; -} - -p { - text-align: center; -} - -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.html b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.html deleted file mode 100644 index 3e752449..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.html +++ /dev/null @@ -1,39 +0,0 @@ - - Angular single-page application built with MSAL Angular - Sign-in with Azure AD and call a protected web API - This sample demonstrates how to configure MSAL Angular to sign-in, sign-out and acquire an access - token for a protected web API - -
    -

    - See below the claims in your ID token . For more information, visit: - - - docs.microsoft.com - - -

    -
    -

    4sOSKcv`+%w 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 Vx@^(c#Qg{SD9fwMmC1be|9?JU$=v_| diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_error.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_error.png deleted file mode 100644 index de67857a9459e9e62bc970c87b82c717ce18416e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35405 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�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 X$_bT>AEiOE00000NkvXXu0mjfR3Z^H diff --git a/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_error_screen.png b/6-AdvancedScenarios/2-call-api-mt/ReadmeFiles/ch2_error_screen.png deleted file mode 100644 index 4459e6abffef9b512fac5f00893446d9ece9fae3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118339 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

    ApplicationAppIdUrl in the Azure portal
    - - - - - - - - - - - - - - - - - - - - -
    Claim {{element.claim}} Value {{element.value}} Description {{element.description}}
    - \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.ts deleted file mode 100644 index 008dc9fc..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/home/home.component.ts +++ /dev/null @@ -1,52 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { Subject } from 'rxjs'; -import { filter } from 'rxjs/operators'; - -import { MsalBroadcastService, MsalService } from '@azure/msal-angular'; -import { EventMessage, EventType, AuthenticationResult, InteractionStatus } from '@azure/msal-browser'; -import { createClaimsTable } from '../claim-utils'; - -@Component({ - selector: 'app-home', - templateUrl: './home.component.html', - styleUrls: ['./home.component.css'] -}) -export class HomeComponent implements OnInit { - - loginDisplay = false; - displayedColumns: string[] = ['claim', 'value', 'description']; - dataSource: any = []; - - constructor(private authService: MsalService, private msalBroadcastService: MsalBroadcastService) { } - - ngOnInit(): void { - this.msalBroadcastService.msalSubject$ - .pipe( - filter((msg: EventMessage) => msg.eventType === EventType.LOGIN_SUCCESS), - ) - .subscribe((result: EventMessage) => { - const payload = result.payload as AuthenticationResult; - this.authService.instance.setActiveAccount(payload.account); - }); - - this.msalBroadcastService.inProgress$ - .pipe( - filter((status: InteractionStatus) => status === InteractionStatus.None) - ) - .subscribe(() => { - this.setLoginDisplay(); - this.getClaims(this.authService.instance.getActiveAccount()?.idTokenClaims); - }) - } - - setLoginDisplay() { - this.loginDisplay = this.authService.instance.getAllAccounts().length > 0; - } - - getClaims(claims: any) { - if (claims) { - const claimsTable = createClaimsTable(claims); - this.dataSource = [...claimsTable]; - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.css b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.css deleted file mode 100644 index 2be89b0b..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.css +++ /dev/null @@ -1,4 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.html b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.html deleted file mode 100644 index e1621880..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.html +++ /dev/null @@ -1,8 +0,0 @@ - - Tenant Onboarding - In order to enable users from your tenant to be able to access and use this application, you need to provision this app to your tenant by granting admin consent. - If you are not an admin, please ask your admin to grant admin consent on your tenant's behalf by sharing this URL with them: {{onboardUrl}} - - - - diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.ts deleted file mode 100644 index e9b84055..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/onboard/onboard.component.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; -import { MsalService } from '@azure/msal-angular'; - -import { msalConfig, protectedResources } from '../auth-config'; -import { addClaimsToStorage, getClaimsFromStorage, removeClaimsFromStorage, clearStorage } from '../storage-utils'; - -@Component({ - selector: 'app-onboard', - templateUrl: './onboard.component.html', - styleUrls: ['./onboard.component.css'] -}) -export class OnboardComponent implements OnInit { - - onboardUrl: string = ""; - - constructor(private authService: MsalService, private router: Router, private route: ActivatedRoute) { } - - ngOnInit(): void { - this.onboardUrl = window.location.origin + "/onboard"; - - // if redirected, process redirect response - if (this.route.snapshot.queryParamMap.has('admin_consent')) { - this.processRedirectResponse(); - } - } - - processRedirectResponse() { - const account = this.authService.instance.getActiveAccount()!; - const previousState = getClaimsFromStorage(account.homeAccountId); - - if (!this.route.snapshot.queryParamMap.has('error') && this.route.snapshot.queryParamMap.get('admin_consent') === 'True') { - if (previousState === this.route.snapshot.queryParamMap.get('state')) { - // state parameter matches - removeClaimsFromStorage(account.homeAccountId); - this.router.navigate(['/todo-view']); - } else { - clearStorage(account.homeAccountId); // clear sessionStorage of any claims entry - this.authService.logoutRedirect(); // state parameter does not match, so logout - } - } - } - - adminConsent() { - const account = this.authService.instance.getActiveAccount(); - - if (account) { - const state = window.crypto.randomUUID(); // state parameter against csrf - - addClaimsToStorage(account.homeAccountId, state); - - /** - * Construct URL for admin consent endpoint. For more information, visit: - * https://docs.microsoft.com/azure/active-directory/develop/v2-admin-consent - */ - const adminConsentUri = "https://login.microsoftonline.com/" + - `${account.tenantId}` + "/v2.0/adminconsent?client_id=" + - `${msalConfig.auth.clientId}` + "&state=" + `${state}` + "&redirect_uri=" + `http://localhost:4200/adminconsent` + - "&scope=" + `${protectedResources.todoListApi.scopes.read[0].split("/TodoList")[0]}/.default`; - - // redirect to admin consent endpoint - window.location.replace(adminConsentUri); - } - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/sample.spec.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/sample.spec.ts deleted file mode 100644 index 536fd997..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/sample.spec.ts +++ /dev/null @@ -1,114 +0,0 @@ -import { Router } from '@angular/router'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { RouterTestingModule } from '@angular/router/testing'; - -import { MSAL_GUARD_CONFIG, MsalGuardConfiguration} from '@azure/msal-angular'; -import { InteractionType } from '@azure/msal-browser'; - -import { msalConfig } from './auth-config'; -import { AppComponent } from './app.component'; -import { AppModule } from './app.module'; - -describe('Sanitize the configuration object', () => { - - it('should define the config object', () => { - expect(msalConfig).toBeDefined(); - expect(msalConfig.auth.clientId).toBeDefined(); - expect(msalConfig.auth.authority).toBeDefined(); - expect(msalConfig.auth.redirectUri).toBeDefined(); - }); - - it('should not contain credentials', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.clientId)).toBe(false); - }); - - it('should contain authority uri', () => { - const regexUri = /[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()@:%_\+.~#?&//=]*)?/gi; - expect(regexUri.test(msalConfig.auth.authority!)).toBe(true); - }); - - it('should not contain tenant id', () => { - const regexGuid = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; - expect(regexGuid.test(msalConfig.auth.authority!.split(".com/")[1])).toBe(false); - }); -}); - -describe('Ensure that the app starts', () => { - it('should boot the app', () => { - const bootApplication = () => { - const { router, run } = setup(); - - run(() => router.initialNavigation()); - }; - - expect(bootApplication).not.toThrow(); - }); - - it(`should have as title 'Microsoft identity platform'`, async () => { - const { fixture } = setup(); - const app = fixture.debugElement.componentInstance; - expect(app.title).toEqual('Microsoft identity platform'); - }); - - it('should navigate to unguarded route', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/')); - - expect(canNavigate).toBe(true); - }); - - it('should not navigate to guarded component', async () => { - const { router, run } = setup(); - - const canNavigate = await run(() => router.navigateByUrl('/todo-view')); - - expect(canNavigate).toBe(false); - }); -}); - -function setup() { - - function MSALGuardConfigFactory(): MsalGuardConfiguration { - return { - interactionType: InteractionType.Redirect, - }; - } - - TestBed.configureTestingModule({ - imports: [ - AppModule, - RouterTestingModule, - ], - providers: [ - { - provide: MSAL_GUARD_CONFIG, - useFactory: MSALGuardConfigFactory - } - ] - }).compileComponents(); - - let rootFixture: ComponentFixture; - const initializeRootFixture = () => { - if (rootFixture == null) { - rootFixture = TestBed.createComponent(AppComponent); - } - }; - - return { - get router() { - initializeRootFixture(); - - return TestBed.inject(Router); - }, - run(task: () => TResult) { - initializeRootFixture(); - - return rootFixture.ngZone == null - ? task() - : rootFixture.ngZone.run(task); - }, - fixture: TestBed.createComponent(AppComponent) - }; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/storage-utils.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/storage-utils.ts deleted file mode 100644 index 1c44da19..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/storage-utils.ts +++ /dev/null @@ -1,39 +0,0 @@ -import { msalConfig } from './auth-config'; - -/** - * This method stores the claim to the sessionStorage in the browser to be used when acquiring a token - * @param {string} homeAccountId - * @param {string} claims - */ -export const addClaimsToStorage = (homeAccountId: string, claims: string): void => { - sessionStorage.setItem(`acs.${msalConfig.auth.clientId}.${homeAccountId}`, claims) -}; - -/** - * This method fetches the claim from sessionStorage - * @param {string} homeAccountId - * @returns - */ -export const getClaimsFromStorage = (homeAccountId: string): any => { - return sessionStorage.getItem(`acs.${msalConfig.auth.clientId}.${homeAccountId}`); -}; - -/** - * This method removes the claim from sessionStorage - * @param {string} homeAccountId - */ -export const removeClaimsFromStorage = (homeAccountId: string): void => { - sessionStorage.removeItem(`acs.${msalConfig.auth.clientId}.${homeAccountId}`); -}; - -/** - * This method clears sessionStorage of any claims entry - * @param {string} homeAccountId - */ -export const clearStorage = (homeAccountId: string): void => { - for (var key in sessionStorage) { - if (key.startsWith(`acs.${msalConfig.auth.clientId}.${homeAccountId}`)) { - sessionStorage.removeItem(key); - } - } -}; \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.css b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.css deleted file mode 100644 index 9295c096..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.css +++ /dev/null @@ -1,14 +0,0 @@ -.card-section { - margin: 10%; - padding: 5%; -} - -.form-field { - min-width: 100px; - max-width: 800px; - width: 100%; -} - -.input-field { - width: 100%; -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.html b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.html deleted file mode 100644 index 7d14934f..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.html +++ /dev/null @@ -1,20 +0,0 @@ - -

    Edit a task

    -
    - - - - - - - -
    -
    \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.ts deleted file mode 100644 index fedc56e9..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-edit/todo-edit.component.ts +++ /dev/null @@ -1,49 +0,0 @@ -import { TodoService } from './../todo.service'; -import { Component, OnInit } from '@angular/core'; -import { ActivatedRoute, Router } from '@angular/router'; - -import { Todo } from '../todo'; - -@Component({ - selector: 'app-todo-edit', - templateUrl: './todo-edit.component.html', - styleUrls: ['./todo-edit.component.css'] -}) -export class TodoEditComponent implements OnInit { - - todo: Todo = { - id: 1, - description: "", - status: false, - ownerDisplayName: "" - }; - - assignees: string[] = []; - - constructor( - private route: ActivatedRoute, - private router: Router, - private todoService: TodoService - ) { } - - ngOnInit(): void { - this.getTodo(); - } - - getTodo(): void { - this.route.paramMap.subscribe((params) => { - let id = +params.get('id')!; - this.todoService.getTodo(+id).subscribe((response: Todo) => { - this.todo = response; - }) - }) - } - - editTodo(todo: Todo): void { - this.todo.description = todo.description; - this.todoService.editTodo(this.todo).subscribe(() => { - this.router.navigate(['/todo-view']); - }) - } - -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.css b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.css deleted file mode 100644 index 6e93921c..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.css +++ /dev/null @@ -1,26 +0,0 @@ -table { - min-width: 100px; - width: 100%; -} - -.form-field { - min-width: 100px; - width: 90%; -} - -.input-field { - width: 90%; -} - -.card-section { - margin-top: 5%; -} - -#submit-button { - margin-left: 1%; -} - -.material-icons:hover { - color: orange !important; - cursor: pointer -} \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.html b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.html deleted file mode 100644 index 37ab0348..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.html +++ /dev/null @@ -1,59 +0,0 @@ - -
    - - Enter a task - - - - - - -
    -
    -
    -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    Status - - Description {{todo.description}} Assigned To {{ todo.ownerDisplayName }} Edit - edit - Remove - delete -
    -
    \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.ts deleted file mode 100644 index b29c1004..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo-view/todo-view.component.ts +++ /dev/null @@ -1,68 +0,0 @@ -import { Component, OnInit } from '@angular/core'; -import { NgForm } from '@angular/forms'; - -import { TodoService } from './../todo.service'; -import { Todo } from '../todo'; -import { MsalService } from '@azure/msal-angular'; - -@Component({ - selector: 'app-todo-view', - templateUrl: './todo-view.component.html', - styleUrls: ['./todo-view.component.css'] -}) -export class TodoViewComponent implements OnInit { - - todo: Todo = { - id: 1, - description: "", - status: false, - ownerDisplayName: "" - }; - - todos: Todo[] = []; - assignees: string[] = []; - - displayedColumns = ['status', 'description', 'assignedTo', 'edit', 'remove']; - - constructor( - private authService: MsalService, - private service: TodoService - ) { } - - ngOnInit(): void { - this.getTodos(); - } - - shouldDisplayControl(todo: Todo): boolean { - if (todo.ownerDisplayName === this.authService.instance.getActiveAccount()?.username) { - return true; - } - - return false; - } - - getTodos(): void { - this.service.getTodos() - .subscribe((todos: Todo[]) => { - this.todos = todos; - }); - } - - addTodo(add: NgForm): void { - console.log(add.value) - this.service.postTodo(add.value).subscribe(() => { - this.getTodos(); - }) - add.resetForm(); - } - - checkTodo(todo: Todo): void { - this.service.editTodo(todo).subscribe(); - } - - removeTodo(id: string): void { - this.service.deleteTodo(+id).subscribe(() => { - this.getTodos(); - }) - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.service.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.service.ts deleted file mode 100644 index 90dd5a18..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.service.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { Injectable } from '@angular/core'; -import { HttpClient } from '@angular/common/http'; -import { Todo } from './todo'; - -import { protectedResources } from './auth-config'; - -@Injectable({ - providedIn: 'root' -}) -export class TodoService { - constructor(private http: HttpClient) { } - - getTodos() { - return this.http.get(protectedResources.todoListApi.endpoint); - } - - getTodo(id: number) { - return this.http.get(protectedResources.todoListApi.endpoint + '/' + id); - } - - postTodo(todo: Todo) { - return this.http.post(protectedResources.todoListApi.endpoint, todo); - } - - deleteTodo(id: number) { - return this.http.delete(protectedResources.todoListApi.endpoint + '/' + id); - } - - editTodo(todo: Todo) { - return this.http.put(protectedResources.todoListApi.endpoint + '/' + todo.id, todo); - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.ts deleted file mode 100644 index eb7b21d2..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/app/todo.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Todo { - id: number; - ownerDisplayName: string; - description: string; - status: boolean; -}; \ No newline at end of file diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/assets/.gitkeep b/6-AdvancedScenarios/2-call-api-mt/SPA/src/assets/.gitkeep deleted file mode 100644 index e69de29b..00000000 diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.prod.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.prod.ts deleted file mode 100644 index 3612073b..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.prod.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const environment = { - production: true -}; diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.ts deleted file mode 100644 index f56ff470..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/environments/environment.ts +++ /dev/null @@ -1,16 +0,0 @@ -// This file can be replaced during build by using the `fileReplacements` array. -// `ng build` replaces `environment.ts` with `environment.prod.ts`. -// The list of file replacements can be found in `angular.json`. - -export const environment = { - production: false -}; - -/* - * For easier debugging in development mode, you can import the following file - * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`. - * - * This import should be commented out in production mode because it will have a negative impact - * on performance if an error is thrown. - */ -// import 'zone.js/plugins/zone-error'; // Included with Angular CLI. diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/favicon.svg b/6-AdvancedScenarios/2-call-api-mt/SPA/src/favicon.svg deleted file mode 100644 index 12845538..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/favicon.svg +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - Icon-identity-221 - - - - - - - - diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/index.html b/6-AdvancedScenarios/2-call-api-mt/SPA/src/index.html deleted file mode 100644 index a70c05af..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - Angular 14 - Sample App - - - - - - - - - - - - diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/main.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/main.ts deleted file mode 100644 index c7b673cf..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/main.ts +++ /dev/null @@ -1,12 +0,0 @@ -import { enableProdMode } from '@angular/core'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; -import { environment } from './environments/environment'; - -if (environment.production) { - enableProdMode(); -} - -platformBrowserDynamic().bootstrapModule(AppModule) - .catch(err => console.error(err)); diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/polyfills.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/polyfills.ts deleted file mode 100644 index 429bb9ef..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/polyfills.ts +++ /dev/null @@ -1,53 +0,0 @@ -/** - * 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 recent versions of Safari, Chrome (including - * Opera), Edge on the desktop, and iOS and Chrome on mobile. - * - * Learn more in https://angular.io/guide/browser-support - */ - -/*************************************************************************************************** - * BROWSER POLYFILLS - */ - -/** - * By default, zone.js will patch all possible macroTask and DomEvents - * user can disable parts of macroTask/DomEvents patch by setting following flags - * because those flags need to be set before `zone.js` being loaded, and webpack - * will put import in the top of bundle, so user need to create a separate file - * in this directory (for example: zone-flags.ts), and put the following flags - * into that file, and then add the following code before importing zone.js. - * import './zone-flags'; - * - * The flags allowed in zone-flags.ts are listed here. - * - * The following flags will work for all browsers. - * - * (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame - * (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick - * (window as any).__zone_symbol__UNPATCHED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames - * - * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js - * with the following flag, it will bypass `zone.js` patch for IE/Edge - * - * (window as any).__Zone_enable_cross_context_check = true; - * - */ - -/*************************************************************************************************** - * Zone JS is required by default for Angular itself. - */ -import 'zone.js'; // Included with Angular CLI. - - -/*************************************************************************************************** - * APPLICATION IMPORTS - */ diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/styles.css b/6-AdvancedScenarios/2-call-api-mt/SPA/src/styles.css deleted file mode 100644 index 7e7239a2..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/styles.css +++ /dev/null @@ -1,4 +0,0 @@ -/* You can add global styles to this file, and also import other style files */ - -html, body { height: 100%; } -body { margin: 0; font-family: Roboto, "Helvetica Neue", sans-serif; } diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/src/test.ts b/6-AdvancedScenarios/2-call-api-mt/SPA/src/test.ts deleted file mode 100644 index c04c8760..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/src/test.ts +++ /dev/null @@ -1,26 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting -} from '@angular/platform-browser-dynamic/testing'; - -declare const require: { - context(path: string, deep?: boolean, filter?: RegExp): { - (id: string): T; - keys(): string[]; - }; -}; - -// 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().forEach(context); diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.app.json b/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.app.json deleted file mode 100644 index 82d91dc4..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.app.json +++ /dev/null @@ -1,15 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/app", - "types": [] - }, - "files": [ - "src/main.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.d.ts" - ] -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.json b/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.json deleted file mode 100644 index ff06eae1..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.json +++ /dev/null @@ -1,32 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "compileOnSave": false, - "compilerOptions": { - "baseUrl": "./", - "outDir": "./dist/out-tsc", - "forceConsistentCasingInFileNames": true, - "strict": true, - "noImplicitOverride": true, - "noPropertyAccessFromIndexSignature": true, - "noImplicitReturns": true, - "noFallthroughCasesInSwitch": true, - "sourceMap": true, - "declaration": false, - "downlevelIteration": true, - "experimentalDecorators": true, - "moduleResolution": "node", - "importHelpers": true, - "target": "es2020", - "module": "es2020", - "lib": [ - "es2020", - "dom" - ] - }, - "angularCompilerOptions": { - "enableI18nLegacyMessageIdFormat": false, - "strictInjectionParameters": true, - "strictInputAccessModifiers": true, - "strictTemplates": true - } -} diff --git a/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.spec.json b/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.spec.json deleted file mode 100644 index 092345b0..00000000 --- a/6-AdvancedScenarios/2-call-api-mt/SPA/tsconfig.spec.json +++ /dev/null @@ -1,18 +0,0 @@ -/* To learn more about this file see: https://angular.io/config/tsconfig. */ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./out-tsc/spec", - "types": [ - "jasmine" - ] - }, - "files": [ - "src/test.ts", - "src/polyfills.ts" - ], - "include": [ - "src/**/*.spec.ts", - "src/**/*.d.ts" - ] -} diff --git a/README.md b/README.md index b8406b2b..53ed5b28 100644 --- a/README.md +++ b/README.md @@ -1,145 +1,9 @@ ---- -page_type: sample -languages: -- javascript -- typescript -- csharp -products: -- dotnet -- msal-js -- ms-graph -- azure-storage -- azure-app-service -- azure-key-vault -- azure-active-directory -- azure-active-directory-b2c -- microsoft-identity-web -- microsoft-authentication-library -- entra -description: "Tutorial: Enable your Angular single-page application to sign-in users and call APIs with the Microsoft identity platform" -urlFragment: "ms-identity-javascript-angular-tutorial" ---- +# ms-identity-javascript-angular-tutorial -# Tutorial: Enable your Angular single-page application to sign-in users and call APIs with the Microsoft identity platform +This sample has been archived and is no longer being maintained. You can find a more recent version of this sample [here](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/samples/msal-angular-v3-samples) -[![Node Build](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/actions/workflows/node.js.yml/badge.svg)](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/actions/workflows/node.js.yml) -[![.NET Build](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/actions/workflows/dotnet.yml/badge.svg)](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/actions/workflows/dotnet.yml) -[![Code Scan](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/actions/workflows/codeql.yml/badge.svg)](https://github.com/Azure-Samples/ms-identity-javascript-angular-tutorial/actions/workflows/codeql.yml) -![GitHub issues](https://img.shields.io/github/issues/Azure-Samples/ms-identity-javascript-angular-tutorial) -![npm](https://img.shields.io/npm/v/@azure/msal-browser?label=msal-browser) -![npm](https://img.shields.io/npm/v/@azure/msal-angular?label=msal-angular) -![GitHub](https://img.shields.io/github/license/Azure-Samples/ms-identity-javascript-angular-tutorial) +For access to the project files, please visit the branch `archive`. -The [Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/v2-overview), along with [Azure Active Directory](https://docs.microsoft.com/azure/active-directory/fundamentals/active-directory-whatis) (Azure AD) and [Azure Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/overview) (Azure AD B2C) are central to the **Azure** cloud ecosystem. This tutorial aims to take you through the fundamentals of modern authentication with Angular, using the [Microsoft Authentication Library for Angular](https://github.com/AzureAD/microsoft-authentication-library-for-js/tree/dev/lib/msal-angular) (MSAL Angular). +## Disclaimer -We recommend following the chapters in successive order. However, the code samples are self-contained, so feel free to pick samples by topics that you may need at the moment. - -## Prerequisites - -- [Node.js v14 LTS or later](https://nodejs.org/en/download/) -- [Dotnet Core SDK v6 or later](https://dotnet.microsoft.com/download) -- [Visual Studio Code](https://code.visualstudio.com/download) -- [VS Code Azure Tools Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode.vscode-node-azure-pack) -- A modern web browser - -Please refer to each sample's README for sample-specific prerequisites. - -## Recommendations - -- [jwt.ms](https://jwt.ms) for inspecting your tokens -- [Fiddler](https://www.telerik.com/fiddler) for monitoring your network activity and troubleshooting -- Check [MSAL.js FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-browser/FAQ.md) and [MSAL Angular FAQ](https://github.com/AzureAD/microsoft-authentication-library-for-js/blob/dev/lib/msal-angular/docs/FAQ.md) for your questions -- Follow the [Azure AD Blog](https://techcommunity.microsoft.com/t5/azure-active-directory-identity/bg-p/Identity) to stay up-to-date with the latest developments - -Please refer to each sample's README for sample-specific recommendations. - -## Contents - -- For **Azure AD**, start the tutorial from [here](./1-Authentication/1-sign-in/README-incremental.md) -- For **Azure AD B2C**, start the tutorial from [here](./1-Authentication/2-sign-in-b2c/README-incremental.md) - -Alternatively, choose below the sample you want to review. - -### Chapter 1: Sign-in a user to your application - -| | | -|---------------|---------------| -| | [**Sign-in with Azure AD**](./1-Authentication/1-sign-in/README.md)
    Sign-in your users with the **Azure AD** and learn to work with **ID Tokens**. Learn how **single sign-on (SSO)** works. Learn to secure your apps to operate in **national clouds**. | -| | [**Sign-in with Azure AD B2C**](./1-Authentication/2-sign-in-b2c/README.md)
    Sign-in your customers with **Azure AD B2C**. Learn to integrate with **external social identity providers**. Learn how to use **user-flows** and **custom policies**. | - -### Chapter 2: Sign-in a user and get an Access Token for Microsoft Graph - -| | | -|----------------|---------------| -| | [**Get an Access Token from Azure AD and call Microsoft Graph**](./2-Authorization-I/1-call-graph/README.md)
    Authenticate your users and acquire an **Access Token** for Microsoft Graph and then call the **Microsoft Graph API**. Learn how to handle continuous access evaluation (CAE) events. | - -### Chapter 3: Protect an API and call the API from your client app - -| | | -|-----------------|---------------| -| | [**Protect and call a web API on Azure AD**](./3-Authorization-II/1-call-api/README.md)
    Protect your web API with the **Azure AD**. Use a client application to sign-in a user, acquire an **Access Token** for your web API and call your protected Web API. | -| | [**Protect and call a web API on Azure AD B2C**](./3-Authorization-II/2-call-api-b2c/README.md)
    Protect your web API with **Azure AD B2C**. Use a client application to sign-in a user, acquire an **Access Token** for your web API and call your protected web API. | - -### Chapter 4: Deploy your applications to Azure - -| | | -|-----------------|---------------| -| | [**Deploy to Azure Storage and App Service**](./4-Deployment/README.md)
    Prepare your app for deployment to various **Azure** services. Learn how to package and upload files, configure authentication parameters and use **Azure** services for managing your operations. | - -### Chapter 5: Control access to your protected API using App Roles and Security Groups - -| | | -|-----------------|---------------| -| | [**Call a web API using App Roles**](./5-AccessControl/1-call-api-roles/README.md)
    Define App Roles and use roles claim in an ID Token to implement Role-based Access Control (RBAC) for your protected web API. | -| | [**Call a web API using Security Groups**](/5-AccessControl/2-call-api-groups/README.md)
    Create Security Groups and use groups claim in an ID Token to implement Role-based Access Control (RBAC) for your protected web API. Handle overage scenarios. | - -### Chapter 6: Dive into advanced scenarios - -| | | -|-----------------|---------------| -| | [**Call Microsoft Graph using on-behalf-of flow**](./6-AdvancedScenarios/1-call-api-obo/README.md)
    Use OAuth 2.0 on-behalf-of flow to call Microsoft Graph from your client app via a .NET Core web API. Understand combined consent and **.default** scope. Learn how to handle continuous access evaluation (CAE) events in downstream APIs | -| | [**Call a multi-tenant web API from any tenant**](./6-AdvancedScenarios/2-call-api-mt/README.md)
    Develop and provision a multi-tenant SaaS application. Handle provisioning your app to other tenants and control who can access your resources. | - -## We'd love your feedback! - -Were we successful in addressing your learning objective? Consider taking a moment to [share your experience with us](https://forms.office.com/Pages/ResponsePage.aspx?id=v4j5cvGGr0GRqy180BHbR73pcsbpbxNJuZCMKN0lURpUOU5PNlM4MzRRV0lETkk2ODBPT0NBTEY5MCQlQCN0PWcu). - -## More information - -Learn more about the **Microsoft identity platform**: - -- [Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/) -- [Azure Active Directory B2C](https://docs.microsoft.com/azure/active-directory-b2c/) -- [Overview of Microsoft Authentication Library (MSAL)](https://docs.microsoft.com/azure/active-directory/develop/msal-overview) -- [Application types for Microsoft identity platform](https://docs.microsoft.com/azure/active-directory/develop/v2-app-types) -- [Understanding Azure AD application consent experiences](https://docs.microsoft.com/azure/active-directory/develop/application-consent-experience) -- [Understand user and admin consent](https://docs.microsoft.com/azure/active-directory/develop/howto-convert-app-to-be-multi-tenant#understand-user-and-admin-consent) -- [Application and service principal objects in Azure Active Directory](https://docs.microsoft.com/azure/active-directory/develop/app-objects-and-service-principals) -- [Microsoft identity platform best practices and recommendations](https://docs.microsoft.com/azure/active-directory/develop/identity-platform-integration-checklist) - -See more code samples: - -- [MSAL code samples](https://docs.microsoft.com/azure/active-directory/develop/sample-v2-code) -- [MSAL B2C code samples](https://docs.microsoft.com/azure/active-directory-b2c/code-samples) - -## Community Help and Support - -Use [Stack Overflow](http://stackoverflow.com/questions/tagged/msal) to get support from the community. -Ask your questions on Stack Overflow first and browse existing issues to see if someone has asked your question before. -Make sure that your questions or comments are tagged with [`ms-identity` `azure-ad` `azure-ad-b2c` `msal` `javascript`]. - -If you find a bug in the sample, please raise the issue on [GitHub Issues](../../issues). - -To provide a recommendation, visit the following [User Voice page](https://feedback.azure.com/forums/169401-azure-active-directory). - -## Contributing - -This project welcomes contributions and suggestions. Most contributions require you to agree to a -Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us -the rights to use your contribution. For details, visit https://cla.opensource.microsoft.com. - -## Code of Conduct - -This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). -For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or -contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments. +The sample in this repository is no longer maintained and is kept for historical reasons. The sample in the main branch is not guaranteed to work with the latest versions of the libraries it depends on. \ No newline at end of file